Skip to content

Commit 34ce8e3

Browse files
feat: Enhance show views (#15109)
* show full views add column view_query * remove unused import * fix test case * fix review & test case * fix test case
1 parent 9d996c5 commit 34ce8e3

File tree

5 files changed

+39
-15
lines changed

5 files changed

+39
-15
lines changed

src/query/service/tests/it/servers/http/http_query_handlers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ async fn test_simple_sql() -> Result<()> {
278278
assert_eq!(result.state, ExecuteStateKind::Succeeded, "{:?}", result);
279279
assert_eq!(result.next_uri, Some(final_uri.clone()), "{:?}", result);
280280
assert_eq!(result.data.len(), 10, "{:?}", result);
281-
assert_eq!(result.schema.len(), 19, "{:?}", result);
281+
assert_eq!(result.schema.len(), 20, "{:?}", result);
282282

283283
// get state
284284
let uri = make_state_uri(query_id);

src/query/service/tests/it/storages/testdata/columns_table.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,8 @@ DB.Table: 'system'.'columns', Table: columns-table_id:1, ver:0, Engine: SystemCo
430430
| 'version' | 'system' | 'clusters' | 'String' | 'VARCHAR' | '' | '' | 'NO' | '' |
431431
| 'version' | 'system' | 'credits' | 'String' | 'VARCHAR' | '' | '' | 'NO' | '' |
432432
| 'view_definition' | 'information_schema' | 'views' | 'NULL' | 'NULL' | '' | '' | 'NO' | '' |
433+
| 'view_query' | 'system' | 'tables' | 'String' | 'VARCHAR' | '' | '' | 'NO' | '' |
434+
| 'view_query' | 'system' | 'tables_with_history' | 'String' | 'VARCHAR' | '' | '' | 'NO' | '' |
433435
| 'virtual_columns' | 'system' | 'virtual_columns' | 'String' | 'VARCHAR' | '' | '' | 'NO' | '' |
434436
| 'wait_time' | 'system' | 'queries_queue' | 'UInt64' | 'BIGINT UNSIGNED' | '' | '' | 'NO' | '' |
435437
| 'warehouse' | 'system' | 'task_history' | 'Nullable(String)' | 'VARCHAR' | '' | '' | 'YES' | '' |

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ impl Binder {
188188
};
189189
}
190190

191+
select_builder.with_column("view_query");
192+
191193
select_builder
192194
.with_order_by("catalog")
193195
.with_order_by("database")

src/query/storages/system/src/tables_table.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ use databend_common_meta_app::principal::OwnershipObject;
3636
use databend_common_meta_app::schema::TableIdent;
3737
use databend_common_meta_app::schema::TableInfo;
3838
use databend_common_meta_app::schema::TableMeta;
39+
use databend_common_storages_view::view_table::QUERY;
3940
use databend_common_users::GrantObjectVisibilityChecker;
4041
use databend_common_users::UserApiProvider;
4142
use log::warn;
@@ -164,6 +165,7 @@ where TablesTable<T>: HistoryAware
164165
TableDataType::Nullable(Box::new(TableDataType::String)),
165166
),
166167
TableField::new("comment", TableDataType::String),
168+
TableField::new("view_query", TableDataType::String),
167169
])
168170
}
169171

@@ -387,6 +389,23 @@ where TablesTable<T>: HistoryAware
387389
.map(|v| v.get_table_info().meta.comment.clone())
388390
.collect();
389391

392+
let view_query: Vec<String> = database_tables
393+
.iter()
394+
.map(|v| -> String {
395+
let tbl_info = v.get_table_info();
396+
match tbl_info.engine() {
397+
"VIEW" => {
398+
let query = tbl_info.options().get(QUERY);
399+
match query {
400+
Some(query) => query.clone(),
401+
None => String::from(""),
402+
}
403+
}
404+
_ => String::from(""),
405+
}
406+
})
407+
.collect();
408+
390409
DataBlock::new_from_columns(vec![
391410
StringType::from_data(catalogs),
392411
StringType::from_data(databases),
@@ -407,6 +426,7 @@ where TablesTable<T>: HistoryAware
407426
UInt64Type::from_opt_data(number_of_blocks),
408427
StringType::from_opt_data(owner),
409428
StringType::from_data(comment),
429+
StringType::from_data(view_query),
410430
])
411431
}
412432

tests/sqllogictests/suites/base/06_show/06_0023_show_views.test

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,46 +29,46 @@ use showview
2929
query T
3030
SHOW VIEWS
3131
----
32-
v1
33-
v2
34-
v3
32+
v1 SELECT * FROM showview.t1
33+
v2 SELECT * FROM showview.t2
34+
v3 SELECT * FROM showview.t3
3535

3636
query T
3737
SHOW VIEWS LIKE 'v%'
3838
----
39-
v1
40-
v2
41-
v3
39+
v1 SELECT * FROM showview.t1
40+
v2 SELECT * FROM showview.t2
41+
v3 SELECT * FROM showview.t3
4242

4343
query T
4444
SHOW VIEWS LIKE 'v2'
4545
----
46-
v2
46+
v2 SELECT * FROM showview.t2
4747

4848
statement ok
4949
SHOW VIEWS LIKE 'v'
5050

5151
query T
5252
SHOW VIEWS WHERE name LIKE 'v%'
5353
----
54-
v1
55-
v2
56-
v3
54+
v1 SELECT * FROM showview.t1
55+
v2 SELECT * FROM showview.t2
56+
v3 SELECT * FROM showview.t3
5757

5858
statement ok
5959
SHOW VIEWS WHERE name = 'v%' AND 1 = 0
6060

6161
query T
6262
SHOW VIEWS WHERE name = 'v2' OR 1 = 1
6363
----
64-
v1
65-
v2
66-
v3
64+
v1 SELECT * FROM showview.t1
65+
v2 SELECT * FROM showview.t2
66+
v3 SELECT * FROM showview.t3
6767

6868
query T
6969
SHOW VIEWS WHERE name = 'v2' AND 1 = 1
7070
----
71-
v2
71+
v2 SELECT * FROM showview.t2
7272

7373
statement ok
7474
USE default

0 commit comments

Comments
 (0)