morningman commented on code in PR #40153:
URL: https://github.com/apache/doris/pull/40153#discussion_r1739585193


##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
olapTable.getPartitionInfo().getPartitionRangeString(partition.getId())));
+                trow.addToColumnValue(new TCell().setIntVal(0)); //TABLE_ROWS 
(not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//AVG_ROW_LENGTH (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); //DATA_LENGTH 
(not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//MAX_DATA_LENGTH (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//INDEX_LENGTH (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); //DATA_FREE 
(not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
TimeUtils.longToTimeString(partition.getVisibleVersionTime()))); //CREATE_TIME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
UPDATE_TIME (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
CHECK_TIME (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); //CHECKSUM 
(not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
PARTITION_COMMENT (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
NODEGROUP (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
TABLESPACE_NAME (not available)
+                dataBatch.add(trow);
+            }
+        } // for table
+    }
+
+    private static void partitionsForExternalCatalog(UserIdentity 
currentUserIdentity,
+            CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+            // TODO
+        } // for table
+    }
+
+    private static TFetchSchemaTableDataResult 
partitionsMetadataResult(TSchemaTableRequestParams params) {
+        if (!params.isSetCurrentUserIdent()) {
+            return errorResult("current user ident is not set.");
+        }
+
+        if (!params.isSetDbId()) {
+            return errorResult("current db id is not set.");
+        }
+
+        if (!params.isSetCatalog()) {
+            return errorResult("current catalog is not set.");
+        }
+
+        TUserIdentity tcurrentUserIdentity = params.getCurrentUserIdent();
+        UserIdentity currentUserIdentity = 
UserIdentity.fromThrift(tcurrentUserIdentity);
+        TFetchSchemaTableDataResult result = new TFetchSchemaTableDataResult();
+        Long dbId = params.getDbId();
+        String clg = params.getCatalog();
+        CatalogIf catalog = 
Env.getCurrentEnv().getCatalogMgr().getCatalog(clg);

Review Comment:
   `catalog` may be null



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)

Review Comment:
   ```suggestion
                   trow.addToColumnValue(new TCell().setStringVal(partExpr)); 
// PARTITION_EXPRESSION
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";

Review Comment:
   PARTITION_EXPRESSION:
   For non partition table, this field should be NULL.
   And for partition table, I think we should ``col1``, not `[`col1`]`
   
   you can refer to 
https://dev.mysql.com/doc/refman/8.4/en/information-schema-partitions-table.html



##########
be/src/exec/schema_scanner/schema_partitions_scanner.cpp:
##########
@@ -22,10 +22,14 @@
 #include <stdint.h>
 
 #include "exec/schema_scanner/schema_helper.h"
-#include "runtime/decimalv2_value.h"
-#include "runtime/define_primitive_type.h"
-#include "util/runtime_profile.h"
+#include "runtime/client_cache.h"
+#include "runtime/exec_env.h"
+#include "runtime/runtime_state.h"
+#include "schema_scanner_helper.h"

Review Comment:
   ```suggestion
   #include "exec/schema_scanner/schema_scanner_helper.h"
   ```
   and notice the include order



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
olapTable.getPartitionInfo().getPartitionRangeString(partition.getId())));

Review Comment:
   For partition range, how about refer to mysql?
   
![image](https://github.com/user-attachments/assets/99910860-4956-4df4-a6a9-49349412a8e4)
   



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
olapTable.getPartitionInfo().getPartitionRangeString(partition.getId())));
+                trow.addToColumnValue(new TCell().setIntVal(0)); //TABLE_ROWS 
(not available)

Review Comment:
   table rows is available



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
olapTable.getPartitionInfo().getPartitionRangeString(partition.getId())));
+                trow.addToColumnValue(new TCell().setIntVal(0)); //TABLE_ROWS 
(not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//AVG_ROW_LENGTH (not available)

Review Comment:
   these row length are available.
   You can see `FrontendServiceImpl#listTableStatus()`
   But those are for table level, we need to add partition level methods



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
olapTable.getPartitionInfo().getPartitionRangeString(partition.getId())));
+                trow.addToColumnValue(new TCell().setIntVal(0)); //TABLE_ROWS 
(not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//AVG_ROW_LENGTH (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); //DATA_LENGTH 
(not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//MAX_DATA_LENGTH (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//INDEX_LENGTH (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); //DATA_FREE 
(not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
TimeUtils.longToTimeString(partition.getVisibleVersionTime()))); //CREATE_TIME

Review Comment:
   Actually, the `visible version time` is update time.
   We don't have `create time`



##########
fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java:
##########
@@ -1250,4 +1266,110 @@ private static TFetchSchemaTableDataResult 
tablePropertiesMetadataResult(TSchema
         result.setStatus(new TStatus(TStatusCode.OK));
         return result;
     }
+
+    private static void partitionsForInternalCatalog(UserIdentity 
currentUserIdentity,
+                CatalogIf catalog, DatabaseIf database, List<TableIf> tables, 
List<TRow> dataBatch) {
+        for (TableIf table : tables) {
+            if (!(table instanceof OlapTable)) {
+                continue;
+            }
+            if 
(!Env.getCurrentEnv().getAccessManager().checkTblPriv(currentUserIdentity, 
catalog.getName(),
+                    database.getFullName(), table.getName(), 
PrivPredicate.SHOW)) {
+                continue;
+            }
+
+            OlapTable olapTable = (OlapTable) table;
+            Collection<Partition> allPartitions = olapTable.getAllPartitions();
+
+            for (Partition partition : allPartitions) {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(new 
TCell().setStringVal(partition.getName())); // PARTITION_NAME
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_NAME (not available)
+
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//PARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setIntVal(0)); 
//SUBPARTITION_ORDINAL_POSITION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        olapTable.getPartitionInfo().getType().toString())); 
// PARTITION_METHOD
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_METHOD
+                ArrayList<Expr> expr = 
olapTable.getPartitionInfo().getPartitionExprs();
+                String partExpr = (expr != null) ? 
olapTable.getPartitionInfo().getPartitionExprs().toString() : "";
+
+                trow.addToColumnValue(new TCell().setStringVal(partExpr)); // 
PARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal("")); // 
SUBPARTITION_EXPRESSION (not available)
+                trow.addToColumnValue(new TCell().setStringVal(
+                        
olapTable.getPartitionInfo().getPartitionRangeString(partition.getId())));

Review Comment:
   
![image](https://github.com/user-attachments/assets/2d42f65c-1d05-4314-8a8d-87a7d6ca89eb)
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to