From 6070e880776e0216796a0155420ed7dafb5d18a0 Mon Sep 17 00:00:00 2001 From: dimbtp Date: Sun, 31 Dec 2023 10:08:16 +0800 Subject: [PATCH] feat: add information_schema.files (#3054) * feat: add information_schema.files * fix: update information_schema.result * fix: change `EXTRA` field type to string --- src/catalog/src/information_schema.rs | 2 + .../information_schema/memory_table/tables.rs | 44 +++++++++ .../src/information_schema/table_names.rs | 1 + src/common/catalog/src/consts.rs | 4 +- .../common/show/show_databases_tables.result | 1 + .../common/system/information_schema.result | 95 +++++++++++++------ 6 files changed, 118 insertions(+), 29 deletions(-) diff --git a/src/catalog/src/information_schema.rs b/src/catalog/src/information_schema.rs index 232c2279d938..92427552425f 100644 --- a/src/catalog/src/information_schema.rs +++ b/src/catalog/src/information_schema.rs @@ -58,6 +58,7 @@ lazy_static! { COLLATION_CHARACTER_SET_APPLICABILITY, CHECK_CONSTRAINTS, EVENTS, + FILES, ]; } @@ -171,6 +172,7 @@ impl InformationSchemaProvider { } CHECK_CONSTRAINTS => setup_memory_table!(CHECK_CONSTRAINTS), EVENTS => setup_memory_table!(EVENTS), + FILES => setup_memory_table!(FILES), SCHEMATA => Some(Arc::new(InformationSchemaSchemata::new( self.catalog_name.clone(), self.catalog_manager.clone(), diff --git a/src/catalog/src/information_schema/memory_table/tables.rs b/src/catalog/src/information_schema/memory_table/tables.rs index abb719ca1b4b..30be1fbaa748 100644 --- a/src/catalog/src/information_schema/memory_table/tables.rs +++ b/src/catalog/src/information_schema/memory_table/tables.rs @@ -183,6 +183,50 @@ pub fn get_schema_columns(table_name: &str) -> (SchemaRef, Vec) { vec![], ), + FILES => ( + vec![ + bigint_column("FILE_ID"), + string_column("FILE_NAME"), + string_column("FILE_TYPE"), + string_column("TABLESPACE_NAME"), + string_column("TABLE_CATALOG"), + string_column("TABLE_SCHEMA"), + string_column("TABLE_NAME"), + string_column("LOGFILE_GROUP_NAME"), + bigint_column("LOGFILE_GROUP_NUMBER"), + string_column("ENGINE"), + string_column("FULLTEXT_KEYS"), + bigint_column("DELETED_ROWS"), + bigint_column("UPDATE_COUNT"), + bigint_column("FREE_EXTENTS"), + bigint_column("TOTAL_EXTENTS"), + bigint_column("EXTENT_SIZE"), + bigint_column("INITIAL_SIZE"), + bigint_column("MAXIMUM_SIZE"), + bigint_column("AUTOEXTEND_SIZE"), + datetime_column("CREATION_TIME"), + datetime_column("LAST_UPDATE_TIME"), + datetime_column("LAST_ACCESS_TIME"), + datetime_column("RECOVER_TIME"), + bigint_column("TRANSACTION_COUNTER"), + string_column("VERSION"), + string_column("ROW_FORMAT"), + bigint_column("TABLE_ROWS"), + bigint_column("AVG_ROW_LENGTH"), + bigint_column("DATA_LENGTH"), + bigint_column("MAX_DATA_LENGTH"), + bigint_column("INDEX_LENGTH"), + bigint_column("DATA_FREE"), + datetime_column("CREATE_TIME"), + datetime_column("UPDATE_TIME"), + datetime_column("CHECK_TIME"), + string_column("CHECKSUM"), + string_column("STATUS"), + string_column("EXTRA"), + ], + vec![], + ), + _ => unreachable!("Unknown table in information_schema: {}", table_name), }; diff --git a/src/catalog/src/information_schema/table_names.rs b/src/catalog/src/information_schema/table_names.rs index 73ef00b81bd3..bfdc56d89217 100644 --- a/src/catalog/src/information_schema/table_names.rs +++ b/src/catalog/src/information_schema/table_names.rs @@ -25,4 +25,5 @@ pub const COLLATIONS: &str = "collations"; pub const COLLATION_CHARACTER_SET_APPLICABILITY: &str = "collation_character_set_applicability"; pub const CHECK_CONSTRAINTS: &str = "check_constraints"; pub const EVENTS: &str = "events"; +pub const FILES: &str = "files"; pub const SCHEMATA: &str = "schemata"; diff --git a/src/common/catalog/src/consts.rs b/src/common/catalog/src/consts.rs index 75c176112db2..9e8b9e4a0768 100644 --- a/src/common/catalog/src/consts.rs +++ b/src/common/catalog/src/consts.rs @@ -54,8 +54,10 @@ pub const INFORMATION_SCHEMA_COLLATION_CHARACTER_SET_APPLICABILITY_TABLE_ID: u32 pub const INFORMATION_SCHEMA_CHECK_CONSTRAINTS_TABLE_ID: u32 = 12; /// id for information_schema.EVENTS pub const INFORMATION_SCHEMA_EVENTS_TABLE_ID: u32 = 13; +/// id for information_schema.FILES +pub const INFORMATION_SCHEMA_FILES_TABLE_ID: u32 = 14; /// id for information_schema.SCHEMATA -pub const INFORMATION_SCHEMA_SCHEMATA_TABLE_ID: u32 = 14; +pub const INFORMATION_SCHEMA_SCHEMATA_TABLE_ID: u32 = 15; /// ----- End of information_schema tables ----- pub const MITO_ENGINE: &str = "mito"; diff --git a/tests/cases/standalone/common/show/show_databases_tables.result b/tests/cases/standalone/common/show/show_databases_tables.result index a407564c3b4c..8a1e606ad110 100644 --- a/tests/cases/standalone/common/show/show_databases_tables.result +++ b/tests/cases/standalone/common/show/show_databases_tables.result @@ -30,6 +30,7 @@ show tables; | columns | | engines | | events | +| files | | schemata | | tables | +---------------------------------------+ diff --git a/tests/cases/standalone/common/system/information_schema.result b/tests/cases/standalone/common/system/information_schema.result index c7fc6543ee95..a97660ee5839 100644 --- a/tests/cases/standalone/common/system/information_schema.result +++ b/tests/cases/standalone/common/system/information_schema.result @@ -22,7 +22,8 @@ order by table_schema, table_name; | greptime | information_schema | columns | LOCAL TEMPORARY | 4 | | | greptime | information_schema | engines | LOCAL TEMPORARY | 5 | | | greptime | information_schema | events | LOCAL TEMPORARY | 13 | | -| greptime | information_schema | schemata | LOCAL TEMPORARY | 14 | | +| greptime | information_schema | files | LOCAL TEMPORARY | 14 | | +| greptime | information_schema | schemata | LOCAL TEMPORARY | 15 | | | greptime | information_schema | tables | LOCAL TEMPORARY | 3 | | | greptime | public | numbers | LOCAL TEMPORARY | 2 | test_engine | +---------------+--------------------+---------------------------------------+-----------------+----------+-------------+ @@ -32,56 +33,56 @@ select * from information_schema.columns order by table_schema, table_name; +---------------+--------------------+---------------------------------------+----------------------------+-----------+---------------+----------------+-------------+-------------+----------------+ | table_catalog | table_schema | table_name | column_name | data_type | semantic_type | column_default | is_nullable | column_type | column_comment | +---------------+--------------------+---------------------------------------+----------------------------+-----------+---------------+----------------+-------------+-------------+----------------+ -| greptime | information_schema | build_info | pkg_version | String | FIELD | | No | String | | | greptime | information_schema | build_info | git_branch | String | FIELD | | No | String | | | greptime | information_schema | build_info | git_commit | String | FIELD | | No | String | | | greptime | information_schema | build_info | git_commit_short | String | FIELD | | No | String | | | greptime | information_schema | build_info | git_dirty | String | FIELD | | No | String | | -| greptime | information_schema | character_sets | description | String | FIELD | | No | String | | -| greptime | information_schema | character_sets | maxlen | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | build_info | pkg_version | String | FIELD | | No | String | | | greptime | information_schema | character_sets | default_collate_name | String | FIELD | | No | String | | | greptime | information_schema | character_sets | character_set_name | String | FIELD | | No | String | | -| greptime | information_schema | check_constraints | constraint_schema | String | FIELD | | No | String | | +| greptime | information_schema | character_sets | maxlen | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | character_sets | description | String | FIELD | | No | String | | | greptime | information_schema | check_constraints | check_clause | String | FIELD | | No | String | | | greptime | information_schema | check_constraints | constraint_name | String | FIELD | | No | String | | +| greptime | information_schema | check_constraints | constraint_schema | String | FIELD | | No | String | | | greptime | information_schema | check_constraints | constraint_catalog | String | FIELD | | No | String | | -| greptime | information_schema | collation_character_set_applicability | collation_name | String | FIELD | | No | String | | | greptime | information_schema | collation_character_set_applicability | character_set_name | String | FIELD | | No | String | | +| greptime | information_schema | collation_character_set_applicability | collation_name | String | FIELD | | No | String | | | greptime | information_schema | collations | collation_name | String | FIELD | | No | String | | | greptime | information_schema | collations | sortlen | Int64 | FIELD | | No | Int64 | | -| greptime | information_schema | collations | is_compiled | String | FIELD | | No | String | | -| greptime | information_schema | collations | is_default | String | FIELD | | No | String | | -| greptime | information_schema | collations | id | Int64 | FIELD | | No | Int64 | | | greptime | information_schema | collations | character_set_name | String | FIELD | | No | String | | -| greptime | information_schema | column_privileges | is_grantable | String | FIELD | | No | String | | -| greptime | information_schema | column_privileges | grantee | String | FIELD | | No | String | | -| greptime | information_schema | column_privileges | table_catalog | String | FIELD | | No | String | | +| greptime | information_schema | collations | id | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | collations | is_default | String | FIELD | | No | String | | +| greptime | information_schema | collations | is_compiled | String | FIELD | | No | String | | | greptime | information_schema | column_privileges | table_schema | String | FIELD | | No | String | | +| greptime | information_schema | column_privileges | table_catalog | String | FIELD | | No | String | | +| greptime | information_schema | column_privileges | grantee | String | FIELD | | No | String | | | greptime | information_schema | column_privileges | table_name | String | FIELD | | No | String | | | greptime | information_schema | column_privileges | column_name | String | FIELD | | No | String | | | greptime | information_schema | column_privileges | privilege_type | String | FIELD | | No | String | | -| greptime | information_schema | column_statistics | table_name | String | FIELD | | No | String | | +| greptime | information_schema | column_privileges | is_grantable | String | FIELD | | No | String | | +| greptime | information_schema | column_statistics | histogram | String | FIELD | | No | String | | | greptime | information_schema | column_statistics | schema_name | String | FIELD | | No | String | | +| greptime | information_schema | column_statistics | table_name | String | FIELD | | No | String | | | greptime | information_schema | column_statistics | column_name | String | FIELD | | No | String | | -| greptime | information_schema | column_statistics | histogram | String | FIELD | | No | String | | -| greptime | information_schema | columns | table_catalog | String | FIELD | | No | String | | -| greptime | information_schema | columns | column_comment | String | FIELD | | Yes | String | | | greptime | information_schema | columns | column_type | String | FIELD | | No | String | | +| greptime | information_schema | columns | column_comment | String | FIELD | | Yes | String | | +| greptime | information_schema | columns | table_schema | String | FIELD | | No | String | | | greptime | information_schema | columns | is_nullable | String | FIELD | | No | String | | | greptime | information_schema | columns | column_default | String | FIELD | | Yes | String | | | greptime | information_schema | columns | semantic_type | String | FIELD | | No | String | | +| greptime | information_schema | columns | table_catalog | String | FIELD | | No | String | | | greptime | information_schema | columns | data_type | String | FIELD | | No | String | | | greptime | information_schema | columns | column_name | String | FIELD | | No | String | | | greptime | information_schema | columns | table_name | String | FIELD | | No | String | | -| greptime | information_schema | columns | table_schema | String | FIELD | | No | String | | -| greptime | information_schema | engines | xa | String | FIELD | | No | String | | -| greptime | information_schema | engines | support | String | FIELD | | No | String | | | greptime | information_schema | engines | savepoints | String | FIELD | | No | String | | -| greptime | information_schema | engines | engine | String | FIELD | | No | String | | +| greptime | information_schema | engines | xa | String | FIELD | | No | String | | | greptime | information_schema | engines | transactions | String | FIELD | | No | String | | | greptime | information_schema | engines | comment | String | FIELD | | No | String | | -| greptime | information_schema | events | event_comment | String | FIELD | | No | String | | -| greptime | information_schema | events | sql_mode | String | FIELD | | No | String | | +| greptime | information_schema | engines | support | String | FIELD | | No | String | | +| greptime | information_schema | engines | engine | String | FIELD | | No | String | | +| greptime | information_schema | events | event_definition | String | FIELD | | No | String | | +| greptime | information_schema | events | last_executed | DateTime | FIELD | | No | DateTime | | | greptime | information_schema | events | database_collation | String | FIELD | | No | String | | | greptime | information_schema | events | collation_connection | String | FIELD | | No | String | | | greptime | information_schema | events | character_set_client | String | FIELD | | No | String | | @@ -92,29 +93,67 @@ select * from information_schema.columns order by table_schema, table_name; | greptime | information_schema | events | definer | String | FIELD | | No | String | | | greptime | information_schema | events | time_zone | String | FIELD | | No | String | | | greptime | information_schema | events | event_body | String | FIELD | | No | String | | -| greptime | information_schema | events | event_definition | String | FIELD | | No | String | | +| greptime | information_schema | events | event_comment | String | FIELD | | No | String | | | greptime | information_schema | events | event_type | String | FIELD | | No | String | | | greptime | information_schema | events | execute_at | DateTime | FIELD | | No | DateTime | | | greptime | information_schema | events | interval_value | Int64 | FIELD | | No | Int64 | | | greptime | information_schema | events | interval_field | String | FIELD | | No | String | | -| greptime | information_schema | events | last_executed | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | events | sql_mode | String | FIELD | | No | String | | | greptime | information_schema | events | starts | DateTime | FIELD | | No | DateTime | | | greptime | information_schema | events | ends | DateTime | FIELD | | No | DateTime | | | greptime | information_schema | events | status | String | FIELD | | No | String | | | greptime | information_schema | events | on_completion | String | FIELD | | No | String | | | greptime | information_schema | events | created | DateTime | FIELD | | No | DateTime | | | greptime | information_schema | events | last_altered | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | logfile_group_name | String | FIELD | | No | String | | +| greptime | information_schema | files | data_free | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | extra | String | FIELD | | No | String | | +| greptime | information_schema | files | status | String | FIELD | | No | String | | +| greptime | information_schema | files | checksum | String | FIELD | | No | String | | +| greptime | information_schema | files | check_time | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | file_id | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | file_name | String | FIELD | | No | String | | +| greptime | information_schema | files | file_type | String | FIELD | | No | String | | +| greptime | information_schema | files | tablespace_name | String | FIELD | | No | String | | +| greptime | information_schema | files | table_catalog | String | FIELD | | No | String | | +| greptime | information_schema | files | table_schema | String | FIELD | | No | String | | +| greptime | information_schema | files | table_name | String | FIELD | | No | String | | +| greptime | information_schema | files | update_time | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | logfile_group_number | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | engine | String | FIELD | | No | String | | +| greptime | information_schema | files | fulltext_keys | String | FIELD | | No | String | | +| greptime | information_schema | files | deleted_rows | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | update_count | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | free_extents | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | total_extents | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | extent_size | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | initial_size | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | maximum_size | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | autoextend_size | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | creation_time | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | last_update_time | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | last_access_time | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | recover_time | DateTime | FIELD | | No | DateTime | | +| greptime | information_schema | files | transaction_counter | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | version | String | FIELD | | No | String | | +| greptime | information_schema | files | row_format | String | FIELD | | No | String | | +| greptime | information_schema | files | table_rows | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | avg_row_length | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | data_length | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | max_data_length | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | index_length | Int64 | FIELD | | No | Int64 | | +| greptime | information_schema | files | create_time | DateTime | FIELD | | No | DateTime | | | greptime | information_schema | schemata | catalog_name | String | FIELD | | No | String | | | greptime | information_schema | schemata | schema_name | String | FIELD | | No | String | | | greptime | information_schema | schemata | default_character_set_name | String | FIELD | | No | String | | | greptime | information_schema | schemata | default_collation_name | String | FIELD | | No | String | | | greptime | information_schema | schemata | sql_path | String | FIELD | | Yes | String | | +| greptime | information_schema | tables | engine | String | FIELD | | Yes | String | | | greptime | information_schema | tables | table_catalog | String | FIELD | | No | String | | -| greptime | information_schema | tables | table_schema | String | FIELD | | No | String | | -| greptime | information_schema | tables | table_name | String | FIELD | | No | String | | -| greptime | information_schema | tables | table_type | String | FIELD | | No | String | | | greptime | information_schema | tables | table_id | UInt32 | FIELD | | Yes | UInt32 | | -| greptime | information_schema | tables | engine | String | FIELD | | Yes | String | | +| greptime | information_schema | tables | table_type | String | FIELD | | No | String | | +| greptime | information_schema | tables | table_name | String | FIELD | | No | String | | +| greptime | information_schema | tables | table_schema | String | FIELD | | No | String | | | greptime | public | numbers | number | UInt32 | TAG | | No | UInt32 | | +---------------+--------------------+---------------------------------------+----------------------------+-----------+---------------+----------------+-------------+-------------+----------------+