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),