From 31d390effb640a1ed5b0be170ad5f58a687bbf30 Mon Sep 17 00:00:00 2001 From: test Date: Fri, 29 Dec 2023 21:04:11 +0800 Subject: [PATCH] feat: add information_schema.files --- 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 + 5 files changed, 51 insertions(+), 1 deletion(-) 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..2b73cc12a81d 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"), + bigint_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 | +---------------------------------------+