Skip to content

Commit f1ea177

Browse files
committed
fix(query): fix create table like view
1 parent 0031c64 commit f1ea177

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/query/sql/src/planner/binder/ddl/table.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ use common_storage::DataOperator;
5959
use common_storage::UriLocation;
6060
use common_storages_table_meta::table::is_reserved_opt_key;
6161
use common_storages_table_meta::table::OPT_KEY_DATABASE_ID;
62+
use common_storages_view::view_table::QUERY;
63+
use common_storages_view::view_table::VIEW_ENGINE;
6264
use tracing::debug;
6365

6466
use crate::binder::scalar::ScalarBinder;
@@ -91,6 +93,7 @@ use crate::plans::TruncateTablePlan;
9193
use crate::plans::UndropTablePlan;
9294
use crate::BindContext;
9395
use crate::ColumnBinding;
96+
use crate::Planner;
9497
use crate::ScalarExpr;
9598
use crate::SelectBuilder;
9699

@@ -894,7 +897,15 @@ impl<'a> Binder {
894897
);
895898
let table_name = normalize_identifier(table, &self.name_resolution_ctx).name;
896899
let table = self.ctx.get_table(&catalog, &database, &table_name).await?;
897-
Ok((table.schema(), vec![], table.field_comments().clone()))
900+
901+
if table.engine() == VIEW_ENGINE {
902+
let query = table.get_table_info().options().get(QUERY).unwrap();
903+
let mut planner = Planner::new(self.ctx.clone());
904+
let (plan, _, _) = planner.plan_sql(query).await?;
905+
Ok((plan.schema(), vec![], vec![]))
906+
} else {
907+
Ok((table.schema(), vec![], table.field_comments().clone()))
908+
}
898909
}
899910
}
900911
}

tests/logictest/suites/base/05_ddl/05_0019_ddl_create_view

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,15 @@ drop view default.v0;
6969

7070
statement ok
7171
drop database test_view;
72+
73+
74+
statement ok
75+
create table default.c like information_schema.keywords;
76+
77+
statement ok
78+
select * from c;
79+
80+
statement ok
81+
drop table c;
82+
83+

0 commit comments

Comments
 (0)