From cd448ffe4cd03010b9f1ecaf2f77316896bff583 Mon Sep 17 00:00:00 2001 From: libo Date: Thu, 21 May 2026 17:08:04 +0800 Subject: [PATCH 1/3] Add region group stats to table model database details Expose min/max schema and data RegionGroup numbers in table-model SHOW DATABASES DETAILS and information_schema.databases, keeping the metadata view aligned with tree-model database detail output. --- .../relational/it/schema/IoTDBDatabaseIT.java | 57 +++++++++++++++---- ...formationSchemaContentSupplierFactory.java | 6 +- .../metadata/relational/ShowDBTask.java | 6 +- .../table/InformationSchemaUtils.java | 7 ++- .../schema/column/ColumnHeaderConstant.java | 12 +++- .../schema/table/InformationSchema.java | 12 ++++ 6 files changed, 84 insertions(+), 16 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 2b367b70b2212..ce2ece5e95c5a 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 @@ -138,7 +138,9 @@ public void testManageDatabase() { } final int[] schemaRegionGroupNum = new int[] {0}; + final int[] minSchemaRegionGroupNum = new int[] {1}; final int[] dataRegionGroupNum = new int[] {0}; + final int[] minDataRegionGroupNum = new int[] {2}; // show try (final ResultSet resultSet = statement.executeQuery("SHOW DATABASES DETAILS")) { int cnt = 0; @@ -158,7 +160,11 @@ public void testManageDatabase() { assertEquals(dataReplicaFactors[cnt], resultSet.getInt(4)); assertEquals(timePartitionInterval[cnt], resultSet.getLong(5)); assertEquals(schemaRegionGroupNum[cnt], resultSet.getInt(6)); - assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(7)); + assertEquals(minSchemaRegionGroupNum[cnt], resultSet.getInt(7)); + assertTrue(resultSet.getInt(8) >= minSchemaRegionGroupNum[cnt]); + assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(9)); + assertEquals(minDataRegionGroupNum[cnt], resultSet.getInt(10)); + assertTrue(resultSet.getInt(11) >= minDataRegionGroupNum[cnt]); cnt++; } assertEquals(databaseNames.length, cnt); @@ -430,7 +436,11 @@ public void testInformationSchema() throws SQLException { "data_replication_factor,INT32,ATTRIBUTE,", "time_partition_interval,INT64,ATTRIBUTE,", "schema_region_group_num,INT32,ATTRIBUTE,", - "data_region_group_num,INT32,ATTRIBUTE,"))); + "min_schema_region_group_num,INT32,ATTRIBUTE,", + "max_schema_region_group_num,INT32,ATTRIBUTE,", + "data_region_group_num,INT32,ATTRIBUTE,", + "min_data_region_group_num,INT32,ATTRIBUTE,", + "max_data_region_group_num,INT32,ATTRIBUTE,"))); TestUtils.assertResultSetEqual( statement.executeQuery("desc tables"), "ColumnName,DataType,Category,", @@ -636,13 +646,37 @@ public void testInformationSchema() throws SQLException { 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(); + assertEquals(11, metaData.getColumnCount()); + assertEquals("min_schema_region_group_num", metaData.getColumnName(7)); + assertEquals("max_schema_region_group_num", metaData.getColumnName(8)); + assertEquals("min_data_region_group_num", metaData.getColumnName(10)); + assertEquals("max_data_region_group_num", metaData.getColumnName(11)); + + int cnt = 0; + while (resultSet.next()) { + if ("information_schema".equals(resultSet.getString(1))) { + for (int columnIndex = 3; columnIndex <= 11; columnIndex++) { + Assert.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)); + assertEquals(1, resultSet.getInt(7)); + assertTrue(resultSet.getInt(8) >= resultSet.getInt(7)); + assertEquals(0, resultSet.getInt(9)); + assertEquals(2, resultSet.getInt(10)); + assertTrue(resultSet.getInt(11) >= resultSet.getInt(10)); + } + cnt++; + } + assertEquals(2, cnt); + } TestUtils.assertResultSetEqual( statement.executeQuery("show devices from tables where status = 'USING'"), "database,table_name,ttl(ms),status,comment,table_type,", @@ -844,8 +878,9 @@ public void testDBAuth() throws SQLException { 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,min_schema_region_group_num,max_schema_region_group_num,data_region_group_num,min_data_region_group_num,max_data_region_group_num,", + Collections.singleton( + "information_schema,INF,null,null,null,null,null,null,null,null,null,")); } try (final Connection adminCon = EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT); 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 0dbd86d600c05..6cbfed91971c2 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,11 @@ protected void constructLine() { columnBuilders[3].writeInt(currentDatabase.getDataReplicationFactor()); columnBuilders[4].writeLong(currentDatabase.getTimePartitionInterval()); columnBuilders[5].writeInt(currentDatabase.getSchemaRegionNum()); - columnBuilders[6].writeInt(currentDatabase.getDataRegionNum()); + columnBuilders[6].writeInt(currentDatabase.getMinSchemaRegionNum()); + columnBuilders[7].writeInt(currentDatabase.getMaxSchemaRegionNum()); + columnBuilders[8].writeInt(currentDatabase.getDataRegionNum()); + columnBuilders[9].writeInt(currentDatabase.getMinDataRegionNum()); + columnBuilders[10].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 f5ab58d3ead4f..052f1dc02864f 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,11 @@ private static void buildTSBlockForDetails( 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.getMinSchemaRegionNum()); + builder.getColumnBuilder(7).writeInt(storageGroupInfo.getMaxSchemaRegionNum()); + builder.getColumnBuilder(8).writeInt(storageGroupInfo.getDataRegionNum()); + builder.getColumnBuilder(9).writeInt(storageGroupInfo.getMinDataRegionNum()); + builder.getColumnBuilder(10).writeInt(storageGroupInfo.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 f736c96ee76d0..443352ae919c3 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 static void buildDatabaseTsBlock( 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 186f7daa6846d..d7c5e43b6f1e9 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 @@ -248,7 +248,13 @@ private 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 MIN_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL = + "min_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 MIN_DATA_REGION_GROUP_NUM_TABLE_MODEL = "min_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"; @@ -730,7 +736,11 @@ private 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(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 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 75b71efc75d0c..71e482152bc54 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,21 @@ public class InformationSchema { databaseTable.addColumnSchema( new AttributeColumnSchema( ColumnHeaderConstant.SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); + databaseTable.addColumnSchema( + new AttributeColumnSchema( + ColumnHeaderConstant.MIN_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.MIN_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); From fea9ffec28bd3f0faf1eede84c8e7be4352db628 Mon Sep 17 00:00:00 2001 From: libo Date: Thu, 21 May 2026 23:08:40 +0800 Subject: [PATCH 2/3] fix: append region group stats to information_schema.databases --- .../relational/it/schema/IoTDBDatabaseIT.java | 35 ++++++++++++------- ...formationSchemaContentSupplierFactory.java | 6 ++-- .../metadata/relational/ShowDBTask.java | 6 ++-- .../schema/column/ColumnHeaderConstant.java | 2 +- .../schema/table/InformationSchema.java | 6 ++-- 5 files changed, 32 insertions(+), 23 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 ce2ece5e95c5a..660bae4ca8cf1 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 @@ -25,6 +25,8 @@ import org.apache.iotdb.itbase.category.TableClusterIT; import org.apache.iotdb.itbase.category.TableLocalStandaloneIT; import org.apache.iotdb.itbase.env.BaseEnv; +import org.apache.iotdb.commons.schema.table.InformationSchema; +import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema; import org.junit.After; import org.junit.Assert; @@ -41,12 +43,14 @@ 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; @@ -138,6 +142,7 @@ public void testManageDatabase() { } final int[] schemaRegionGroupNum = new int[] {0}; + // Default min region group numbers come from ConfigNodeConfig (schema = 1, data = 2). final int[] minSchemaRegionGroupNum = new int[] {1}; final int[] dataRegionGroupNum = new int[] {0}; final int[] minDataRegionGroupNum = new int[] {2}; @@ -160,9 +165,9 @@ public void testManageDatabase() { assertEquals(dataReplicaFactors[cnt], resultSet.getInt(4)); assertEquals(timePartitionInterval[cnt], resultSet.getLong(5)); assertEquals(schemaRegionGroupNum[cnt], resultSet.getInt(6)); - assertEquals(minSchemaRegionGroupNum[cnt], resultSet.getInt(7)); - assertTrue(resultSet.getInt(8) >= minSchemaRegionGroupNum[cnt]); - assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(9)); + assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(7)); + assertEquals(minSchemaRegionGroupNum[cnt], resultSet.getInt(8)); + assertTrue(resultSet.getInt(9) >= minSchemaRegionGroupNum[cnt]); assertEquals(minDataRegionGroupNum[cnt], resultSet.getInt(10)); assertTrue(resultSet.getInt(11) >= minDataRegionGroupNum[cnt]); cnt++; @@ -648,17 +653,21 @@ public void testInformationSchema() throws SQLException { try (final ResultSet resultSet = statement.executeQuery("select * from databases")) { final ResultSetMetaData metaData = resultSet.getMetaData(); - assertEquals(11, metaData.getColumnCount()); - assertEquals("min_schema_region_group_num", metaData.getColumnName(7)); - assertEquals("max_schema_region_group_num", metaData.getColumnName(8)); - assertEquals("min_data_region_group_num", metaData.getColumnName(10)); - assertEquals("max_data_region_group_num", metaData.getColumnName(11)); + final List 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 <= 11; columnIndex++) { - Assert.assertNull(resultSet.getObject(columnIndex)); + assertNull(resultSet.getObject(columnIndex)); } } else { assertEquals("test", resultSet.getString(1)); @@ -667,9 +676,9 @@ public void testInformationSchema() throws SQLException { assertEquals(1, resultSet.getInt(4)); assertEquals(604800000, resultSet.getLong(5)); assertEquals(0, resultSet.getInt(6)); - assertEquals(1, resultSet.getInt(7)); - assertTrue(resultSet.getInt(8) >= resultSet.getInt(7)); - assertEquals(0, resultSet.getInt(9)); + assertEquals(0, resultSet.getInt(7)); + assertEquals(1, resultSet.getInt(8)); + assertTrue(resultSet.getInt(9) >= resultSet.getInt(8)); assertEquals(2, resultSet.getInt(10)); assertTrue(resultSet.getInt(11) >= resultSet.getInt(10)); } @@ -878,7 +887,7 @@ public void testDBAuth() throws SQLException { 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,min_schema_region_group_num,max_schema_region_group_num,data_region_group_num,min_data_region_group_num,max_data_region_group_num,", + "database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,data_region_group_num,min_schema_region_group_num,max_schema_region_group_num,min_data_region_group_num,max_data_region_group_num,", Collections.singleton( "information_schema,INF,null,null,null,null,null,null,null,null,null,")); } 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 6cbfed91971c2..7bd298383f525 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,9 +345,9 @@ protected void constructLine() { columnBuilders[3].writeInt(currentDatabase.getDataReplicationFactor()); columnBuilders[4].writeLong(currentDatabase.getTimePartitionInterval()); columnBuilders[5].writeInt(currentDatabase.getSchemaRegionNum()); - columnBuilders[6].writeInt(currentDatabase.getMinSchemaRegionNum()); - columnBuilders[7].writeInt(currentDatabase.getMaxSchemaRegionNum()); - columnBuilders[8].writeInt(currentDatabase.getDataRegionNum()); + columnBuilders[6].writeInt(currentDatabase.getDataRegionNum()); + columnBuilders[7].writeInt(currentDatabase.getMinSchemaRegionNum()); + columnBuilders[8].writeInt(currentDatabase.getMaxSchemaRegionNum()); columnBuilders[9].writeInt(currentDatabase.getMinDataRegionNum()); columnBuilders[10].writeInt(currentDatabase.getMaxDataRegionNum()); resultBuilder.declarePosition(); 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 052f1dc02864f..8a07bed3a05fa 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,9 +166,9 @@ private static void buildTSBlockForDetails( builder.getColumnBuilder(3).writeInt(storageGroupInfo.getDataReplicationFactor()); builder.getColumnBuilder(4).writeLong(storageGroupInfo.getTimePartitionInterval()); builder.getColumnBuilder(5).writeInt(storageGroupInfo.getSchemaRegionNum()); - builder.getColumnBuilder(6).writeInt(storageGroupInfo.getMinSchemaRegionNum()); - builder.getColumnBuilder(7).writeInt(storageGroupInfo.getMaxSchemaRegionNum()); - builder.getColumnBuilder(8).writeInt(storageGroupInfo.getDataRegionNum()); + builder.getColumnBuilder(6).writeInt(storageGroupInfo.getDataRegionNum()); + builder.getColumnBuilder(7).writeInt(storageGroupInfo.getMinSchemaRegionNum()); + builder.getColumnBuilder(8).writeInt(storageGroupInfo.getMaxSchemaRegionNum()); builder.getColumnBuilder(9).writeInt(storageGroupInfo.getMinDataRegionNum()); builder.getColumnBuilder(10).writeInt(storageGroupInfo.getMaxDataRegionNum()); 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 d7c5e43b6f1e9..94acadc0affdd 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 @@ -736,9 +736,9 @@ private 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(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)); 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 71e482152bc54..f0cf7078f85a4 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 @@ -108,13 +108,13 @@ public class InformationSchema { ColumnHeaderConstant.SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); databaseTable.addColumnSchema( new AttributeColumnSchema( - ColumnHeaderConstant.MIN_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); + ColumnHeaderConstant.DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); databaseTable.addColumnSchema( new AttributeColumnSchema( - ColumnHeaderConstant.MAX_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); + ColumnHeaderConstant.MIN_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); databaseTable.addColumnSchema( new AttributeColumnSchema( - ColumnHeaderConstant.DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); + ColumnHeaderConstant.MAX_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); databaseTable.addColumnSchema( new AttributeColumnSchema( ColumnHeaderConstant.MIN_DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32)); From a7dadfaffb1ff95fff47393ef7afc7106153475e Mon Sep 17 00:00:00 2001 From: libo Date: Fri, 22 May 2026 18:46:46 +0800 Subject: [PATCH 3/3] fix: align database region group column order --- .../relational/it/schema/IoTDBDatabaseIT.java | 25 ++++++++----------- ...formationSchemaContentSupplierFactory.java | 6 ++--- .../metadata/relational/ShowDBTask.java | 6 ++--- .../schema/column/ColumnHeaderConstant.java | 2 +- .../schema/table/InformationSchema.java | 6 ++--- 5 files changed, 21 insertions(+), 24 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 660bae4ca8cf1..21ada458d6392 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,14 +19,14 @@ 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; import org.apache.iotdb.itbase.category.TableClusterIT; import org.apache.iotdb.itbase.category.TableLocalStandaloneIT; import org.apache.iotdb.itbase.env.BaseEnv; -import org.apache.iotdb.commons.schema.table.InformationSchema; -import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema; import org.junit.After; import org.junit.Assert; @@ -165,9 +165,9 @@ public void testManageDatabase() { assertEquals(dataReplicaFactors[cnt], resultSet.getInt(4)); assertEquals(timePartitionInterval[cnt], resultSet.getLong(5)); assertEquals(schemaRegionGroupNum[cnt], resultSet.getInt(6)); - assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(7)); - assertEquals(minSchemaRegionGroupNum[cnt], resultSet.getInt(8)); - assertTrue(resultSet.getInt(9) >= minSchemaRegionGroupNum[cnt]); + assertEquals(minSchemaRegionGroupNum[cnt], resultSet.getInt(7)); + assertTrue(resultSet.getInt(8) >= minSchemaRegionGroupNum[cnt]); + assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(9)); assertEquals(minDataRegionGroupNum[cnt], resultSet.getInt(10)); assertTrue(resultSet.getInt(11) >= minDataRegionGroupNum[cnt]); cnt++; @@ -654,13 +654,10 @@ public void testInformationSchema() throws SQLException { try (final ResultSet resultSet = statement.executeQuery("select * from databases")) { final ResultSetMetaData metaData = resultSet.getMetaData(); final List expectedColumnSchemas = - InformationSchema.getSchemaTables() - .get(InformationSchema.DATABASES) - .getColumnList(); + 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)); + assertEquals(expectedColumnSchemas.get(i).getColumnName(), metaData.getColumnName(i + 1)); } int cnt = 0; @@ -676,9 +673,9 @@ public void testInformationSchema() throws SQLException { assertEquals(1, resultSet.getInt(4)); assertEquals(604800000, resultSet.getLong(5)); assertEquals(0, resultSet.getInt(6)); - assertEquals(0, resultSet.getInt(7)); - assertEquals(1, resultSet.getInt(8)); - assertTrue(resultSet.getInt(9) >= resultSet.getInt(8)); + assertEquals(1, resultSet.getInt(7)); + assertTrue(resultSet.getInt(8) >= resultSet.getInt(7)); + assertEquals(0, resultSet.getInt(9)); assertEquals(2, resultSet.getInt(10)); assertTrue(resultSet.getInt(11) >= resultSet.getInt(10)); } @@ -887,7 +884,7 @@ public void testDBAuth() throws SQLException { 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,min_schema_region_group_num,max_schema_region_group_num,min_data_region_group_num,max_data_region_group_num,", + "database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,min_schema_region_group_num,max_schema_region_group_num,data_region_group_num,min_data_region_group_num,max_data_region_group_num,", Collections.singleton( "information_schema,INF,null,null,null,null,null,null,null,null,null,")); } 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 7bd298383f525..6cbfed91971c2 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,9 +345,9 @@ protected void constructLine() { columnBuilders[3].writeInt(currentDatabase.getDataReplicationFactor()); columnBuilders[4].writeLong(currentDatabase.getTimePartitionInterval()); columnBuilders[5].writeInt(currentDatabase.getSchemaRegionNum()); - columnBuilders[6].writeInt(currentDatabase.getDataRegionNum()); - columnBuilders[7].writeInt(currentDatabase.getMinSchemaRegionNum()); - columnBuilders[8].writeInt(currentDatabase.getMaxSchemaRegionNum()); + columnBuilders[6].writeInt(currentDatabase.getMinSchemaRegionNum()); + columnBuilders[7].writeInt(currentDatabase.getMaxSchemaRegionNum()); + columnBuilders[8].writeInt(currentDatabase.getDataRegionNum()); columnBuilders[9].writeInt(currentDatabase.getMinDataRegionNum()); columnBuilders[10].writeInt(currentDatabase.getMaxDataRegionNum()); resultBuilder.declarePosition(); 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 8a07bed3a05fa..052f1dc02864f 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,9 +166,9 @@ private static void buildTSBlockForDetails( 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(7).writeInt(storageGroupInfo.getMinSchemaRegionNum()); - builder.getColumnBuilder(8).writeInt(storageGroupInfo.getMaxSchemaRegionNum()); + builder.getColumnBuilder(6).writeInt(storageGroupInfo.getMinSchemaRegionNum()); + builder.getColumnBuilder(7).writeInt(storageGroupInfo.getMaxSchemaRegionNum()); + builder.getColumnBuilder(8).writeInt(storageGroupInfo.getDataRegionNum()); builder.getColumnBuilder(9).writeInt(storageGroupInfo.getMinDataRegionNum()); builder.getColumnBuilder(10).writeInt(storageGroupInfo.getMaxDataRegionNum()); 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 94acadc0affdd..d7c5e43b6f1e9 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 @@ -736,9 +736,9 @@ private 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(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)); 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 f0cf7078f85a4..71e482152bc54 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,15 +106,15 @@ public class InformationSchema { databaseTable.addColumnSchema( new AttributeColumnSchema( ColumnHeaderConstant.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.MIN_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.MIN_DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));