This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new baae7bf3394 [fix](information_schema)fix bug that metadata_name_ids 
error tableid and append information_schema case.  (#26238)
baae7bf3394 is described below

commit baae7bf33948d0272a6e1b73cfd6e2181461e37e
Author: daidai <2017501...@qq.com>
AuthorDate: Thu Nov 9 14:07:12 2023 +0800

    [fix](information_schema)fix bug that metadata_name_ids error tableid and 
append information_schema case.  (#26238)
    
    fix bug that  #24059 .
    Added some information_schema scanner tests.
    files
    schema_privileges
    table_privileges
    partitions
    rowsets
    statistics
    table_constraints
    
    Based on infodb_support_ext_catalog=false, it currently includes tests for 
all tables under the information_schema database.
---
 be/src/exec/schema_scanner.cpp                     |   2 -
 be/src/exec/schema_scanner.h                       |   6 +-
 be/src/exec/schema_scanner/schema_helper.cpp       |   9 --
 be/src/exec/schema_scanner/schema_helper.h         |   4 -
 .../schema_metadata_name_ids_scanner.cpp           |   4 +-
 .../data/query_p0/system/test_query_sys_tables.out | 164 +++++++++++++++++++++
 .../query_p0/system/test_query_sys_tables.groovy   |  75 +++++++++-
 7 files changed, 241 insertions(+), 23 deletions(-)

diff --git a/be/src/exec/schema_scanner.cpp b/be/src/exec/schema_scanner.cpp
index 9733558284a..8d640341bfb 100644
--- a/be/src/exec/schema_scanner.cpp
+++ b/be/src/exec/schema_scanner.cpp
@@ -60,8 +60,6 @@
 namespace doris {
 class ObjectPool;
 
-DorisServer* SchemaScanner::_s_doris_server;
-
 SchemaScanner::SchemaScanner(const std::vector<ColumnDesc>& columns)
         : _is_init(false),
           _param(nullptr),
diff --git a/be/src/exec/schema_scanner.h b/be/src/exec/schema_scanner.h
index 2d4e468c592..ec4bc9e0d3d 100644
--- a/be/src/exec/schema_scanner.h
+++ b/be/src/exec/schema_scanner.h
@@ -33,7 +33,7 @@
 namespace doris {
 
 // forehead declare class, because jni function init in DorisServer.
-class DorisServer;
+
 class RuntimeState;
 class ObjectPool;
 class TUserIdentity;
@@ -101,8 +101,6 @@ public:
     static std::unique_ptr<SchemaScanner> create(TSchemaTableType::type type);
     TSchemaTableType::type type() const { return _schema_table_type; }
 
-    static void set_doris_server(DorisServer* doris_server) { _s_doris_server 
= doris_server; }
-
 protected:
     Status fill_dest_column_for_range(vectorized::Block* block, size_t pos,
                                       const std::vector<void*>& datas);
@@ -113,8 +111,6 @@ protected:
     // schema table's column desc
     std::vector<ColumnDesc> _columns;
 
-    static DorisServer* _s_doris_server;
-
     TSchemaTableType::type _schema_table_type;
 
     RuntimeProfile::Counter* _get_db_timer = nullptr;
diff --git a/be/src/exec/schema_scanner/schema_helper.cpp 
b/be/src/exec/schema_scanner/schema_helper.cpp
index 3184aed4d2e..b1d6900e0f5 100644
--- a/be/src/exec/schema_scanner/schema_helper.cpp
+++ b/be/src/exec/schema_scanner/schema_helper.cpp
@@ -69,15 +69,6 @@ Status SchemaHelper::list_table_metadata_name_ids(const 
std::string& ip, const i
             });
 }
 
-Status SchemaHelper::describe_table(const std::string& ip, const int32_t port,
-                                    const TDescribeTableParams& request,
-                                    TDescribeTableResult* result) {
-    return ThriftRpcHelper::rpc<FrontendServiceClient>(
-            ip, port, [&request, &result](FrontendServiceConnection& client) {
-                client->describeTable(*result, request);
-            });
-}
-
 Status SchemaHelper::describe_tables(const std::string& ip, const int32_t port,
                                      const TDescribeTablesParams& request,
                                      TDescribeTablesResult* result) {
diff --git a/be/src/exec/schema_scanner/schema_helper.h 
b/be/src/exec/schema_scanner/schema_helper.h
index 900f963f789..c0143136115 100644
--- a/be/src/exec/schema_scanner/schema_helper.h
+++ b/be/src/exec/schema_scanner/schema_helper.h
@@ -55,10 +55,6 @@ public:
                                                const doris::TGetTablesParams& 
request,
                                                
TListTableMetadataNameIdsResult* result);
 
-    static Status describe_table(const std::string& ip, const int32_t port,
-                                 const TDescribeTableParams& desc_params,
-                                 TDescribeTableResult* desc_result);
-
     static Status describe_tables(const std::string& ip, const int32_t port,
                                   const TDescribeTablesParams& desc_params,
                                   TDescribeTablesResult* desc_result);
diff --git a/be/src/exec/schema_scanner/schema_metadata_name_ids_scanner.cpp 
b/be/src/exec/schema_scanner/schema_metadata_name_ids_scanner.cpp
index e69596ef8fa..ef7b2b69c1e 100644
--- a/be/src/exec/schema_scanner/schema_metadata_name_ids_scanner.cpp
+++ b/be/src/exec/schema_scanner/schema_metadata_name_ids_scanner.cpp
@@ -193,13 +193,13 @@ Status 
SchemaMetadataNameIdsScanner::_fill_block_impl(vectorized::Block* block)
             RETURN_IF_ERROR(fill_dest_column_for_range(block, 3, null_datas));
         }
     }
