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

jackietien 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 565f1bfe4fb Reorder the show databases / tables dataset by 
database/table name
565f1bfe4fb is described below

commit 565f1bfe4fb2907e73ba55601b87d095187ea50f
Author: Caideyipi <[email protected]>
AuthorDate: Thu May 29 15:26:20 2025 +0800

    Reorder the show databases / tables dataset by database/table name
---
 .../iotdb/db/it/auth/IoTDBSeriesPermissionIT.java  |  6 +--
 ...rageGroupIT.java => IoTDBDeleteDatabaseIT.java} | 18 ++++----
 .../iotdb/db/it/schema/IoTDBMetadataFetchIT.java   | 42 ++++++++---------
 .../org/apache/iotdb/db/it/utils/TestUtils.java    | 17 ++++---
 .../relational/it/schema/IoTDBDatabaseIT.java      | 52 ++++++++++------------
 .../iotdb/relational/it/schema/IoTDBTableIT.java   | 11 +++--
 .../common/header/DatasetHeaderFactory.java        |  6 +--
 .../InformationSchemaContentSupplierFactory.java   |  2 +-
 .../queryengine/plan/analyze/AnalyzeVisitor.java   |  2 +-
 .../config/metadata/relational/ShowDBTask.java     | 36 +++++++++++----
 .../metadata/relational/ShowTablesDetailsTask.java |  2 +
 .../config/metadata/relational/ShowTablesTask.java |  2 +
 .../DataNodeLocationSupplierFactory.java           |  4 --
 .../statement/metadata/ShowDatabaseStatement.java  | 41 ++++++++---------
 .../schemaengine/table/InformationSchemaUtils.java | 12 ++---
 .../schema/column/ColumnHeaderConstant.java        |  4 +-
 16 files changed, 134 insertions(+), 123 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBSeriesPermissionIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBSeriesPermissionIT.java
index 822086c58ca..86cec307a60 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBSeriesPermissionIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBSeriesPermissionIT.java
@@ -38,8 +38,8 @@ import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.countN
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.countTimeSeriesColumnHeaders;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showChildNodesColumnHeaders;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showChildPathsColumnHeaders;
+import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showDatabasesColumnHeaders;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showDevicesColumnHeaders;
-import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showStorageGroupsColumnHeaders;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showTTLColumnHeaders;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showTimeSeriesColumnHeaders;
 import static org.apache.iotdb.db.it.utils.TestUtils.assertNonQueryTestFail;
