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 f94e0b41ee4 [feat](desc) add comment column in desc statement (#51047)
f94e0b41ee4 is described below

commit f94e0b41ee4817c0e10c8edc8ba5e0b8e1520adb
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Sat May 24 15:24:59 2025 +0800

    [feat](desc) add comment column in desc statement (#51047)
    
    ### What problem does this PR solve?
    
    Add a new session variable `show_column_comment_in_describe`.
    Default is false, when set to true, the `describe table` statement will
    show column comment:
    
    ```
    Doris > desc internal.db.table;
    +-------+------+------+-------+---------+-------+--------------+
    | Field | Type | Null | Key   | Default | Extra | Comment      |
    +-------+------+------+-------+---------+-------+--------------+
    | k1    | int  | Yes  | true  | NULL    |       | first column |
    | k2    | text | Yes  | false | NULL    | NONE  |              |
    | k3    | text | Yes  | false | NULL    | NONE  | 中文column   |
    +-------+------+------+-------+---------+-------+--------------+
    ```
    
    This will also affect `show proc` statement:
    
    ```
    Doris > show proc 
'/catalogs/1747727318757/2272230635936012419/4443123596601666371/index_schema/4443123596601666371';
    
+---------------+----------------+------+------+---------+-------+----------------------------------------------------------------------------+
    | Field         | Type           | Null | Key  | Default | Extra | Comment  
                                                                  |
    
+---------------+----------------+------+------+---------+-------+----------------------------------------------------------------------------+
    | user_id       | text           | Yes  | true | NULL    |       | Unique 
identifier for the user                                             |
    | item_id       | text           | Yes  | true | NULL    |       | Unique 
identifier for the product                                          |
    | category_id   | text           | Yes  | true | NULL    |       | Category 
ID of the product                                                 |
    | behavior_type | text           | Yes  | true | NULL    |       | 
行为类型,包含pv(浏览)、buy(购买)、cart(加购)、fav(收藏)                   |
    | user_age      | tinyint        | Yes  | true | NULL    |       | Age 
group of the user (1=18-25, 2=26-30, 3=31-35, 4=36-40, 5=40+)          |
    | gender        | text           | Yes  | true | NULL    |       | User 
gender (0=female, 1=male, null=unknown)                               |
    | province      | text           | Yes  | true | NULL    |       | Province 
where the user is located                                         |
    | city          | text           | Yes  | true | NULL    |       | City 
where the user is located                                             |
    | behavior_time | datetime(6)    | Yes  | true | NULL    |       | 
Timestamp when the behavior occurred                                       |
    | behavior_date | date           | Yes  | true | NULL    |       | Date 
when the behavior occurred                                            |
    | dt            | varchar(65533) | Yes  | true | NULL    |       | 
Partition field in yyyy-MM-dd format                                       |
    
+---------------+----------------+------+------+---------+-------+----------------------------------------------------------------------------+
    
    Doris > show proc 
'/dbs/1747727318758/1747727318760/index_schema/1747727318761';
    +-------+------+------+-------+---------+-------+--------------+
    | Field | Type | Null | Key   | Default | Extra | Comment      |
    +-------+------+------+-------+---------+-------+--------------+
    | k1    | int  | Yes  | true  | NULL    |       | first column |
    | k2    | text | Yes  | false | NULL    | NONE  |              |
    | k3    | text | Yes  | false | NULL    | NONE  | 中文column   |
    +-------+------+------+-------+---------+-------+--------------+
    ```
---
 .../org/apache/doris/analysis/DescribeStmt.java    |   5 +
 .../doris/common/proc/IndexSchemaProcNode.java     |  49 +++++--
 .../common/proc/RemoteIndexSchemaProcDir.java      |   2 +-
 .../common/proc/RemoteIndexSchemaProcNode.java     |   2 +-
 .../trees/plans/commands/DescribeCommand.java      |  17 ++-
 .../java/org/apache/doris/qe/SessionVariable.java  |   9 ++
 .../test_external_and_internal_describe.out        | Bin 0 -> 2972 bytes
 .../test_external_and_internal_describe.groovy     | 163 +++++++++++++++++++++
 8 files changed, 228 insertions(+), 19 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DescribeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DescribeStmt.java
index 1b117d5c243..29ade962cfa 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DescribeStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DescribeStmt.java
@@ -100,6 +100,7 @@ public class DescribeStmt extends ShowStmt implements 
NotFallbackInParser {
 
     private boolean isAllTables;
     private boolean isOlapTable = false;
+    private boolean showComment = false;
 
     TableValuedFunctionRef tableValuedFunctionRef;
     boolean isTableValuedFunction;
@@ -357,6 +358,7 @@ public class DescribeStmt extends ShowStmt implements 
NotFallbackInParser {
             if (isTableValuedFunction) {
                 return totalRows;
             }
+            showComment = 
ConnectContext.get().getSessionVariable().showColumnCommentInDescribe;
             Preconditions.checkNotNull(node);
             List<List<String>> rows = node.fetchResult().getRows();
             List<List<String>> res = new ArrayList<>();
@@ -383,6 +385,9 @@ public class DescribeStmt extends ShowStmt implements 
NotFallbackInParser {
             for (String col : IndexSchemaProcNode.TITLE_NAMES) {
                 builder.addColumn(new Column(col, 
ScalarType.createVarchar(30)));
             }
+            if (showComment) {
+                builder.addColumn(new 
Column(IndexSchemaProcNode.COMMENT_COLUMN_TITLE, 
ScalarType.createStringType()));
+            }
             return builder.build();
         } else {
             if (isOlapTable) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java
 
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java
index 7ffff0c449a..31373ac781c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java
@@ -20,13 +20,13 @@ package org.apache.doris.common.proc;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.FeConstants;
+import org.apache.doris.qe.ConnectContext;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.lang3.StringUtils;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
@@ -39,6 +39,7 @@ public class IndexSchemaProcNode implements ProcNodeInterface 
{
             .add("Field").add("Type").add("Null").add("Key")
             .add("Default").add("Extra")
             .build();
+    public static final String COMMENT_COLUMN_TITLE = "Comment";
 
     private final List<Column> schema;
     private final Set<String> bfColumns;
@@ -48,10 +49,21 @@ public class IndexSchemaProcNode implements 
ProcNodeInterface {
         this.bfColumns = bfColumns;
     }
 
-    public static ProcResult createResult(List<Column> schema, Set<String> 
bfColumns) throws AnalysisException {
+    public static ProcResult createResult(List<Column> schema, Set<String> 
bfColumns, List<String> additionalColNames) {
         Preconditions.checkNotNull(schema);
         BaseProcResult result = new BaseProcResult();
-        result.setNames(TITLE_NAMES);
+        List<String> names = Lists.newArrayList(TITLE_NAMES);
+        for (String additionalColName : additionalColNames) {
+            switch (additionalColName.toLowerCase()) {
+                case "comment":
+                    names.add(COMMENT_COLUMN_TITLE);
+                    break;
+                default:
+                    Preconditions.checkState(false, "Unknown additional column 
name: " + additionalColName);
+                    break;
+            }
+        }
+        result.setNames(names);
 
         for (Column column : schema) {
             // Extra string (aggregation and bloom filter)
@@ -69,14 +81,26 @@ public class IndexSchemaProcNode implements 
ProcNodeInterface {
                 extras.add("STORED GENERATED");
             }
             String extraStr = StringUtils.join(extras, ",");
+            String comment = column.getComment();
 
-            List<String> rowList = Arrays.asList(column.getDisplayName(),
-                                                 
column.getOriginType().hideVersionForVersionColumn(true),
-                                                 column.isAllowNull() ? "Yes" 
: "No",
-                                                 ((Boolean) 
column.isKey()).toString(),
-                                                 column.getDefaultValue() == 
null
-                                                         ? 
FeConstants.null_string : column.getDefaultValue(),
-                                                 extraStr);
+            List<String> rowList = Lists.newArrayList(column.getDisplayName(),
+                    column.getOriginType().hideVersionForVersionColumn(true),
+                    column.isAllowNull() ? "Yes" : "No",
+                    ((Boolean) column.isKey()).toString(),
+                    column.getDefaultValue() == null
+                            ? FeConstants.null_string : 
column.getDefaultValue(),
+                    extraStr, comment);
+
+            for (String additionalColName : additionalColNames) {
+                switch (additionalColName.toLowerCase()) {
+                    case "comment":
+                        rowList.add(column.getComment());
+                        break;
+                    default:
+                        Preconditions.checkState(false, "Unknown additional 
column name: " + additionalColName);
+                        break;
+                }
+            }
             result.addRow(rowList);
         }
         return result;
@@ -84,6 +108,9 @@ public class IndexSchemaProcNode implements 
ProcNodeInterface {
 
     @Override
     public ProcResult fetchResult() throws AnalysisException {
-        return createResult(this.schema, this.bfColumns);
+        boolean showCommentInDescribe = ConnectContext.get() == null ? false
+                : 
ConnectContext.get().getSessionVariable().showColumnCommentInDescribe;
+        return createResult(this.schema, this.bfColumns,
+                showCommentInDescribe ? 
Lists.newArrayList(COMMENT_COLUMN_TITLE) : Lists.newArrayList());
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcDir.java
 
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcDir.java
index f2531b7ec15..05a029ccd04 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcDir.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcDir.java
@@ -70,7 +70,7 @@ public class RemoteIndexSchemaProcDir implements 
ProcDirInterface {
         }
         List<Column> remoteSchema = new 
FetchRemoteTabletSchemaUtil(tablets).fetch();
         this.schema.addAll(remoteSchema);
-        return IndexSchemaProcNode.createResult(this.schema, this.bfColumns);
+        return IndexSchemaProcNode.createResult(this.schema, this.bfColumns, 
Lists.newArrayList());
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcNode.java
 
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcNode.java
index cdb1bbc133e..997f51556a5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcNode.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/common/proc/RemoteIndexSchemaProcNode.java
@@ -73,6 +73,6 @@ public class RemoteIndexSchemaProcNode implements 
ProcNodeInterface {
         }
         List<Column> remoteSchema = new 
FetchRemoteTabletSchemaUtil(tablets).fetch();
         this.schema.addAll(remoteSchema);
-        return IndexSchemaProcNode.createResult(this.schema, this.bfColumns);
+        return IndexSchemaProcNode.createResult(this.schema, this.bfColumns, 
Lists.newArrayList());
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DescribeCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DescribeCommand.java
index a170880ca1e..e12dce97142 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DescribeCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DescribeCommand.java
@@ -84,6 +84,7 @@ public class DescribeCommand extends ShowCommand {
     private TableNameInfo dbTableName;
     private boolean isAllTables = false;
     private boolean isOlapTable = false;
+    private boolean showComment = false;
 
     private PartitionNamesInfo partitionNames;
 
@@ -91,7 +92,6 @@ public class DescribeCommand extends ShowCommand {
     private boolean isTableValuedFunction;
 
     private List<List<String>> rows = new LinkedList<List<String>>();
-    private ProcNodeInterface node;
 
     public DescribeCommand(TableNameInfo dbTableName, boolean isAllTables, 
PartitionNamesInfo partitionNames) {
         super(PlanType.DESCRIBE);
@@ -155,12 +155,16 @@ public class DescribeCommand extends ShowCommand {
     /**
      * getMetaData
      */
+    @Override
     public ShowResultSetMetaData getMetaData() {
         if (!isAllTables) {
             ShowResultSetMetaData.Builder builder = 
ShowResultSetMetaData.builder();
             for (String col : IndexSchemaProcNode.TITLE_NAMES) {
                 builder.addColumn(new Column(col, 
ScalarType.createVarchar(30)));
             }
+            if (showComment) {
+                builder.addColumn(new 
Column(IndexSchemaProcNode.COMMENT_COLUMN_TITLE, 
ScalarType.createStringType()));
+            }
             return builder.build();
         } else {
             if (isOlapTable) {
@@ -174,8 +178,8 @@ public class DescribeCommand extends ShowCommand {
     /**
      * validateTableValuedFunction
      */
-    public void validateTableValuedFunction(ConnectContext ctx, String 
funcName) throws AnalysisException {
-        // check privilige for backends/local tvf
+    private void validateTableValuedFunction(ConnectContext ctx, String 
funcName) throws AnalysisException {
+        // check privilege for backends/local tvf
         if (funcName.equalsIgnoreCase(BackendsTableValuedFunction.NAME)
                 || funcName.equalsIgnoreCase(LocalTableValuedFunction.NAME)) {
             if (!Env.getCurrentEnv().getAccessManager().checkGlobalPriv(ctx, 
PrivPredicate.ADMIN)
@@ -270,11 +274,11 @@ public class DescribeCommand extends ShowCommand {
                     builder.deleteCharAt(builder.length() - 1);
                     procString += builder.toString();
                 }
-                node = ProcService.getInstance().open(procString);
+                ProcNodeInterface node = 
ProcService.getInstance().open(procString);
                 if (node == null) {
                     throw new AnalysisException("Describe table[" + 
dbTableName.getTbl() + "] failed");
                 }
-                rows.addAll(getResultRows());
+                rows.addAll(getResultRows(node));
             } else {
                 Util.prohibitExternalCatalog(dbTableName.getCtl(), 
this.getClass().getSimpleName() + " ALL");
                 if (table instanceof OlapTable) {
@@ -420,7 +424,8 @@ public class DescribeCommand extends ShowCommand {
     /**
      * getResultRows
      */
-    public List<List<String>> getResultRows() throws AnalysisException {
+    private List<List<String>> getResultRows(ProcNodeInterface node) throws 
AnalysisException {
+        showComment = 
ConnectContext.get().getSessionVariable().showColumnCommentInDescribe;
         Preconditions.checkNotNull(node);
         List<List<String>> rows = node.fetchResult().getRows();
         List<List<String>> res = new ArrayList<>();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index 69a453a3b16..6feadb229a7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -737,6 +737,8 @@ public class SessionVariable implements Serializable, 
Writable {
 
     public static final String ENABLE_SQL_CONVERTOR_FEATURES = 
"enable_sql_convertor_features";
 
+    public static final String SHOW_COLUMN_COMMENT_IN_DESCRIBE = 
"show_column_comment_in_describe";
+
     public static final String SQL_CONVERTOR_CONFIG = "sql_convertor_config";
 
     /**
@@ -2596,6 +2598,13 @@ public class SessionVariable implements Serializable, 
Writable {
             })
     public String enableSqlConvertorFeatures = "";
 
+    @VariableMgr.VarAttr(name = SHOW_COLUMN_COMMENT_IN_DESCRIBE, needForward = 
true,
+            description = {
+                    "是否在 DESCRIBE TABLE 语句中显示列注释",
+                    "whether to show column comments in DESCRIBE TABLE 
statement"
+            })
+    public boolean showColumnCommentInDescribe = false;
+
     @VariableMgr.VarAttr(name = SQL_CONVERTOR_CONFIG, needForward = true,
             description = {
                     "SQL 转换器的相关配置,使用 Json 格式。以 {} 为根元素。",
diff --git 
a/regression-test/data/external_table_p0/test_external_and_internal_describe.out
 
b/regression-test/data/external_table_p0/test_external_and_internal_describe.out
new file mode 100644
index 00000000000..4ee6d9cf4cb
Binary files /dev/null and 
b/regression-test/data/external_table_p0/test_external_and_internal_describe.out
 differ
diff --git 
a/regression-test/suites/external_table_p0/test_external_and_internal_describe.groovy
 
b/regression-test/suites/external_table_p0/test_external_and_internal_describe.groovy
new file mode 100644
index 00000000000..fde81af64d7
--- /dev/null
+++ 
b/regression-test/suites/external_table_p0/test_external_and_internal_describe.groovy
@@ -0,0 +1,163 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_external_and_internal_describe", 
"p0,external,hive,external_docker,external_docker_hive") {
+    String catalog_name = "test_test_external_describe"
+
+    String enabled = context.config.otherConfigs.get("enableHiveTest")
+    if (enabled != null && enabled.equalsIgnoreCase("true")) {
+        for (String hivePrefix : ["hive3"]) {
+            setHivePrefix(hivePrefix)
+            String externalEnvIp = 
context.config.otherConfigs.get("externalEnvIp")
+            String hmsPort = context.config.otherConfigs.get(hivePrefix + 
"HmsPort")
+            String hdfs_port = context.config.otherConfigs.get(hivePrefix + 
"HdfsPort")
+
+            // 1. test default catalog
+            sql """drop catalog if exists ${catalog_name};"""
+            sql """
+            create catalog ${catalog_name} properties (
+                'type'='hms',
+                'hadoop.username' = 'hadoop',
+                'hive.metastore.uris' = 'thrift://${externalEnvIp}:${hmsPort}',
+                'fs.defaultFS' = 'hdfs://${externalEnvIp}:${hdfs_port}'
+            );
+            """
+            sql """switch ${catalog_name}"""
+            hive_docker """drop database if exists test_external_describe 
CASCADE"""
+            hive_docker """create database test_external_describe"""
+            hive_docker """
+                CREATE TABLE IF NOT EXISTS 
test_external_describe.user_behavior_log (
+                    user_id STRING COMMENT 'Unique identifier for the user',
+                    item_id STRING COMMENT 'Unique identifier for the product',
+                    category_id STRING COMMENT 'Category ID of the product',
+                    behavior_type STRING COMMENT 
'行为类型,包含pv(浏览)、buy(购买)、cart(加购)、fav(收藏)',
+                    user_age TINYINT COMMENT 'Age group of the user (1=18-25, 
2=26-30, 3=31-35, 4=36-40, 5=40+)',
+                    gender STRING COMMENT 'User gender (0=female, 1=male, 
null=unknown)',
+                    province STRING COMMENT 'Province where the user is 
located',
+                    city STRING COMMENT 'City where the user is located',
+                    behavior_time TIMESTAMP COMMENT 'Timestamp when the 
behavior occurred',
+                    behavior_date DATE COMMENT 'Date when the behavior 
occurred'
+                )
+                COMMENT 'Log table for user behaviors'
+                PARTITIONED BY (dt STRING COMMENT 'Partition field in 
yyyy-MM-dd format')
+                STORED AS PARQUET
+            """
+            // no comment
+            sql """set show_column_comment_in_describe = false"""
+            qt_desc01 """desc test_external_describe.user_behavior_log"""
+            // set show comment
+            sql """set show_column_comment_in_describe = true"""
+            qt_desc02 """desc test_external_describe.user_behavior_log"""
+
+            sql """unset variable show_column_comment_in_describe;"""
+
+            // test show proc
+            def show_proc_string = """/catalogs/"""
+            List<List<Object>> res = sql """show proc '${show_proc_string}'"""
+            for (int i = 0; i < res.size(); i++) {
+                if (res[i][1].equals("test_test_external_describe")) {
+                    show_proc_string = """${show_proc_string}${res[i][0]}/"""
+                }
+            }
+            // show proc "/catalogs/1747727318719/"
+            res = sql """show proc '${show_proc_string}'"""
+            for (int i = 0; i < res.size(); i++) {
+                if (res[i][1].equals("test_external_describe")) {
+                    show_proc_string = """${show_proc_string}${res[i][0]}/"""
+                }
+            }
+            // show proc "/catalogs/1747727318719/2272230635936012419/"
+            res = sql """show proc '${show_proc_string}'"""
+            for (int i = 0; i < res.size(); i++) {
+                if (res[i][1].equals("user_behavior_log")) {
+                    show_proc_string = 
"""${show_proc_string}${res[i][0]}/index_schema/"""
+                }
+            }
+            // show proc 
"/catalogs/1747727318719/2272230635936012419/4443123596601666371/index_schema"
+            res = sql """show proc '${show_proc_string}'"""
+            for (int i = 0; i < res.size(); i++) {
+                if (res[i][1].equals("user_behavior_log")) {
+                    show_proc_string = """${show_proc_string}${res[i][0]}"""
+                }
+            }
+            sql """set show_column_comment_in_describe = false"""
+            qt_proc_sql01 """show proc '${show_proc_string}'"""
+            sql """set show_column_comment_in_describe = true""" 
+            qt_proc_sql02 """show proc '${show_proc_string}'"""
+
+            sql """unset variable show_column_comment_in_describe;"""
+            // sql """drop table test_external_describe.user_behavior_log"""
+        }
+
+        // desc internal table
+        sql "switch internal"
+        sql "drop database if exists test_external_and_internal_describe_db"
+        sql "create database test_external_and_internal_describe_db";
+        sql "use test_external_and_internal_describe_db";
+        sql """
+            CREATE TABLE test_external_and_internal_describe_tbl (
+                k1 int COMMENT "first column",
+                k2 string COMMENT "",
+                k3 string COMMENT "中文column"
+            ) DISTRIBUTED BY HASH(k1) BUCKETS 1 PROPERTIES("replication_num" = 
"1");
+        """
+
+        // no comment
+        sql """set show_column_comment_in_describe = false"""
+        qt_desc01 """desc test_external_and_internal_describe_tbl"""
+        // set show comment
+        sql """set show_column_comment_in_describe = true"""
+        qt_desc02 """desc test_external_and_internal_describe_tbl"""
+
+        // test show proc for internal
+        def show_proc_string = """/catalogs/0/"""
+        def show_proc_db_string = """/dbs/"""
+        List<List<Object>> res = sql """show proc '${show_proc_string}'"""
+        for (int i = 0; i < res.size(); i++) {
+            if (res[i][1].equals("test_external_and_internal_describe_db")) {
+                show_proc_string = """${show_proc_string}${res[i][0]}/"""
+                show_proc_db_string = """${show_proc_db_string}${res[i][0]}/"""
+            }
+        }
+        // show proc "/catalogs/0/1747727318719/"
+        res = sql """show proc '${show_proc_string}'"""
+        for (int i = 0; i < res.size(); i++) {
+            if (res[i][1].equals("test_external_and_internal_describe_tbl")) {
+                show_proc_string = 
"""${show_proc_string}${res[i][0]}/index_schema/"""
+                show_proc_db_string = 
"""${show_proc_db_string}${res[i][0]}/index_schema/"""
+            }
+        }
+        // show proc 
"/catalogs/0/1747727318719/2272230635936012419/4443123596601666371/index_schema"
+        res = sql """show proc '${show_proc_string}'"""
+        for (int i = 0; i < res.size(); i++) {
+            if (res[i][1].equals("test_external_and_internal_describe_tbl")) {
+                show_proc_string = """${show_proc_string}${res[i][0]}"""
+                show_proc_db_string = """${show_proc_db_string}${res[i][0]}"""
+            }
+        }
+        sql """set show_column_comment_in_describe = false"""
+        qt_proc_sql01 """show proc '${show_proc_string}'"""
+        qt_proc_db_sql01 """show proc '${show_proc_db_string}'"""
+        sql """set show_column_comment_in_describe = true""" 
+        qt_proc_sql02 """show proc '${show_proc_string}'"""
+        qt_proc_db_sql02 """show proc '${show_proc_db_string}'"""
+
+
+        sql """unset variable show_column_comment_in_describe;"""
+    }
+}
+


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to