-    //     table_id
+    //  table_id
     {
         int64_t srcs[table_num];
         for (int i = 0; i < table_num; ++i) {
             if (_table_result.tables[i].__isset.id) {
                 srcs[i] = _table_result.tables[i].id;
-                datas[i] = &srcs;
+                datas[i] = srcs + i;
             } else {
                 datas[i] = nullptr;
             }
diff --git a/regression-test/data/query_p0/system/test_query_sys_tables.out 
b/regression-test/data/query_p0/system/test_query_sys_tables.out
index 9d87b432b4a..91f54556ae8 100644
--- a/regression-test/data/query_p0/system/test_query_sys_tables.out
+++ b/regression-test/data/query_p0/system/test_query_sys_tables.out
@@ -19,12 +19,175 @@ internal   bbb     2       varchar varchar(20)     20
 internal       ccc     3       int     int(11) 10
 internal       ddd     4       smallint        smallint(6)     5
 
+-- !desc_files --
+FILE_ID        BIGINT  Yes     false   \N      
+FILE_NAME      TEXT    Yes     false   \N      
+FILE_TYPE      VARCHAR(256)    Yes     false   \N      
+TABLESPACE_NAME        VARCHAR(256)    Yes     false   \N      
+TABLE_CATALOG  CHAR(16)        Yes     false   \N      
+TABLE_SCHEMA   TEXT    Yes     false   \N      
+TABLE_NAME     TEXT    Yes     false   \N      
+LOGFILE_GROUP_NAME     VARCHAR(256)    Yes     false   \N      
+LOGFILE_GROUP_NUMBER   BIGINT  Yes     false   \N      
+ENGINE VARCHAR(64)     Yes     false   \N      
+FULLTEXT_KEYS  TEXT    Yes     false   \N      
+DELETED_ROWS   TEXT    Yes     false   \N      
+UPDATE_COUNT   TEXT    Yes     false   \N      
+FREE_EXTENTS   BIGINT  Yes     false   \N      
+TOTAL_EXTENTS  BIGINT  Yes     false   \N      
+EXTENT_SIZE    BIGINT  Yes     false   \N      
+INITIAL_SIZE   BIGINT  Yes     false   \N      
+MAXIMUM_SIZE   BIGINT  Yes     false   \N      
+AUTOEXTEND_SIZE        BIGINT  Yes     false   \N      
+CREATION_TIME  TEXT    Yes     false   \N      
+LAST_UPDATE_TIME       TEXT    Yes     false   \N      
+LAST_ACCESS_TIME       TEXT    Yes     false   \N      
+RECOVER_TIME   TEXT    Yes     false   \N      
+TRANSACTION_COUNTER    TEXT    Yes     false   \N      
+VERSION        BIGINT  Yes     false   \N      
+ROW_FORMAT     VARCHAR(256)    Yes     false   \N      
+TABLE_ROWS     TEXT    Yes     false   \N      
+AVG_ROW_LENGTH TEXT    Yes     false   \N      
+DATA_LENGTH    TEXT    Yes     false   \N      
+MAX_DATA_LENGTH        TEXT    Yes     false   \N      
+INDEX_LENGTH   TEXT    Yes     false   \N      
+DATA_FREE      BIGINT  Yes     false   \N      
+CREATE_TIME    TEXT    Yes     false   \N      
+UPDATE_TIME    TEXT    Yes     false   \N      
+CHECK_TIME     TEXT    Yes     false   \N      
+CHECKSUM       TEXT    Yes     false   \N      
+STATUS VARCHAR(256)    Yes     false   \N      
+EXTRA  VARCHAR(256)    Yes     false   \N      
+
+-- !query_files --
+
+-- !desc_statistics --
+TABLE_CATALOG  VARCHAR(512)    Yes     false   \N      
+TABLE_SCHEMA   VARCHAR(64)     Yes     false   \N      
+TABLE_NAME     VARCHAR(64)     Yes     false   \N      
+NON_UNIQUE     BIGINT  Yes     false   \N      
+INDEX_SCHEMA   VARCHAR(64)     Yes     false   \N      
+INDEX_NAME     VARCHAR(64)     Yes     false   \N      
+SEQ_IN_INDEX   BIGINT  Yes     false   \N      
+COLUMN_NAME    VARCHAR(64)     Yes     false   \N      
+COLLATION      VARCHAR(1)      Yes     false   \N      
+CARDINALITY    BIGINT  Yes     false   \N      
+SUB_PART       BIGINT  Yes     false   \N      
+PACKED VARCHAR(10)     Yes     false   \N      
+NULLABLE       VARCHAR(3)      Yes     false   \N      
+INDEX_TYPE     VARCHAR(16)     Yes     false   \N      
+COMMENT        VARCHAR(16)     Yes     false   \N      
+INDEX_COMMENT  VARCHAR(1024)   Yes     false   \N      
+
+-- !query_statistics --
+
+-- !desc_statistics --
+CONSTRAINT_CATALOG     VARCHAR(512)    Yes     false   \N      
+CONSTRAINT_SCHEMA      VARCHAR(64)     Yes     false   \N      
+CONSTRAINT_NAME        VARCHAR(64)     Yes     false   \N      
+TABLE_SCHEMA   VARCHAR(64)     Yes     false   \N      
+TABLE_NAME     VARCHAR(64)     Yes     false   \N      
+CONSTRAINT_TYPE        VARCHAR(64)     Yes     false   \N      
+
+-- !query_table_constraints --
+
+-- !desc_schema_privileges --
+GRANTEE        VARCHAR(81)     Yes     false   \N      
+TABLE_CATALOG  VARCHAR(512)    Yes     false   \N      
+TABLE_SCHEMA   VARCHAR(64)     Yes     false   \N      
+PRIVILEGE_TYPE VARCHAR(64)     Yes     false   \N      
+IS_GRANTABLE   VARCHAR(3)      Yes     false   \N      
+
+-- !schema_privileges1 --
+'root'@'%'     def     mysql   SELECT  NO
+
+-- !schema_privileges2 --
+'cyw'@'%'      def     mysql   SELECT  NO
+
+-- !schema_privileges3 --
+
+-- !desc_table_privileges --
+GRANTEE        VARCHAR(81)     Yes     false   \N      
+TABLE_CATALOG  VARCHAR(512)    Yes     false   \N      
+TABLE_SCHEMA   VARCHAR(64)     Yes     false   \N      
+TABLE_NAME     VARCHAR(64)     Yes     false   \N      
+PRIVILEGE_TYPE VARCHAR(64)     Yes     false   \N      
+IS_GRANTABLE   VARCHAR(3)      Yes     false   \N      
+
+-- !table_privileges --
+
+-- !table_privileges2 --
+'cywtable'@'%' def     table_privileges_demo   test_table_privileges   ALTER   
NO
+'cywtable'@'%' def     table_privileges_demo   test_table_privileges   INSERT  
NO
+'cywtable'@'%' def     table_privileges_demo   test_table_privileges   SELECT  
NO
+
+-- !table_privileges3 --
+'cywtable'@'%' def     table_privileges_demo   test_table_privileges   ALTER   
NO
+'cywtable'@'%' def     table_privileges_demo   test_table_privileges   INSERT  
NO
+
+-- !desc_partitions --
+TABLE_CATALOG  VARCHAR(64)     Yes     false   \N      
+TABLE_SCHEMA   VARCHAR(64)     Yes     false   \N      
+TABLE_NAME     VARCHAR(64)     Yes     false   \N      
+PARTITION_NAME VARCHAR(64)     Yes     false   \N      
+SUBPARTITION_NAME      VARCHAR(64)     Yes     false   \N      
+PARTITION_ORDINAL_POSITION     INT     Yes     false   \N      
+SUBPARTITION_ORDINAL_POSITION  INT     Yes     false   \N      
+PARTITION_METHOD       VARCHAR(13)     Yes     false   \N      
+SUBPARTITION_METHOD    VARCHAR(13)     Yes     false   \N      
+PARTITION_EXPRESSION   VARCHAR(2048)   Yes     false   \N      
+SUBPARTITION_EXPRESSION        VARCHAR(2048)   Yes     false   \N      
+PARTITION_DESCRIPTION  TEXT    Yes     false   \N      
+TABLE_ROWS     BIGINT  Yes     false   \N      
+AVG_ROW_LENGTH BIGINT  Yes     false   \N      
+DATA_LENGTH    BIGINT  Yes     false   \N      
+MAX_DATA_LENGTH        BIGINT  Yes     false   \N      
+INDEX_LENGTH   BIGINT  Yes     false   \N      
+DATA_FREE      BIGINT  Yes     false   \N      
+CREATE_TIME    BIGINT  Yes     false   \N      
+UPDATE_TIME    DATETIME        Yes     false   \N      
+CHECK_TIME     DATETIME        Yes     false   \N      
+CHECKSUM       BIGINT  Yes     false   \N      
+PARTITION_COMMENT      TEXT    Yes     false   \N      
+NODEGROUP      VARCHAR(256)    Yes     false   \N      
+TABLESPACE_NAME        VARCHAR(268)    Yes     false   \N      
+
+-- !select_partitions --
+
+-- !desc_rowsets --
+BACKEND_ID     BIGINT  Yes     false   \N      
+ROWSET_ID      VARCHAR(64)     Yes     false   \N      
+TABLET_ID      BIGINT  Yes     false   \N      
+ROWSET_NUM_ROWS        BIGINT  Yes     false   \N      
+TXN_ID BIGINT  Yes     false   \N      
+NUM_SEGMENTS   BIGINT  Yes     false   \N      
+START_VERSION  BIGINT  Yes     false   \N      
+END_VERSION    BIGINT  Yes     false   \N      
+INDEX_DISK_SIZE        BIGINT  Yes     false   \N      
+DATA_DISK_SIZE BIGINT  Yes     false   \N      
+CREATION_TIME  BIGINT  Yes     false   \N      
+NEWEST_WRITE_TIMESTAMP BIGINT  Yes     false   \N      
+
+-- !rowsets1 --
+0      1
+
+-- !rowsets2 --
+0      1
+2      2
+
+-- !rowsets3 --
+0      1
+2      2
+3      3
+4      4
+
 -- !schemata --
 internal       test_query_sys_db_1     \N
 internal       test_query_sys_db_2     \N
 internal       test_query_sys_db_3     \N
 
 -- !tables --
+internal       test_query_rowset       BASE TABLE      0       \N      \N
 internal       test_query_sys_tb_1     BASE TABLE      0       \N      \N
 internal       test_query_sys_tb_2     BASE TABLE      0       \N      \N
 internal       test_query_sys_tb_3     BASE TABLE      0       \N      \N
@@ -58,3 +221,4 @@ test_view
 -- !sql --
 
 -- !sql --
+
diff --git 
a/regression-test/suites/query_p0/system/test_query_sys_tables.groovy 
b/regression-test/suites/query_p0/system/test_query_sys_tables.groovy
index baf5d3aa7ea..ad4a5f12bb1 100644
--- a/regression-test/suites/query_p0/system/test_query_sys_tables.groovy
+++ b/regression-test/suites/query_p0/system/test_query_sys_tables.groovy
@@ -87,12 +87,85 @@ suite("test_query_sys_tables", "query,p0") {
 
     // test files
     // have no impl
+    qt_desc_files """desc `information_schema`.`files` """
+    order_qt_query_files """ select * from `information_schema`.`files` """
+
+    //test information_schema.statistics
+    // have no impl
+    qt_desc_statistics """desc `information_schema`.`statistics` """
+    order_qt_query_statistics """ select * from 
`information_schema`.`statistics` """
+
+    //test information_schema.table_constraints 
+    // have no impl
+    qt_desc_statistics """desc `information_schema`.`table_constraints` """
+    order_qt_query_table_constraints """ select * from 
`information_schema`.`table_constraints` """
+    
+
+    // test schema_privileges
+    sql """  DROP USER if exists 'cyw'; """   
+    qt_desc_schema_privileges """desc `information_schema`.`schema_privileges` 
"""
+    order_qt_schema_privileges1 """  select * from 
information_schema.schema_privileges where GRANTEE = "'root'@'%'" ; """    
+    sql """  CREATE USER 'cyw'; """
+    order_qt_schema_privileges2 """  select * from 
information_schema.schema_privileges where GRANTEE = "'cyw'@'%'" ;  """  
+    sql """  DROP USER 'cyw'; """
+    order_qt_schema_privileges3 """  select * from 
information_schema.schema_privileges where GRANTEE = "'cyw'@'%'" ;  """  
+
+    
+    // test table_privileges
+    sql """  DROP USER if exists 'cywtable'; """   
+    qt_desc_table_privileges """desc `information_schema`.`table_privileges` 
"""
+    order_qt_table_privileges """  select * from 
information_schema.table_privileges   """  
+    sql """  CREATE USER 'cywtable'; """
+    sql """ CREATE DATABASE IF NOT EXISTS table_privileges_demo  """
+    sql """ create table IF NOT EXISTS 
table_privileges_demo.test_table_privileges( 
+            a int , 
+            b boolean , 
+            c string ) 
+        DISTRIBUTED BY HASH(`a`) BUCKETS 1 
+        PROPERTIES (
+            "replication_num" = "1",
+            "disable_auto_compaction" = "true",
+            "enable_single_replica_compaction"="true"
+        );"""
+    
+    sql """ GRANT SELECT_PRIV,ALTER_PRIV,LOAD_PRIV ON 
table_privileges_demo.test_table_privileges  TO 'cywtable'@'%'; """
+    order_qt_table_privileges2  """  select * from 
information_schema.table_privileges order by PRIVILEGE_TYPE ; """
+    sql """ REVOKE SELECT_PRIV ON table_privileges_demo.test_table_privileges 
FROM 'cywtable'@'%'; """ 
+    order_qt_table_privileges3  """  select * from 
information_schema.table_privileges order by PRIVILEGE_TYPE ; """
+
 
     // test partitions
     // have no impl
+    qt_desc_partitions """ desc `information_schema`.`partitions` """ 
+    order_qt_select_partitions """ select * from  
`information_schema`.`partitions`; """ 
+
 
     // test rowsets
-    // have no tablet system table, add this later 
+    qt_desc_rowsets """ desc information_schema.rowsets """ 
+    def rowsets_table_name = """ test_query_sys_db_1.test_query_rowset """  
+    sql """ drop table if exists ${rowsets_table_name}  """ 
+
+    sql """ 
+        create table ${rowsets_table_name}( 
+            a int , 
+            b boolean , 
+            c string ) 
+        DISTRIBUTED BY HASH(`a`) BUCKETS 1 
+        PROPERTIES (
+            "replication_num" = "1",
+            "disable_auto_compaction" = "true",
+            "enable_single_replica_compaction"="true"
+        );
+    """
+    
+    List<List<Object>> rowsets_table_name_tablets   = sql """ show tablets 
from ${rowsets_table_name} """
+    order_qt_rowsets1 """  select START_VERSION,END_VERSION from 
information_schema.rowsets where TABLET_ID=${rowsets_table_name_tablets[0][0]}  
order by START_VERSION,END_VERSION; """ 
+    sql """ insert into  ${rowsets_table_name} values (1,0,"abc");  """ 
+    order_qt_rowsets2 """  select START_VERSION,END_VERSION from 
information_schema.rowsets where TABLET_ID=${rowsets_table_name_tablets[0][0]}  
order by START_VERSION,END_VERSION; """ 
+    sql """ insert into  ${rowsets_table_name} values (2,1,"hello world");  
""" 
+    sql """ insert into  ${rowsets_table_name} values (3,0,"dssadasdsafafdf"); 
 """ 
+    order_qt_rowsets3 """  select START_VERSION,END_VERSION from 
information_schema.rowsets where TABLET_ID=${rowsets_table_name_tablets[0][0]}  
order by START_VERSION,END_VERSION; """ 
+
 
     // test schemata
     // create test dbs


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to