mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-06-01 12:50:40 +00:00
feat: add table id and engine to information_schema.TABLES (#1407)
* feat: add table id and engine to informatin_schema.TABLES * Update src/catalog/src/information_schema/tables.rs Co-authored-by: Yingwen <realevenyag@gmail.com> * chore: change table_engine to engine * test: update sqlness for information schema * test: update information_schema test in frontend::tests::instance_test.rs * fix: github action sqlness information_schema test fail * test: ignore table_id in information_schema * test: support distribute and standalone have different output --------- Co-authored-by: Yingwen <realevenyag@gmail.com>
This commit is contained in:
@@ -904,6 +904,7 @@ async fn test_execute_copy_from_s3(instance: Arc<dyn MockInstance>) {
|
||||
|
||||
#[apply(both_instances_cases)]
|
||||
async fn test_information_schema(instance: Arc<dyn MockInstance>) {
|
||||
let is_distributed_mode = instance.is_distributed_mode();
|
||||
let instance = instance.frontend();
|
||||
|
||||
let sql = "create table another_table(i bigint time index)";
|
||||
@@ -913,27 +914,55 @@ async fn test_information_schema(instance: Arc<dyn MockInstance>) {
|
||||
|
||||
// User can only see information schema under current catalog.
|
||||
// A necessary requirement to GreptimeCloud.
|
||||
let sql = "select table_catalog, table_schema, table_name, table_type from information_schema.tables where table_type != 'SYSTEM VIEW' order by table_name";
|
||||
let sql = "select table_catalog, table_schema, table_name, table_type, table_id, engine from information_schema.tables where table_type != 'SYSTEM VIEW' order by table_name";
|
||||
|
||||
let output = execute_sql(&instance, sql).await;
|
||||
let expected = "\
|
||||
+---------------+--------------------+------------+------------+
|
||||
| table_catalog | table_schema | table_name | table_type |
|
||||
+---------------+--------------------+------------+------------+
|
||||
| greptime | public | numbers | BASE TABLE |
|
||||
| greptime | public | scripts | BASE TABLE |
|
||||
| greptime | information_schema | tables | VIEW |
|
||||
+---------------+--------------------+------------+------------+";
|
||||
let expected = match is_distributed_mode {
|
||||
true => {
|
||||
"\
|
||||
+---------------+--------------------+------------+------------+----------+-------------+
|
||||
| table_catalog | table_schema | table_name | table_type | table_id | engine |
|
||||
+---------------+--------------------+------------+------------+----------+-------------+
|
||||
| greptime | public | numbers | BASE TABLE | 1 | test_engine |
|
||||
| greptime | public | scripts | BASE TABLE | 1024 | mito |
|
||||
| greptime | information_schema | tables | VIEW | | |
|
||||
+---------------+--------------------+------------+------------+----------+-------------+"
|
||||
}
|
||||
false => {
|
||||
"\
|
||||
+---------------+--------------------+------------+------------+----------+-------------+
|
||||
| table_catalog | table_schema | table_name | table_type | table_id | engine |
|
||||
+---------------+--------------------+------------+------------+----------+-------------+
|
||||
| greptime | public | numbers | BASE TABLE | 1 | test_engine |
|
||||
| greptime | public | scripts | BASE TABLE | 1 | mito |
|
||||
| greptime | information_schema | tables | VIEW | | |
|
||||
+---------------+--------------------+------------+------------+----------+-------------+"
|
||||
}
|
||||
};
|
||||
|
||||
check_output_stream(output, expected).await;
|
||||
|
||||
let output = execute_sql_with(&instance, sql, query_ctx).await;
|
||||
let expected = "\
|
||||
+-----------------+--------------------+---------------+------------+
|
||||
| table_catalog | table_schema | table_name | table_type |
|
||||
+-----------------+--------------------+---------------+------------+
|
||||
| another_catalog | another_schema | another_table | BASE TABLE |
|
||||
| another_catalog | information_schema | tables | VIEW |
|
||||
+-----------------+--------------------+---------------+------------+";
|
||||
let expected = match is_distributed_mode {
|
||||
true => {
|
||||
"\
|
||||
+-----------------+--------------------+---------------+------------+----------+--------+
|
||||
| table_catalog | table_schema | table_name | table_type | table_id | engine |
|
||||
+-----------------+--------------------+---------------+------------+----------+--------+
|
||||
| another_catalog | another_schema | another_table | BASE TABLE | 1025 | mito |
|
||||
| another_catalog | information_schema | tables | VIEW | | |
|
||||
+-----------------+--------------------+---------------+------------+----------+--------+"
|
||||
}
|
||||
false => {
|
||||
"\
|
||||
+-----------------+--------------------+---------------+------------+----------+--------+
|
||||
| table_catalog | table_schema | table_name | table_type | table_id | engine |
|
||||
+-----------------+--------------------+---------------+------------+----------+--------+
|
||||
| another_catalog | another_schema | another_table | BASE TABLE | 1024 | mito |
|
||||
| another_catalog | information_schema | tables | VIEW | | |
|
||||
+-----------------+--------------------+---------------+------------+----------+--------+"
|
||||
}
|
||||
};
|
||||
check_output_stream(output, expected).await;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,18 +26,28 @@ use crate::tests::{
|
||||
|
||||
pub(crate) trait MockInstance {
|
||||
fn frontend(&self) -> Arc<Instance>;
|
||||
|
||||
fn is_distributed_mode(&self) -> bool;
|
||||
}
|
||||
|
||||
impl MockInstance for MockStandaloneInstance {
|
||||
fn frontend(&self) -> Arc<Instance> {
|
||||
self.instance.clone()
|
||||
}
|
||||
|
||||
fn is_distributed_mode(&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
impl MockInstance for MockDistributedInstance {
|
||||
fn frontend(&self) -> Arc<Instance> {
|
||||
self.frontend.clone()
|
||||
}
|
||||
|
||||
fn is_distributed_mode(&self) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) async fn standalone() -> Arc<dyn MockInstance> {
|
||||
|
||||
Reference in New Issue
Block a user