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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8c9dbb57c7c Add region group stats to table model database details 
(#17738)
8c9dbb57c7c is described below

commit 8c9dbb57c7c1ad01427651c1dc554bd9056a0fa9
Author: libo <[email protected]>
AuthorDate: Tue Jun 16 11:04:25 2026 +0800

    Add region group stats to table model database details (#17738)
---
 .../relational/it/schema/IoTDBDatabaseIT.java      | 55 +++++++++++++++++-----
 .../manager/schema/ClusterSchemaManager.java       |  4 --
 .../InformationSchemaContentSupplierFactory.java   |  4 +-
 .../config/metadata/relational/ShowDBTask.java     |  4 +-
 .../statement/metadata/ShowDatabaseStatement.java  |  8 ++--
 .../schemaengine/table/InformationSchemaUtils.java |  7 ++-
 .../schema/column/ColumnHeaderConstant.java        | 11 +++--
 .../commons/schema/table/InformationSchema.java    |  6 +++
 .../src/main/thrift/confignode.thrift              |  2 -
 9 files changed, 70 insertions(+), 31 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
index 4eab11ca3c7..58834cb5d79 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
@@ -19,6 +19,8 @@
 
 package org.apache.iotdb.relational.it.schema;
 
+import org.apache.iotdb.commons.schema.table.InformationSchema;
+import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema;
 import org.apache.iotdb.db.it.utils.TestUtils;
 import org.apache.iotdb.it.env.EnvFactory;
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
@@ -41,12 +43,14 @@ import java.sql.Statement;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showDBColumnHeaders;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showDBDetailsColumnHeaders;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -139,6 +143,8 @@ public class IoTDBDatabaseIT {
 
       final int[] schemaRegionGroupNum = new int[] {0};
       final int[] dataRegionGroupNum = new int[] {0};
+      final int[] defaultSchemaRegionGroupNum = new int[] {1};
+      final int[] defaultDataRegionGroupNum = new int[] {2};
       // show
       try (final ResultSet resultSet = statement.executeQuery("SHOW DATABASES 
DETAILS")) {
         int cnt = 0;
@@ -158,7 +164,9 @@ public class IoTDBDatabaseIT {
           assertEquals(dataReplicaFactors[cnt], resultSet.getInt(4));
           assertEquals(timePartitionInterval[cnt], resultSet.getLong(5));
           assertEquals(schemaRegionGroupNum[cnt], resultSet.getInt(6));
-          assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(7));
+          assertTrue(resultSet.getInt(7) >= defaultSchemaRegionGroupNum[cnt]);
+          assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(8));
+          assertTrue(resultSet.getInt(9) >= defaultDataRegionGroupNum[cnt]);
           cnt++;
         }
         assertEquals(databaseNames.length, cnt);
@@ -430,7 +438,9 @@ public class IoTDBDatabaseIT {
                   "data_replication_factor,INT32,ATTRIBUTE,",
                   "time_partition_interval,INT64,ATTRIBUTE,",
                   "schema_region_group_num,INT32,ATTRIBUTE,",
-                  "data_region_group_num,INT32,ATTRIBUTE,")));
+                  "max_schema_region_group_num,INT32,ATTRIBUTE,",
+                  "data_region_group_num,INT32,ATTRIBUTE,",
+                  "max_data_region_group_num,INT32,ATTRIBUTE,")));
       TestUtils.assertResultSetEqual(
           statement.executeQuery("desc tables"),
           "ColumnName,DataType,Category,",
@@ -637,13 +647,36 @@ public class IoTDBDatabaseIT {
       statement.execute(
           "CREATE VIEW test.view_table (tag1 STRING TAG,tag2 STRING TAG,s11 
INT32 FIELD,s3 INT32 FIELD FROM s2) RESTRICT WITH (ttl=100) AS root.\"a\".**");
 
-      TestUtils.assertResultSetEqual(
-          statement.executeQuery("select * from databases"),
-          
"database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,data_region_group_num,",
-          new HashSet<>(
-              Arrays.asList(
-                  "information_schema,INF,null,null,null,null,null,",
-                  "test,INF,1,1,604800000,0,0,")));
+      try (final ResultSet resultSet = statement.executeQuery("select * from 
databases")) {
+        final ResultSetMetaData metaData = resultSet.getMetaData();
+        final List<TsTableColumnSchema> expectedColumnSchemas =
+            
InformationSchema.getSchemaTables().get(InformationSchema.DATABASES).getColumnList();
+        assertEquals(expectedColumnSchemas.size(), metaData.getColumnCount());
+        for (int i = 0; i < expectedColumnSchemas.size(); i++) {
+          assertEquals(expectedColumnSchemas.get(i).getColumnName(), 
metaData.getColumnName(i + 1));
+        }
+
+        int cnt = 0;
+        while (resultSet.next()) {
+          if ("information_schema".equals(resultSet.getString(1))) {
+            for (int columnIndex = 3; columnIndex <= 9; columnIndex++) {
+              assertNull(resultSet.getObject(columnIndex));
+            }
+          } else {
+            assertEquals("test", resultSet.getString(1));
+            assertEquals("INF", resultSet.getString(2));
+            assertEquals(1, resultSet.getInt(3));
+            assertEquals(1, resultSet.getInt(4));
+            assertEquals(604800000, resultSet.getLong(5));
+            assertEquals(0, resultSet.getInt(6));
+            assertTrue(resultSet.getInt(7) >= 1);
+            assertEquals(0, resultSet.getInt(8));
+            assertTrue(resultSet.getInt(9) >= 2);
+          }
+          cnt++;
+        }
+        assertEquals(2, cnt);
+      }
       TestUtils.assertResultSetEqual(
           statement.executeQuery("show devices from tables where status = 
'USING'"),
           "database,table_name,ttl(ms),status,comment,table_type,",
@@ -870,8 +903,8 @@ public class IoTDBDatabaseIT {
           Collections.singleton("information_schema,INF,null,null,null,"));
       TestUtils.assertResultSetEqual(
           userStmt.executeQuery("select * from information_schema.databases"),
-          
"database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,data_region_group_num,",
-          
Collections.singleton("information_schema,INF,null,null,null,null,null,"));
+          
"database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,max_schema_region_group_num,data_region_group_num,max_data_region_group_num,",
+          
Collections.singleton("information_schema,INF,null,null,null,null,null,null,null,"));
     }
 
     try (final Connection adminCon = 
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
index cfecd8e0114..fbf62d8f1dd 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
@@ -389,12 +389,8 @@ public class ClusterSchemaManager {
       
databaseInfo.setDataReplicationFactor(databaseSchema.getDataReplicationFactor());
       
databaseInfo.setTimePartitionOrigin(databaseSchema.getTimePartitionOrigin());
       
databaseInfo.setTimePartitionInterval(databaseSchema.getTimePartitionInterval());
-      databaseInfo.setMinSchemaRegionNum(
-          getMinRegionGroupNum(database, TConsensusGroupType.SchemaRegion));
       databaseInfo.setMaxSchemaRegionNum(
           getMaxRegionGroupNum(database, TConsensusGroupType.SchemaRegion));
-      databaseInfo.setMinDataRegionNum(
-          getMinRegionGroupNum(database, TConsensusGroupType.DataRegion));
       databaseInfo.setMaxDataRegionNum(
           getMaxRegionGroupNum(database, TConsensusGroupType.DataRegion));
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
index ca9c09ecb95..3b2c7e13bac 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
@@ -345,7 +345,9 @@ public class InformationSchemaContentSupplierFactory {
       columnBuilders[3].writeInt(currentDatabase.getDataReplicationFactor());
       columnBuilders[4].writeLong(currentDatabase.getTimePartitionInterval());
       columnBuilders[5].writeInt(currentDatabase.getSchemaRegionNum());
-      columnBuilders[6].writeInt(currentDatabase.getDataRegionNum());
+      columnBuilders[6].writeInt(currentDatabase.getMaxSchemaRegionNum());
+      columnBuilders[7].writeInt(currentDatabase.getDataRegionNum());
+      columnBuilders[8].writeInt(currentDatabase.getMaxDataRegionNum());
       resultBuilder.declarePosition();
       currentDatabase = null;
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowDBTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowDBTask.java
index ba8ed54541a..128458888dc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowDBTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowDBTask.java
@@ -166,7 +166,9 @@ public class ShowDBTask implements IConfigTask {
       
builder.getColumnBuilder(3).writeInt(storageGroupInfo.getDataReplicationFactor());
       
builder.getColumnBuilder(4).writeLong(storageGroupInfo.getTimePartitionInterval());
       
builder.getColumnBuilder(5).writeInt(storageGroupInfo.getSchemaRegionNum());
-      
builder.getColumnBuilder(6).writeInt(storageGroupInfo.getDataRegionNum());
+      
builder.getColumnBuilder(6).writeInt(storageGroupInfo.getMaxSchemaRegionNum());
+      
builder.getColumnBuilder(7).writeInt(storageGroupInfo.getDataRegionNum());
+      
builder.getColumnBuilder(8).writeInt(storageGroupInfo.getMaxDataRegionNum());
       builder.declarePosition();
     }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
index e1a53662242..2367aa0c312 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
@@ -101,11 +101,9 @@ public class ShowDatabaseStatement extends ShowStatement 
implements IConfigState
       
builder.getColumnBuilder(4).writeLong(databaseInfo.getTimePartitionInterval());
       if (isDetailed) {
         
builder.getColumnBuilder(5).writeInt(databaseInfo.getSchemaRegionNum());
-        
builder.getColumnBuilder(6).writeInt(databaseInfo.getMinSchemaRegionNum());
-        
builder.getColumnBuilder(7).writeInt(databaseInfo.getMaxSchemaRegionNum());
-        builder.getColumnBuilder(8).writeInt(databaseInfo.getDataRegionNum());
-        
builder.getColumnBuilder(9).writeInt(databaseInfo.getMinDataRegionNum());
-        
builder.getColumnBuilder(10).writeInt(databaseInfo.getMaxDataRegionNum());
+        
builder.getColumnBuilder(6).writeInt(databaseInfo.getMaxSchemaRegionNum());
+        builder.getColumnBuilder(7).writeInt(databaseInfo.getDataRegionNum());
+        
builder.getColumnBuilder(8).writeInt(databaseInfo.getMaxDataRegionNum());
       }
       builder.declarePosition();
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/InformationSchemaUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/InformationSchemaUtils.java
index f736c96ee76..443352ae919 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/InformationSchemaUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/InformationSchemaUtils.java
@@ -74,8 +74,11 @@ public class InformationSchemaUtils {
     builder.getColumnBuilder(3).appendNull();
     builder.getColumnBuilder(4).appendNull();
     if (details) {
-      builder.getColumnBuilder(5).appendNull();
-      builder.getColumnBuilder(6).appendNull();
+      for (int columnIndex = 5;
+          columnIndex < builder.getValueColumnBuilders().length;
+          columnIndex++) {
+        builder.getColumnBuilder(columnIndex).appendNull();
+      }
     }
     builder.declarePosition();
   }
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
index 186f7daa684..33c3fe451ca 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
@@ -61,10 +61,8 @@ public class ColumnHeaderConstant {
   public static final String TIME_PARTITION_ORIGIN = "TimePartitionOrigin";
   public static final String TIME_PARTITION_INTERVAL = "TimePartitionInterval";
   public static final String SCHEMA_REGION_GROUP_NUM = "SchemaRegionGroupNum";
-  public static final String MIN_SCHEMA_REGION_GROUP_NUM = 
"MinSchemaRegionGroupNum";
   public static final String MAX_SCHEMA_REGION_GROUP_NUM = 
"MaxSchemaRegionGroupNum";
   public static final String DATA_REGION_GROUP_NUM = "DataRegionGroupNum";
-  public static final String MIN_DATA_REGION_GROUP_NUM = 
"MinDataRegionGroupNum";
   public static final String MAX_DATA_REGION_GROUP_NUM = 
"MaxDataRegionGroupNum";
   public static final String CHILD_PATHS = "ChildPaths";
   public static final String NODE_TYPES = "NodeTypes";
@@ -248,7 +246,10 @@ public class ColumnHeaderConstant {
   public static final String DATA_REPLICATION_FACTOR_TABLE_MODEL = 
"data_replication_factor";
   public static final String TIME_PARTITION_INTERVAL_TABLE_MODEL = 
"time_partition_interval";
   public static final String SCHEMA_REGION_GROUP_NUM_TABLE_MODEL = 
"schema_region_group_num";
+  public static final String MAX_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL =
+      "max_schema_region_group_num";
   public static final String DATA_REGION_GROUP_NUM_TABLE_MODEL = 
"data_region_group_num";
+  public static final String MAX_DATA_REGION_GROUP_NUM_TABLE_MODEL = 
"max_data_region_group_num";
 
   public static final String REGION_ID_TABLE_MODEL = "region_id";
   public static final String DATANODE_ID_TABLE_MODEL = "datanode_id";
@@ -417,10 +418,8 @@ public class ColumnHeaderConstant {
           new ColumnHeader(TIME_PARTITION_ORIGIN, TSDataType.INT64),
           new ColumnHeader(TIME_PARTITION_INTERVAL, TSDataType.INT64),
           new ColumnHeader(SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
-          new ColumnHeader(MIN_SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
           new ColumnHeader(MAX_SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
           new ColumnHeader(DATA_REGION_GROUP_NUM, TSDataType.INT32),
-          new ColumnHeader(MIN_DATA_REGION_GROUP_NUM, TSDataType.INT32),
           new ColumnHeader(MAX_DATA_REGION_GROUP_NUM, TSDataType.INT32));
 
   public static final List<ColumnHeader> showChildPathsColumnHeaders =
@@ -730,7 +729,9 @@ public class ColumnHeaderConstant {
           new ColumnHeader(DATA_REPLICATION_FACTOR, TSDataType.INT32),
           new ColumnHeader(TIME_PARTITION_INTERVAL, TSDataType.INT64),
           new ColumnHeader(SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
-          new ColumnHeader(DATA_REGION_GROUP_NUM, TSDataType.INT32));
+          new ColumnHeader(MAX_SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
+          new ColumnHeader(DATA_REGION_GROUP_NUM, TSDataType.INT32),
+          new ColumnHeader(MAX_DATA_REGION_GROUP_NUM, TSDataType.INT32));
 
   public static final List<ColumnHeader> describeTableColumnHeaders =
       ImmutableList.of(
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
index c4001ecbb1e..27a1dbdd9d2 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
@@ -106,9 +106,15 @@ public class InformationSchema {
     databaseTable.addColumnSchema(
         new AttributeColumnSchema(
             ColumnHeaderConstant.SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, 
TSDataType.INT32));
+    databaseTable.addColumnSchema(
+        new AttributeColumnSchema(
+            ColumnHeaderConstant.MAX_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, 
TSDataType.INT32));
     databaseTable.addColumnSchema(
         new AttributeColumnSchema(
             ColumnHeaderConstant.DATA_REGION_GROUP_NUM_TABLE_MODEL, 
TSDataType.INT32));
+    databaseTable.addColumnSchema(
+        new AttributeColumnSchema(
+            ColumnHeaderConstant.MAX_DATA_REGION_GROUP_NUM_TABLE_MODEL, 
TSDataType.INT32));
     schemaTables.put(DATABASES, databaseTable);
 
     final TsTable tableTable = new TsTable(TABLES);
diff --git a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift 
b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
index e8720d3592c..852460fb60e 100644
--- a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
@@ -736,10 +736,8 @@ struct TDatabaseInfo {
   4: required i32 dataReplicationFactor
   5: required i64 timePartitionInterval
   6: required i32 schemaRegionNum
-  7: required i32 minSchemaRegionNum
   8: required i32 maxSchemaRegionNum
   9: required i32 dataRegionNum
-  10: required i32 minDataRegionNum
   11: required i32 maxDataRegionNum
   12: optional i64 timePartitionOrigin
 }

Reply via email to