Skip to content

Commit 671d60f

Browse files
authored
feat(query): system table add some info && fix TRANSIENT table show err (#10853)
* feat(query): system.tables display database_id and table_id * fix test unit
1 parent a74c994 commit 671d60f

File tree

7 files changed

+44
-8
lines changed

7 files changed

+44
-8
lines changed

src/query/service/src/interpreters/interpreter_table_show_create.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ impl Interpreter for ShowCreateTableInterpreter {
9797
let n_fields = schema.fields().len();
9898

9999
let mut table_create_sql = format!("CREATE TABLE `{}` (\n", name);
100+
if table.options().contains_key("TRANSIENT") {
101+
table_create_sql = format!("CREATE TRANSIENT TABLE `{}` (\n", name)
102+
}
100103

101104
// Append columns.
102105
{

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
@@ -126,7 +126,7 @@ async fn test_simple_sql() -> Result<()> {
126126
assert_eq!(result.state, ExecuteStateKind::Succeeded, "{:?}", result);
127127
assert_eq!(result.next_uri, Some(final_uri.clone()), "{:?}", result);
128128
assert_eq!(result.data.len(), 10, "{:?}", result);
129-
assert_eq!(result.schema.len(), 12, "{:?}", result);
129+
assert_eq!(result.schema.len(), 14, "{:?}", result);
130130

131131
// get state
132132
let uri = make_state_uri(query_id);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ DB.Table: 'system'.'columns', Table: columns-table_id:1, ver:0, Engine: SystemCo
4141
| "database" | "system" | "processes" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
4242
| "database" | "system" | "tables" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
4343
| "database" | "system" | "tables_with_history" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
44+
| "database_id" | "system" | "databases" | "UInt64" | "BIGINT UNSIGNED" | "" | "" | "NO" | "" |
4445
| "databases" | "system" | "query_log" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
4546
| "default" | "system" | "settings" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
4647
| "default_expression" | "system" | "columns" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
@@ -79,6 +80,8 @@ DB.Table: 'system'.'columns', Table: columns-table_id:1, ver:0, Engine: SystemCo
7980
| "is_aggregate" | "system" | "functions" | "Boolean" | "BOOLEAN" | "" | "" | "NO" | "" |
8081
| "is_builtin" | "system" | "functions" | "Boolean" | "BOOLEAN" | "" | "" | "NO" | "" |
8182
| "is_nullable" | "system" | "columns" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
83+
| "is_transient" | "system" | "tables" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
84+
| "is_transient" | "system" | "tables_with_history" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
8285
| "kind" | "system" | "metrics" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
8386
| "labels" | "system" | "metrics" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
8487
| "level" | "system" | "settings" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
@@ -145,6 +148,8 @@ DB.Table: 'system'.'columns', Table: columns-table_id:1, ver:0, Engine: SystemCo
145148
| "syntax" | "system" | "functions" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
146149
| "table" | "system" | "clustering_history" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
147150
| "table" | "system" | "columns" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
151+
| "table_id" | "system" | "tables" | "UInt64" | "BIGINT UNSIGNED" | "" | "" | "NO" | "" |
152+
| "table_id" | "system" | "tables_with_history" | "UInt64" | "BIGINT UNSIGNED" | "" | "" | "NO" | "" |
148153
| "tables" | "system" | "query_log" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
149154
| "target_features" | "system" | "build_options" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
150155
| "tenant_id" | "system" | "query_log" | "String" | "VARCHAR" | "" | "" | "NO" | "" |
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---------- TABLE INFO ------------
22
DB.Table: 'system'.'databases', Table: databases-table_id:1, ver:0, Engine: SystemDatabases
33
-------- TABLE CONTENTS ----------
4-
+-----------+----------------------+
5-
| Column 0 | Column 1 |
6-
+-----------+----------------------+
7-
| "default" | "default" |
8-
| "default" | "information_schema" |
9-
| "default" | "system" |
10-
+-----------+----------------------+
4+
+-----------+----------------------+---------------------+
5+
| Column 0 | Column 1 | Column 2 |
6+
+-----------+----------------------+---------------------+
7+
| "default" | "default" | 1 |
8+
| "default" | "information_schema" | 4611686018427387906 |
9+
| "default" | "system" | 4611686018427387905 |
10+
+-----------+----------------------+---------------------+
1111

1212

src/query/storages/system/src/databases_table.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ use common_catalog::catalog::CatalogManager;
1919
use common_catalog::table::Table;
2020
use common_catalog::table_context::TableContext;
2121
use common_exception::Result;
22+
use common_expression::types::NumberDataType;
2223
use common_expression::types::StringType;
24+
use common_expression::types::UInt64Type;
2325
use common_expression::utils::FromData;
2426
use common_expression::DataBlock;
2527
use common_expression::TableDataType;
@@ -55,19 +57,23 @@ impl AsyncSystemTable for DatabasesTable {
5557

5658
let mut catalog_names = vec![];
5759
let mut db_names = vec![];
60+
let mut db_id = vec![];
5861
for (ctl_name, catalog) in catalogs.into_iter() {
5962
let databases = catalog.list_databases(tenant.as_str()).await?;
6063

6164
for db in databases {
6265
catalog_names.push(ctl_name.clone().into_bytes());
6366
let db_name = db.name().to_string().into_bytes();
6467
db_names.push(db_name);
68+
let id = db.get_db_info().ident.db_id;
69+
db_id.push(id);
6570
}
6671
}
6772

6873
Ok(DataBlock::new_from_columns(vec![
6974
StringType::from_data(catalog_names),
7075
StringType::from_data(db_names),
76+
UInt64Type::from_data(db_id),
7177
]))
7278
}
7379
}
@@ -77,6 +83,7 @@ impl DatabasesTable {
7783
let schema = TableSchemaRefExt::create(vec![
7884
TableField::new("catalog", TableDataType::String),
7985
TableField::new("name", TableDataType::String),
86+
TableField::new("database_id", TableDataType::Number(NumberDataType::UInt64)),
8087
]);
8188

8289
let table_info = TableInfo {

src/query/storages/system/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#![allow(clippy::uninlined_format_args)]
1616
#![feature(type_alias_impl_trait)]
1717

18+
extern crate core;
19+
1820
mod build_options_table;
1921
mod catalogs_table;
2022
mod clustering_history_table;

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ where TablesTable<T>: HistoryAware
9999

100100
let mut catalogs = vec![];
101101
let mut databases = vec![];
102+
102103
let mut database_tables = vec![];
103104
for (ctl_name, ctl) in ctls.into_iter() {
104105
let dbs = ctl.list_databases(tenant.as_str()).await?;
@@ -140,6 +141,10 @@ where TablesTable<T>: HistoryAware
140141
.iter()
141142
.map(|v| v.name().as_bytes().to_vec())
142143
.collect();
144+
let table_id: Vec<u64> = database_tables
145+
.iter()
146+
.map(|v| v.get_table_info().ident.table_id)
147+
.collect();
143148
let engines: Vec<Vec<u8>> = database_tables
144149
.iter()
145150
.map(|v| v.engine().as_bytes().to_vec())
@@ -180,14 +185,26 @@ where TablesTable<T>: HistoryAware
180185
})
181186
.collect();
182187
let cluster_bys: Vec<Vec<u8>> = cluster_bys.iter().map(|s| s.as_bytes().to_vec()).collect();
188+
let is_transient: Vec<Vec<u8>> = database_tables
189+
.iter()
190+
.map(|v| {
191+
if v.options().contains_key("TRANSIENT") {
192+
"TRANSIENT".as_bytes().to_vec()
193+
} else {
194+
vec![]
195+
}
196+
})
197+
.collect();
183198

184199
Ok(DataBlock::new_from_columns(vec![
185200
StringType::from_data(catalogs),
186201
StringType::from_data(databases),
187202
StringType::from_data(names),
203+
UInt64Type::from_data(table_id),
188204
StringType::from_data(engines),
189205
StringType::from_data(engines_full),
190206
StringType::from_data(cluster_bys),
207+
StringType::from_data(is_transient),
191208
StringType::from_data(created_owns),
192209
StringType::from_data(dropped_owns),
193210
UInt64Type::from_opt_data(num_rows),
@@ -206,9 +223,11 @@ where TablesTable<T>: HistoryAware
206223
TableField::new("catalog", TableDataType::String),
207224
TableField::new("database", TableDataType::String),
208225
TableField::new("name", TableDataType::String),
226+
TableField::new("table_id", TableDataType::Number(NumberDataType::UInt64)),
209227
TableField::new("engine", TableDataType::String),
210228
TableField::new("engine_full", TableDataType::String),
211229
TableField::new("cluster_by", TableDataType::String),
230+
TableField::new("is_transient", TableDataType::String),
212231
TableField::new("created_on", TableDataType::String),
213232
TableField::new("dropped_on", TableDataType::String),
214233
TableField::new(

0 commit comments

Comments
 (0)