Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 8 additions & 32 deletions src/query/sql/src/planner/binder/ddl/view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ use crate::SelectBuilder;
use crate::ViewRewriter;
use crate::binder::Binder;
use crate::planner::semantic::normalize_identifier;
use crate::plans::AlterViewPlan;
use crate::plans::CreateViewPlan;
use crate::plans::DescribeViewPlan;
use crate::plans::DropViewPlan;
Expand Down Expand Up @@ -84,37 +83,14 @@ impl Binder {
&mut self,
stmt: &AlterViewStmt,
) -> Result<Plan> {
let AlterViewStmt {
catalog,
database,
view,
columns,
query,
} = stmt;

let mut query = *query.clone();
let tenant = self.ctx.get_tenant();
let (catalog, database, view_name) =
self.normalize_object_identifier_triple(catalog, database, view);
let column_names = columns
.iter()
.map(|ident| normalize_identifier(ident, &self.name_resolution_ctx).name)
.collect::<Vec<_>>();
let mut visitor = ViewRewriter {
current_database: database.clone(),
};
query.walk_mut(&mut visitor)?;
let subquery = format!("{}", query);

let plan = AlterViewPlan {
tenant,
catalog,
database,
view_name,
column_names,
subquery,
};
Ok(Plan::AlterView(plan.into()))
let _ = stmt;
// View dependencies are tracked from the stored query. Changing the
// definition or output columns in place would require rewriting lineage
// metadata and makes rename/restore semantics harder to reason about.
// TODO: support ALTER VIEW <name> RENAME TO <new_name>.
Err(databend_common_exception::ErrorCode::Unimplemented(
"ALTER VIEW does not support changing the view query",
))
}

#[async_backtrace::framed]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,16 +195,9 @@ select * from rv_v3;
----
1

# Test: circular dependency via ALTER VIEW should also fail
# Reuse rv_v1 -> rv_v2 -> rv_v3 chain

# Direct self-reference via ALTER VIEW
statement error 1029
alter view rv_v1 as select * from rv_v1;

# Circular: rv_v1 -> rv_v3 -> rv_v2 -> rv_v1
statement error 1029
alter view rv_v1 as select * from rv_v3;
# ALTER VIEW query changes are rejected.
statement error
alter view rv_v3 as select * from rv_v1;

# Verify views still work after failed ALTER attempts
query I
Expand Down
75 changes: 0 additions & 75 deletions tests/sqllogictests/suites/base/05_ddl/05_0021_ddl_alter_view.test

This file was deleted.

Loading