@@ -160,9 +160,7 @@ public class IoTDBSeriesPermissionIT {
     // show/count databases
     resultSetEqualTest(
         "show databases",
-        showStorageGroupsColumnHeaders.stream()
-            .map(ColumnHeader::getColumnName)
-            .toArray(String[]::new),
+        
showDatabasesColumnHeaders.stream().map(ColumnHeader::getColumnName).toArray(String[]::new),
         new String[] {"root.test,1,1,0,604800000,"},
         "test1",
         "test123");
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeleteStorageGroupIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeleteDatabaseIT.java
similarity index 92%
rename from 
integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeleteStorageGroupIT.java
rename to 
integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeleteDatabaseIT.java
index 5315bd08c4d..adde61a697c 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeleteStorageGroupIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBDeleteDatabaseIT.java
@@ -41,9 +41,9 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @Category({LocalStandaloneIT.class, ClusterIT.class})
-public class IoTDBDeleteStorageGroupIT extends AbstractSchemaIT {
+public class IoTDBDeleteDatabaseIT extends AbstractSchemaIT {
 
-  public IoTDBDeleteStorageGroupIT(SchemaTestMode schemaTestMode) {
+  public IoTDBDeleteDatabaseIT(SchemaTestMode schemaTestMode) {
     super(schemaTestMode);
   }
 
@@ -65,7 +65,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void testDeleteStorageGroup() throws Exception {
+  public void testDeleteDatabase() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       statement.execute("CREATE DATABASE root.ln.wf01.wt01");
@@ -90,7 +90,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void testDeleteMultipleStorageGroupWithQuote() throws Exception {
+  public void testDeleteMultipleDatabasesWithQuote() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       statement.execute("CREATE DATABASE root.ln1.wf01.wt01");
@@ -113,7 +113,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test(expected = SQLException.class)
-  public void deleteNonExistStorageGroup() throws Exception {
+  public void deleteNonExistDatabase() throws Exception {
     try (final Connection connection = EnvFactory.getEnv().getConnection();
         final Statement statement = connection.createStatement()) {
       statement.execute("CREATE DATABASE root.ln2.wf01.wt01");
@@ -122,7 +122,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void testDeleteStorageGroupWithStar() throws Exception {
+  public void testDeleteDatabaseWithStar() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       statement.execute("CREATE DATABASE root.ln3.wf01.wt01");
@@ -145,7 +145,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void testDeleteAllStorageGroups() throws Exception {
+  public void testDeleteAllDatabases() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       statement.execute("CREATE DATABASE root.ln4.wf01.wt01");
@@ -164,7 +164,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void testDeleteStorageGroupAndThenQuery() throws Exception {
+  public void testDeleteDatabaseAndThenQuery() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       statement.execute("insert into root.sg1.d1(time,s1) values(1,1);");
@@ -185,7 +185,7 @@ public class IoTDBDeleteStorageGroupIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void testDeleteStorageGroupInvalidateCache() throws Exception {
+  public void testDeleteDatabaseInvalidateCache() throws Exception {
     try (final Connection connection = EnvFactory.getEnv().getConnection();
         final Statement statement = connection.createStatement()) {
       try {
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
index 2f1d4e5bed4..000395bb480 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBMetadataFetchIT.java
@@ -38,6 +38,7 @@ 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.junit.Assert.assertEquals;
@@ -185,37 +186,36 @@ public class IoTDBMetadataFetchIT extends 
AbstractSchemaIT {
   }
 
   @Test
-  public void showStorageGroupTest() throws SQLException {
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String[] sqls =
+  public void showDatabasesTest() throws SQLException {
+    try (final Connection connection = EnvFactory.getEnv().getConnection();
+        final Statement statement = connection.createStatement()) {
+      final String[] sqls =
           new String[] {
             "show databases",
             "show databases root.ln.wf01.**",
             "show databases root.ln.wf01.wt01.status"
           };
-      Set<String>[] standards =
-          new Set[] {
-            new HashSet<>(
-                Arrays.asList(
-                    "root.ln.wf01.wt01",
-                    "root.ln.wf01.wt02",
-                    "root.ln1.wf01.wt01",
-                    "root.ln2.wf01.wt01")),
-            new HashSet<>(Arrays.asList("root.ln.wf01.wt01", 
"root.ln.wf01.wt02")),
-            new HashSet<>()
+      final List<String>[] standards =
+          new List[] {
+            Arrays.asList(
+                "root.ln.wf01.wt01",
+                "root.ln.wf01.wt02",
+                "root.ln1.wf01.wt01",
+                "root.ln2.wf01.wt01"),
+            Arrays.asList("root.ln.wf01.wt01", "root.ln.wf01.wt02"),
+            Collections.emptyList()
           };
 
       for (int n = 0; n < sqls.length; n++) {
-        String sql = sqls[n];
-        Set<String> standard = standards[n];
-        try (ResultSet resultSet = statement.executeQuery(sql)) {
+        final String sql = sqls[n];
+        final List<String> standard = standards[n];
+        int i = 0;
+        try (final ResultSet resultSet = statement.executeQuery(sql)) {
           while (resultSet.next()) {
-            Assert.assertTrue(standard.contains(resultSet.getString(1)));
-            standard.remove(resultSet.getString(1));
+            assertEquals(standard.get(i++), resultSet.getString(1));
           }
-          assertEquals(0, standard.size());
-        } catch (SQLException e) {
+          assertEquals(i, standard.size());
+        } catch (final SQLException e) {
           e.printStackTrace();
           fail(e.getMessage());
         }
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java 
b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
index ec98e4dcb98..3bd2a17e3f8 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
@@ -43,6 +43,8 @@ import java.sql.Statement;
 import java.text.DateFormat;
 import java.time.ZoneId;
 import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -619,16 +621,19 @@ public class TestUtils {
   }
 
   public static void assertResultSetEqual(
-      ResultSet actualResultSet, String expectedHeader, Set<String> 
expectedRetSet) {
+      final ResultSet actualResultSet,
+      final String expectedHeader,
+      final Collection<String> expectedResult) {
     try {
-      ResultSetMetaData resultSetMetaData = actualResultSet.getMetaData();
-      StringBuilder header = new StringBuilder();
+      final ResultSetMetaData resultSetMetaData = 
actualResultSet.getMetaData();
+      final StringBuilder header = new StringBuilder();
       for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
         header.append(resultSetMetaData.getColumnName(i)).append(",");
       }
       assertEquals(expectedHeader, header.toString());
 
-      Set<String> actualRetSet = new HashSet<>();
+      final Collection<String> actualRetSet =
+          expectedResult instanceof Set ? new HashSet<>() : new ArrayList<>();
 
       while (actualResultSet.next()) {
         StringBuilder builder = new StringBuilder();
@@ -637,8 +642,8 @@ public class TestUtils {
         }
         actualRetSet.add(builder.toString());
       }
-      assertEquals(expectedRetSet, actualRetSet);
-    } catch (Exception e) {
+      assertEquals(expectedResult, actualRetSet);
+    } catch (final Exception e) {
       e.printStackTrace();
       Assert.fail(String.valueOf(e));
     }
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 82e597e6db9..0af5ffd5a1d 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
@@ -298,10 +298,9 @@ public class IoTDBDatabaseIT {
 
       try (final ResultSet resultSet = statement.executeQuery("SHOW 
DATABASES")) {
         assertTrue(resultSet.next());
-        if (resultSet.getString(1).equals("information_schema")) {
-          assertTrue(resultSet.next());
-        }
         assertEquals("````x", resultSet.getString(1));
+        assertTrue(resultSet.next());
+        assertEquals("information_schema", resultSet.getString(1));
         assertFalse(resultSet.next());
       }
 
@@ -379,25 +378,24 @@ public class IoTDBDatabaseIT {
       TestUtils.assertResultSetEqual(
           statement.executeQuery("show tables"),
           "TableName,TTL(ms),",
-          new HashSet<>(
-              Arrays.asList(
-                  "databases,INF,",
-                  "tables,INF,",
-                  "columns,INF,",
-                  "queries,INF,",
-                  "regions,INF,",
-                  "topics,INF,",
-                  "pipe_plugins,INF,",
-                  "pipes,INF,",
-                  "subscriptions,INF,",
-                  "views,INF,",
-                  "models,INF,",
-                  "functions,INF,",
-                  "configurations,INF,",
-                  "keywords,INF,",
-                  "nodes,INF,",
-                  "config_nodes,INF,",
-                  "data_nodes,INF,")));
+          Arrays.asList(
+              "columns,INF,",
+              "config_nodes,INF,",
+              "configurations,INF,",
+              "data_nodes,INF,",
+              "databases,INF,",
+              "functions,INF,",
+              "keywords,INF,",
+              "models,INF,",
+              "nodes,INF,",
+              "pipe_plugins,INF,",
+              "pipes,INF,",
+              "queries,INF,",
+              "regions,INF,",
+              "subscriptions,INF,",
+              "tables,INF,",
+              "topics,INF,",
+              "views,INF,"));
 
       TestUtils.assertResultSetEqual(
           statement.executeQuery("desc databases"),
@@ -773,9 +771,8 @@ public class IoTDBDatabaseIT {
         final Statement statement = connection.createStatement()) {
       try (final ResultSet resultSet = statement.executeQuery("SHOW DATABASES 
DETAILS")) {
         assertTrue(resultSet.next());
-        if (resultSet.getString(1).equals("information_schema")) {
-          assertTrue(resultSet.next());
-        }
+        assertEquals("information_schema", resultSet.getString(1));
+        assertTrue(resultSet.next());
         assertEquals("test", resultSet.getString(1));
         assertFalse(resultSet.next());
       }
@@ -858,10 +855,9 @@ public class IoTDBDatabaseIT {
           assertEquals(showDBColumnHeaders.get(i).getColumnName(), 
metaData.getColumnName(i + 1));
         }
         Assert.assertTrue(resultSet.next());
-        if (resultSet.getString(1).equals("information_schema")) {
-          assertTrue(resultSet.next());
-        }
         assertEquals("db", resultSet.getString(1));
+        Assert.assertTrue(resultSet.next());
+        assertEquals("information_schema", resultSet.getString(1));
         Assert.assertFalse(resultSet.next());
       }
 
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
index 2e4572d969d..0965a6bae44 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
@@ -309,8 +309,8 @@ public class IoTDBTableIT {
       // Test create table with only time column
       statement.execute("create table table3()");
 
-      tableNames = new String[] {"table3", "table2"};
-      ttls = new String[] {"3000000", "6600000"};
+      tableNames = new String[] {"table2", "table3"};
+      ttls = new String[] {"6600000", "3000000"};
 
       // show tables from current database
       try (final ResultSet resultSet = statement.executeQuery("SHOW tables")) {
@@ -336,7 +336,7 @@ public class IoTDBTableIT {
       statement.execute("alter table table3 set properties ttl=1000000");
       statement.execute("alter table table3 set properties ttl=DEFAULT");
 
-      ttls = new String[] {"INF", "6600000"};
+      ttls = new String[] {"6600000", "INF"};
       // The table3's ttl shall be "INF"
       try (final ResultSet resultSet = statement.executeQuery("SHOW tables")) {
         int cnt = 0;
@@ -662,10 +662,9 @@ public class IoTDBTableIT {
           assertEquals(showDBColumnHeaders.get(i).getColumnName(), 
metaData.getColumnName(i + 1));
         }
         Assert.assertTrue(resultSet.next());
-        if (resultSet.getString(1).equals("information_schema")) {
-          assertTrue(resultSet.next());
-        }
         assertEquals("db", resultSet.getString(1));
+        Assert.assertTrue(resultSet.next());
+        assertEquals("information_schema", resultSet.getString(1));
         Assert.assertFalse(resultSet.next());
       }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeaderFactory.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeaderFactory.java
index e893e252485..c69dee793b9 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeaderFactory.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeaderFactory.java
@@ -59,10 +59,10 @@ public class DatasetHeaderFactory {
     return new 
DatasetHeader(ColumnHeaderConstant.showDevicesWithSgColumnHeaders, true);
   }
 
-  public static DatasetHeader getShowStorageGroupHeader(final boolean 
isDetailed) {
+  public static DatasetHeader getShowDatabaseHeader(final boolean isDetailed) {
     return isDetailed
-        ? new 
DatasetHeader(ColumnHeaderConstant.showStorageGroupsDetailColumnHeaders, true)
-        : new 
DatasetHeader(ColumnHeaderConstant.showStorageGroupsColumnHeaders, true);
+        ? new 
DatasetHeader(ColumnHeaderConstant.showDatabasesDetailColumnHeaders, true)
+        : new DatasetHeader(ColumnHeaderConstant.showDatabasesColumnHeaders, 
true);
   }
 
   public static DatasetHeader getShowTTLHeader() {
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 c8f21a06440..efc8d405459 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
@@ -246,7 +246,7 @@ public class InformationSchemaContentSupplierFactory {
     @Override
     protected void constructLine() {
       if (!hasShownInformationSchema) {
-        InformationSchemaUtils.buildDatabaseTsBlock(s -> true, resultBuilder, 
true, false);
+        InformationSchemaUtils.buildDatabaseTsBlock(resultBuilder, true, 
false);
         hasShownInformationSchema = true;
         return;
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index 3cea277668b..b71a9770126 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -3136,7 +3136,7 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
     Analysis analysis = new Analysis();
     analysis.setRealStatement(showDatabaseStatement);
     analysis.setRespDatasetHeader(
-        
DatasetHeaderFactory.getShowStorageGroupHeader(showDatabaseStatement.isDetailed()));
+        
DatasetHeaderFactory.getShowDatabaseHeader(showDatabaseStatement.isDetailed()));
     return analysis;
   }
 
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 2f5141ff071..f5ab58d3ead 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
@@ -44,6 +44,8 @@ import java.util.Map;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
+import static 
org.apache.iotdb.commons.schema.table.InformationSchema.INFORMATION_DATABASE;
+
 public class ShowDBTask implements IConfigTask {
 
   private final ShowDB node;
@@ -63,19 +65,19 @@ public class ShowDBTask implements IConfigTask {
   }
 
   public static void buildTSBlock(
-      final Map<String, TDatabaseInfo> storageGroupInfoMap,
+      final Map<String, TDatabaseInfo> databaseInfoMap,
       final SettableFuture<ConfigTaskResult> future,
       final boolean isDetails,
       final Predicate<String> canSeenDB) {
     if (isDetails) {
-      buildTSBlockForDetails(storageGroupInfoMap, future, canSeenDB);
+      buildTSBlockForDetails(databaseInfoMap, future, canSeenDB);
     } else {
-      buildTSBlockForNonDetails(storageGroupInfoMap, future, canSeenDB);
+      buildTSBlockForNonDetails(databaseInfoMap, future, canSeenDB);
     }
   }
 
   private static void buildTSBlockForNonDetails(
-      final Map<String, TDatabaseInfo> storageGroupInfoMap,
+      final Map<String, TDatabaseInfo> databaseInfoMap,
       final SettableFuture<ConfigTaskResult> future,
       final Predicate<String> canSeenDB) {
     final List<TSDataType> outputDataTypes =
@@ -83,13 +85,21 @@ public class ShowDBTask implements IConfigTask {
             .map(ColumnHeader::getColumnType)
             .collect(Collectors.toList());
 
+    // Used to order by database name
+    databaseInfoMap.put(INFORMATION_DATABASE, null);
     final TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
-    InformationSchemaUtils.buildDatabaseTsBlock(canSeenDB, builder, false, 
true);
-    for (final Map.Entry<String, TDatabaseInfo> entry : 
storageGroupInfoMap.entrySet()) {
+    for (final Map.Entry<String, TDatabaseInfo> entry :
+        databaseInfoMap.entrySet().stream()
+            .sorted(Map.Entry.comparingByKey())
+            .collect(Collectors.toList())) {
       final String dbName = entry.getKey();
       if (Boolean.FALSE.equals(canSeenDB.test(dbName))) {
         continue;
       }
+      if (dbName.equals(INFORMATION_DATABASE)) {
+        InformationSchemaUtils.buildDatabaseTsBlock(builder, false, true);
+        continue;
+      }
       final TDatabaseInfo storageGroupInfo = entry.getValue();
       builder.getTimeColumnBuilder().writeLong(0L);
       builder.getColumnBuilder(0).writeBinary(new Binary(dbName, 
TSFileConfig.STRING_CHARSET));
@@ -115,7 +125,7 @@ public class ShowDBTask implements IConfigTask {
   }
 
   private static void buildTSBlockForDetails(
-      final Map<String, TDatabaseInfo> storageGroupInfoMap,
+      final Map<String, TDatabaseInfo> databaseMap,
       final SettableFuture<ConfigTaskResult> future,
       final Predicate<String> canSeenDB) {
     final List<TSDataType> outputDataTypes =
@@ -123,13 +133,21 @@ public class ShowDBTask implements IConfigTask {
             .map(ColumnHeader::getColumnType)
             .collect(Collectors.toList());
 
+    // Used to order by database name
+    databaseMap.put(INFORMATION_DATABASE, null);
     final TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
-    InformationSchemaUtils.buildDatabaseTsBlock(canSeenDB, builder, true, 
true);
-    for (final Map.Entry<String, TDatabaseInfo> entry : 
storageGroupInfoMap.entrySet()) {
+    for (final Map.Entry<String, TDatabaseInfo> entry :
+        databaseMap.entrySet().stream()
+            .sorted(Map.Entry.comparingByKey())
+            .collect(Collectors.toList())) {
       final String dbName = entry.getKey();
       if (!canSeenDB.test(dbName)) {
         continue;
       }
+      if (dbName.equals(INFORMATION_DATABASE)) {
+        InformationSchemaUtils.buildDatabaseTsBlock(builder, true, true);
+        continue;
+      }
       final TDatabaseInfo storageGroupInfo = entry.getValue();
       builder.getTimeColumnBuilder().writeLong(0L);
       builder.getColumnBuilder(0).writeBinary(new Binary(dbName, 
TSFileConfig.STRING_CHARSET));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesDetailsTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesDetailsTask.java
index a4d4d19b8e2..228b1dd266a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesDetailsTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesDetailsTask.java
@@ -38,6 +38,7 @@ import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.apache.tsfile.utils.Binary;
 
+import java.util.Comparator;
 import java.util.List;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -71,6 +72,7 @@ public class ShowTablesDetailsTask implements IConfigTask {
 
     tableInfoList.stream()
         .filter(t -> checkCanShowTable.test(t.getTableName()))
+        .sorted(Comparator.comparing(TTableInfo::getTableName))
         .forEach(
             tableInfo -> {
               builder.getTimeColumnBuilder().writeLong(0L);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesTask.java
index 1f08ea41a15..9f04ffab9d2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowTablesTask.java
@@ -36,6 +36,7 @@ import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.apache.tsfile.utils.Binary;
 
+import java.util.Comparator;
 import java.util.List;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -69,6 +70,7 @@ public class ShowTablesTask implements IConfigTask {
 
     tableInfoList.stream()
         .filter(t -> checkCanShowTable.test(t.getTableName()))
+        .sorted(Comparator.comparing(TTableInfo::getTableName))
         .forEach(
             tableInfo -> {
               builder.getTimeColumnBuilder().writeLong(0L);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/DataNodeLocationSupplierFactory.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/DataNodeLocationSupplierFactory.java
index ac0c1bb3266..b2e384fbd44 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/DataNodeLocationSupplierFactory.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/DataNodeLocationSupplierFactory.java
@@ -24,8 +24,6 @@ import 
org.apache.iotdb.commons.client.exception.ClientManagerException;
 import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
 import org.apache.iotdb.commons.schema.table.InformationSchema;
 import org.apache.iotdb.confignode.rpc.thrift.TGetDataNodeLocationsResp;
-import org.apache.iotdb.db.conf.IoTDBConfig;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.protocol.client.ConfigNodeClient;
 import org.apache.iotdb.db.protocol.client.ConfigNodeClientManager;
 import org.apache.iotdb.db.protocol.client.ConfigNodeInfo;
@@ -41,8 +39,6 @@ import static 
org.apache.iotdb.rpc.TSStatusCode.QUERY_PROCESS_ERROR;
 
 public class DataNodeLocationSupplierFactory {
 
-  private static final IoTDBConfig config = 
IoTDBDescriptor.getInstance().getConfig();
-
   private DataNodeLocationSupplierFactory() {}
 
   public static DataNodeLocationSupplier getSupplier() {
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 4e865fd17fd..d91e1f65f0d 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
@@ -73,43 +73,44 @@ public class ShowDatabaseStatement extends ShowStatement 
implements IConfigState
   }
 
   public void buildTSBlock(
-      final Map<String, TDatabaseInfo> storageGroupInfoMap,
+      final Map<String, TDatabaseInfo> databaseInfoMap,
       final SettableFuture<ConfigTaskResult> future) {
 
     final List<TSDataType> outputDataTypes =
         isDetailed
-            ? 
ColumnHeaderConstant.showStorageGroupsDetailColumnHeaders.stream()
+            ? ColumnHeaderConstant.showDatabasesDetailColumnHeaders.stream()
                 .map(ColumnHeader::getColumnType)
                 .collect(Collectors.toList())
-            : ColumnHeaderConstant.showStorageGroupsColumnHeaders.stream()
+            : ColumnHeaderConstant.showDatabasesColumnHeaders.stream()
                 .map(ColumnHeader::getColumnType)
                 .collect(Collectors.toList());
 
     final TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
-    for (final Map.Entry<String, TDatabaseInfo> entry : 
storageGroupInfoMap.entrySet()) {
-      final String storageGroup = entry.getKey();
-      final TDatabaseInfo storageGroupInfo = entry.getValue();
+    for (final Map.Entry<String, TDatabaseInfo> entry :
+        databaseInfoMap.entrySet().stream()
+            .sorted(Map.Entry.comparingByKey())
+            .collect(Collectors.toList())) {
+      final String database = entry.getKey();
+      final TDatabaseInfo databaseInfo = entry.getValue();
 
       builder.getTimeColumnBuilder().writeLong(0L);
-      builder
-          .getColumnBuilder(0)
-          .writeBinary(new Binary(storageGroup, TSFileConfig.STRING_CHARSET));
-      
builder.getColumnBuilder(1).writeInt(storageGroupInfo.getSchemaReplicationFactor());
-      
builder.getColumnBuilder(2).writeInt(storageGroupInfo.getDataReplicationFactor());
-      
builder.getColumnBuilder(3).writeLong(storageGroupInfo.getTimePartitionOrigin());
-      
builder.getColumnBuilder(4).writeLong(storageGroupInfo.getTimePartitionInterval());
+      builder.getColumnBuilder(0).writeBinary(new Binary(database, 
TSFileConfig.STRING_CHARSET));
+      
builder.getColumnBuilder(1).writeInt(databaseInfo.getSchemaReplicationFactor());
+      
builder.getColumnBuilder(2).writeInt(databaseInfo.getDataReplicationFactor());
+      
builder.getColumnBuilder(3).writeLong(databaseInfo.getTimePartitionOrigin());
+      
builder.getColumnBuilder(4).writeLong(databaseInfo.getTimePartitionInterval());
       if (isDetailed) {
-        
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(9).writeInt(storageGroupInfo.getMinDataRegionNum());
-        
builder.getColumnBuilder(10).writeInt(storageGroupInfo.getMaxDataRegionNum());
+        
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.declarePosition();
     }
 
-    final DatasetHeader datasetHeader = 
DatasetHeaderFactory.getShowStorageGroupHeader(isDetailed);
+    final DatasetHeader datasetHeader = 
DatasetHeaderFactory.getShowDatabaseHeader(isDetailed);
     future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, 
builder.build(), datasetHeader));
   }
 
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 5203e9a9922..337b0ffd78f 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
@@ -41,7 +41,6 @@ import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.Objects;
-import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import static 
org.apache.iotdb.commons.schema.table.InformationSchema.INFORMATION_DATABASE;
@@ -59,13 +58,7 @@ public class InformationSchemaUtils {
   }
 
   public static void buildDatabaseTsBlock(
-      final Predicate<String> canSeenDB,
-      final TsBlockBuilder builder,
-      final boolean details,
-      final boolean withTime) {
-    if (!canSeenDB.test(INFORMATION_DATABASE)) {
-      return;
-    }
+      final TsBlockBuilder builder, final boolean details, final boolean 
withTime) {
     if (withTime) {
       builder.getTimeColumnBuilder().writeLong(0L);
     }
@@ -116,7 +109,8 @@ public class InformationSchemaUtils {
             
.stream().map(ColumnHeader::getColumnType).collect(Collectors.toList());
 
     final TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
-    for (final String schemaTable : getSchemaTables().keySet()) {
+    for (final String schemaTable :
+        
getSchemaTables().keySet().stream().sorted().collect(Collectors.toList())) {
       builder.getTimeColumnBuilder().writeLong(0L);
       builder.getColumnBuilder(0).writeBinary(new Binary(schemaTable, 
TSFileConfig.STRING_CHARSET));
       builder.getColumnBuilder(1).writeBinary(new Binary("INF", 
TSFileConfig.STRING_CHARSET));
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 2cfe3f9b48f..72fe1ce0236 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
@@ -350,7 +350,7 @@ public class ColumnHeaderConstant {
       ImmutableList.of(
           new ColumnHeader(DEVICE, TSDataType.TEXT), new 
ColumnHeader(COLUMN_TTL, TSDataType.TEXT));
 
-  public static final List<ColumnHeader> showStorageGroupsColumnHeaders =
+  public static final List<ColumnHeader> showDatabasesColumnHeaders =
       ImmutableList.of(
           new ColumnHeader(DATABASE, TSDataType.TEXT),
           new ColumnHeader(SCHEMA_REPLICATION_FACTOR, TSDataType.INT32),
@@ -358,7 +358,7 @@ public class ColumnHeaderConstant {
           new ColumnHeader(TIME_PARTITION_ORIGIN, TSDataType.INT64),
           new ColumnHeader(TIME_PARTITION_INTERVAL, TSDataType.INT64));
 
-  public static final List<ColumnHeader> showStorageGroupsDetailColumnHeaders =
+  public static final List<ColumnHeader> showDatabasesDetailColumnHeaders =
       ImmutableList.of(
           new ColumnHeader(DATABASE, TSDataType.TEXT),
           new ColumnHeader(SCHEMA_REPLICATION_FACTOR, TSDataType.INT32),


Reply via email to