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 7a963e924d5 Support some admin commands in table model
7a963e924d5 is described below
commit 7a963e924d5b1c79e7bbdcb962090cc515be3615
Author: Jackie Tien <[email protected]>
AuthorDate: Sat Oct 26 09:29:05 2024 +0800
Support some admin commands in table model
---
.../org/apache/iotdb/db/it/utils/TestUtils.java | 43 ++++++++++++
.../it/query/recent/IoTDBNullIdQueryIT.java | 40 +++++++++++
.../common/header/ColumnHeaderConstant.java | 21 +++++-
.../common/header/DatasetHeaderFactory.java | 14 +++-
.../iotdb/db/queryengine/plan/Coordinator.java | 16 ++++-
.../execution/config/TableConfigTaskVisitor.java | 65 ++++++++++++++++--
.../config/executor/ClusterConfigTaskExecutor.java | 42 ++++++++++++
.../config/executor/IConfigTaskExecutor.java | 12 ++++
.../config/session/ShowCurrentDatabaseTask.java | 79 ++++++++++++++++++++++
.../config/session/ShowCurrentSqlDialectTask.java | 71 +++++++++++++++++++
.../config/session/ShowCurrentTimestampTask.java | 48 +++++++++++++
.../config/session/ShowCurrentUserTask.java | 72 ++++++++++++++++++++
.../execution/config/session/ShowVersionTask.java | 52 ++++++++++++++
.../memory/StatementMemorySourceVisitor.java | 21 ++++--
.../plan/relational/sql/ast/AstVisitor.java | 28 ++++++++
.../plan/relational/sql/ast/ShowClusterId.java | 66 ++++++++++++++++++
.../relational/sql/ast/ShowCurrentDatabase.java | 66 ++++++++++++++++++
.../relational/sql/ast/ShowCurrentSqlDialect.java | 66 ++++++++++++++++++
.../relational/sql/ast/ShowCurrentTimestamp.java | 66 ++++++++++++++++++
.../plan/relational/sql/ast/ShowCurrentUser.java | 66 ++++++++++++++++++
.../plan/relational/sql/ast/ShowVariables.java | 66 ++++++++++++++++++
.../plan/relational/sql/ast/ShowVersion.java | 66 ++++++++++++++++++
.../plan/relational/sql/parser/AstBuilder.java | 45 ++++++++++--
.../plan/relational/sql/util/SqlFormatter.java | 49 ++++++++++++++
.../db/relational/grammar/sql/RelationalSql.g4 | 25 ++++++-
25 files changed, 1181 insertions(+), 24 deletions(-)
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 d95f5f60e89..bc1794223d7 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
@@ -265,6 +265,49 @@ public class TestUtils {
}
}
+ public static void tableResultSetFuzzyTest(
+ String sql, String[] expectedHeader, int expectedCount, String database)
{
+ tableResultSetFuzzyTest(
+ sql,
+ expectedHeader,
+ expectedCount,
+ SessionConfig.DEFAULT_USER,
+ SessionConfig.DEFAULT_PASSWORD,
+ database);
+ }
+
+ public static void tableResultSetFuzzyTest(
+ String sql,
+ String[] expectedHeader,
+ int expectedCount,
+ String userName,
+ String password,
+ String database) {
+ try (Connection connection =
+ EnvFactory.getEnv().getConnection(userName, password,
BaseEnv.TABLE_SQL_DIALECT)) {
+ connection.setClientInfo("time_zone", "+00:00");
+ try (Statement statement = connection.createStatement()) {
+ statement.execute("use " + database);
+ try (ResultSet resultSet = statement.executeQuery(sql)) {
+ ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+ for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+ assertEquals(expectedHeader[i - 1],
resultSetMetaData.getColumnName(i));
+ }
+ assertEquals(expectedHeader.length,
resultSetMetaData.getColumnCount());
+
+ int cnt = 0;
+ while (resultSet.next()) {
+ cnt++;
+ }
+ assertEquals(expectedCount, cnt);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
+
public static void tableAssertTestFail(String sql, String errMsg, String
databaseName) {
tableAssertTestFail(
sql, errMsg, SessionConfig.DEFAULT_USER,
SessionConfig.DEFAULT_PASSWORD, databaseName);
diff --git
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBNullIdQueryIT.java
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBNullIdQueryIT.java
index cf25973b037..31d99d6130e 100644
---
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBNullIdQueryIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBNullIdQueryIT.java
@@ -40,6 +40,7 @@ import java.sql.Types;
import static org.apache.iotdb.db.it.utils.TestUtils.defaultFormatDataTime;
import static org.apache.iotdb.db.it.utils.TestUtils.prepareTableData;
import static org.apache.iotdb.db.it.utils.TestUtils.tableResultSetEqualTest;
+import static org.apache.iotdb.db.it.utils.TestUtils.tableResultSetFuzzyTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -462,4 +463,43 @@ public class IoTDBNullIdQueryIT {
retArray,
DATABASE_NAME);
}
+
+ @Test
+ public void showStatementTest() {
+ String[] expectedHeader = new String[] {"CurrentSqlDialect"};
+ String[] retArray =
+ new String[] {
+ "TABLE,",
+ };
+ tableResultSetEqualTest("show current_sql_dialect", expectedHeader,
retArray, DATABASE_NAME);
+
+ expectedHeader = new String[] {"CurrentUser"};
+ retArray =
+ new String[] {
+ "root,",
+ };
+ tableResultSetEqualTest("show current_user", expectedHeader, retArray,
DATABASE_NAME);
+
+ expectedHeader = new String[] {"CurrentDatabase"};
+ retArray =
+ new String[] {
+ DATABASE_NAME + ",",
+ };
+ tableResultSetEqualTest("show current_database", expectedHeader, retArray,
DATABASE_NAME);
+
+ expectedHeader = new String[] {"Version", "BuildInfo"};
+ tableResultSetFuzzyTest("show version", expectedHeader, 1, DATABASE_NAME);
+
+ expectedHeader = new String[] {"Variable", "Value"};
+ tableResultSetFuzzyTest("show variables", expectedHeader, 15,
DATABASE_NAME);
+
+ expectedHeader = new String[] {"ClusterId"};
+ tableResultSetFuzzyTest("show clusterid", expectedHeader, 1,
DATABASE_NAME);
+
+ expectedHeader = new String[] {"ClusterId"};
+ tableResultSetFuzzyTest("show cluster_id", expectedHeader, 1,
DATABASE_NAME);
+
+ expectedHeader = new String[] {"CurrentTimestamp"};
+ tableResultSetFuzzyTest("show current_timestamp", expectedHeader, 1,
DATABASE_NAME);
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
index d2fa82f9feb..eeefac3392f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
@@ -224,6 +224,12 @@ public class ColumnHeaderConstant {
public static final String GRANT_OPTION = "GrantOption";
+ public static final String CURRENT_USER = "CurrentUser";
+
+ public static final String CURRENT_DATABASE = "CurrentDatabase";
+
+ public static final String CURRENT_SQL_DIALECT = "CurrentSqlDialect";
+
public static final List<ColumnHeader> lastQueryColumnHeaders =
ImmutableList.of(
new ColumnHeader(TIMESERIES, TSDataType.TEXT),
@@ -536,9 +542,6 @@ public class ColumnHeaderConstant {
new ColumnHeader(VIEW_TYPE, TSDataType.TEXT),
new ColumnHeader(SOURCE, TSDataType.TEXT));
- public static final List<ColumnHeader> showCurrentTimestampColumnHeaders =
- ImmutableList.of(new ColumnHeader(CURRENT_TIMESTAMP, TSDataType.INT64));
-
public static final List<ColumnHeader> showDBColumnHeaders =
ImmutableList.of(
new ColumnHeader(DATABASE, TSDataType.TEXT),
@@ -577,4 +580,16 @@ public class ColumnHeaderConstant {
new ColumnHeader(PATH, TSDataType.TEXT),
new ColumnHeader(PRIVILEGES, TSDataType.TEXT),
new ColumnHeader(GRANT_OPTION, TSDataType.BOOLEAN));
+
+ public static final List<ColumnHeader> SHOW_CURRENT_USER_COLUMN_HEADERS =
+ ImmutableList.of(new ColumnHeader(CURRENT_USER, TSDataType.STRING));
+
+ public static final List<ColumnHeader> SHOW_CURRENT_DATABASE_COLUMN_HEADERS =
+ ImmutableList.of(new ColumnHeader(CURRENT_DATABASE, TSDataType.STRING));
+
+ public static final List<ColumnHeader>
SHOW_CURRENT_SQL_DIALECT_COLUMN_HEADERS =
+ ImmutableList.of(new ColumnHeader(CURRENT_SQL_DIALECT,
TSDataType.STRING));
+
+ public static final List<ColumnHeader> SHOW_CURRENT_TIMESTAMP_COLUMN_HEADERS
=
+ ImmutableList.of(new ColumnHeader(CURRENT_TIMESTAMP,
TSDataType.TIMESTAMP));
}
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 3b85268bc13..0f3894ea06d 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
@@ -214,7 +214,7 @@ public class DatasetHeaderFactory {
}
public static DatasetHeader getShowCurrentTimestampHeader() {
- return new
DatasetHeader(ColumnHeaderConstant.showCurrentTimestampColumnHeaders, true);
+ return new
DatasetHeader(ColumnHeaderConstant.SHOW_CURRENT_TIMESTAMP_COLUMN_HEADERS, true);
}
public static DatasetHeader getShowDBHeader() {
@@ -236,4 +236,16 @@ public class DatasetHeaderFactory {
public static DatasetHeader getShowTablesDetailsHeader() {
return new
DatasetHeader(ColumnHeaderConstant.showTablesDetailsColumnHeaders, true);
}
+
+ public static DatasetHeader getShowCurrentUserHeader() {
+ return new
DatasetHeader(ColumnHeaderConstant.SHOW_CURRENT_USER_COLUMN_HEADERS, true);
+ }
+
+ public static DatasetHeader getShowCurrentDatabaseHeader() {
+ return new
DatasetHeader(ColumnHeaderConstant.SHOW_CURRENT_DATABASE_COLUMN_HEADERS, true);
+ }
+
+ public static DatasetHeader getShowCurrentSqlDialectHeader() {
+ return new
DatasetHeader(ColumnHeaderConstant.SHOW_CURRENT_SQL_DIALECT_COLUMN_HEADERS,
true);
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
index 37f72bd5aba..24063d89dc3 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
@@ -60,11 +60,18 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetConfiguration;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowAINodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCluster;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowClusterId;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowConfigNodes;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentDatabase;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentSqlDialect;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentTimestamp;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentUser;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDataNodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowRegions;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVariables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVersion;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Use;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WrappedInsertStatement;
import org.apache.iotdb.db.queryengine.plan.relational.sql.parser.SqlParser;
@@ -336,7 +343,14 @@ public class Coordinator {
|| statement instanceof Flush
|| statement instanceof ClearCache
|| statement instanceof SetConfiguration
- || statement instanceof PipeStatement) {
+ || statement instanceof PipeStatement
+ || statement instanceof ShowCurrentSqlDialect
+ || statement instanceof ShowCurrentUser
+ || statement instanceof ShowCurrentDatabase
+ || statement instanceof ShowVersion
+ || statement instanceof ShowVariables
+ || statement instanceof ShowClusterId
+ || statement instanceof ShowCurrentTimestamp) {
return new ConfigExecution(
queryContext,
null,
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
index 59918c25265..ea06a8bc793 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
@@ -31,9 +31,11 @@ import
org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.CreatePipePluginTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.DropPipePluginTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ShowClusterIdTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ShowClusterTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ShowPipePluginsTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ShowRegionTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ShowVariablesTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.AlterTableAddColumnTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.AlterTableDropColumnTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.AlterTableRenameColumnTask;
@@ -52,6 +54,11 @@ import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowTablesDetailsTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowTablesTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.UseDBTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentDatabaseTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentSqlDialectTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentTimestampTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentUserTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowVersionTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.FlushTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.sys.SetConfigurationTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.sys.pipe.AlterPipeTask;
@@ -71,7 +78,6 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreateDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreatePipe;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreatePipePlugin;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreateTable;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CurrentDatabase;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DataType;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DescribeTable;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropColumn;
@@ -92,13 +98,20 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetConfiguration;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowAINodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCluster;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowClusterId;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowConfigNodes;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentDatabase;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentSqlDialect;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentTimestamp;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentUser;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDataNodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipePlugins;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowRegions;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVariables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVersion;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StartPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Use;
@@ -493,11 +506,6 @@ public class TableConfigTaskVisitor extends
AstVisitor<IConfigTask, MPPQueryCont
return new DescribeTableTask(database, node.getTable().getSuffix());
}
- @Override
- protected IConfigTask visitCurrentDatabase(CurrentDatabase node,
MPPQueryContext context) {
- return super.visitCurrentDatabase(node, context);
- }
-
@Override
protected IConfigTask visitFlush(Flush node, MPPQueryContext context) {
context.setQueryType(QueryType.WRITE);
@@ -605,4 +613,49 @@ public class TableConfigTaskVisitor extends
AstVisitor<IConfigTask, MPPQueryCont
context.setQueryType(QueryType.READ);
return new ShowPipePluginsTask();
}
+
+ @Override
+ protected IConfigTask visitShowCurrentUser(ShowCurrentUser node,
MPPQueryContext context) {
+ context.setQueryType(QueryType.READ);
+ return new ShowCurrentUserTask(context.getSession().getUserName());
+ }
+
+ @Override
+ protected IConfigTask visitShowCurrentSqlDialect(
+ ShowCurrentSqlDialect node, MPPQueryContext context) {
+ context.setQueryType(QueryType.READ);
+ return new
ShowCurrentSqlDialectTask(context.getSession().getSqlDialect().name());
+ }
+
+ @Override
+ protected IConfigTask visitShowCurrentDatabase(
+ ShowCurrentDatabase node, MPPQueryContext context) {
+ context.setQueryType(QueryType.READ);
+ return new
ShowCurrentDatabaseTask(context.getSession().getDatabaseName().orElse(null));
+ }
+
+ @Override
+ protected IConfigTask visitShowVersion(ShowVersion node, MPPQueryContext
context) {
+ context.setQueryType(QueryType.READ);
+ return new ShowVersionTask();
+ }
+
+ @Override
+ protected IConfigTask visitShowVariables(ShowVariables node, MPPQueryContext
context) {
+ context.setQueryType(QueryType.READ);
+ return new ShowVariablesTask();
+ }
+
+ @Override
+ protected IConfigTask visitShowClusterId(ShowClusterId node, MPPQueryContext
context) {
+ context.setQueryType(QueryType.READ);
+ return new ShowClusterIdTask();
+ }
+
+ @Override
+ protected IConfigTask visitShowCurrentTimestamp(
+ ShowCurrentTimestamp node, MPPQueryContext context) {
+ context.setQueryType(QueryType.READ);
+ return new ShowCurrentTimestampTask();
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 66617ec3ef0..e0ec84948c1 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -177,6 +177,11 @@ import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.ShowNodesInSchemaTemplateTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.ShowPathSetTemplateTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.ShowSchemaTemplateTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentDatabaseTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentSqlDialectTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentTimestampTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowCurrentUserTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.session.ShowVersionTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.sys.TestConnectionTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.sys.pipe.ShowPipeTask;
import
org.apache.iotdb.db.queryengine.plan.execution.config.sys.quota.ShowSpaceQuotaTask;
@@ -270,6 +275,8 @@ import org.apache.tsfile.utils.ReadWriteIOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.annotation.Nullable;
+
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
@@ -1353,6 +1360,41 @@ public class ClusterConfigTaskExecutor implements
IConfigTaskExecutor {
return future;
}
+ @Override
+ public SettableFuture<ConfigTaskResult> showVersion() {
+ SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+ ShowVersionTask.buildTsBlock(future);
+ return future;
+ }
+
+ @Override
+ public SettableFuture<ConfigTaskResult> showCurrentSqlDialect(String
sqlDialect) {
+ SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+ ShowCurrentSqlDialectTask.buildTsBlock(sqlDialect, future);
+ return future;
+ }
+
+ @Override
+ public SettableFuture<ConfigTaskResult> showCurrentDatabase(@Nullable String
currentDatabase) {
+ SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+ ShowCurrentDatabaseTask.buildTsBlock(currentDatabase, future);
+ return future;
+ }
+
+ @Override
+ public SettableFuture<ConfigTaskResult> showCurrentUser(String currentUser) {
+ SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+ ShowCurrentUserTask.buildTsBlock(currentUser, future);
+ return future;
+ }
+
+ @Override
+ public SettableFuture<ConfigTaskResult> showCurrentTimestamp() {
+ SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+ ShowCurrentTimestampTask.buildTsBlock(future);
+ return future;
+ }
+
@Override
public SettableFuture<ConfigTaskResult> testConnection(boolean needDetails) {
SettableFuture<ConfigTaskResult> future = SettableFuture.create();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
index 4f0b48ba675..98d57aa9ffc 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
@@ -90,6 +90,8 @@ import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
import com.google.common.util.concurrent.SettableFuture;
+import javax.annotation.Nullable;
+
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -333,4 +335,14 @@ public interface IConfigTaskExecutor {
SettableFuture<ConfigTaskResult> dropTable(
final String database, final String tableName, final String queryId,
final boolean ifExists);
+
+ SettableFuture<ConfigTaskResult> showVersion();
+
+ SettableFuture<ConfigTaskResult> showCurrentSqlDialect(String sqlDialect);
+
+ SettableFuture<ConfigTaskResult> showCurrentUser(String currentUser);
+
+ SettableFuture<ConfigTaskResult> showCurrentDatabase(@Nullable String
currentDatabase);
+
+ SettableFuture<ConfigTaskResult> showCurrentTimestamp();
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentDatabaseTask.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentDatabaseTask.java
new file mode 100644
index 00000000000..20fd3ff1053
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentDatabaseTask.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.execution.config.session;
+
+import org.apache.iotdb.db.queryengine.common.header.ColumnHeader;
+import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant;
+import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory;
+import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ShowCurrentDatabaseTask implements IConfigTask {
+
+ @Nullable private final String database;
+
+ public ShowCurrentDatabaseTask(@Nullable String database) {
+ this.database = database;
+ }
+
+ public static void buildTsBlock(String database,
SettableFuture<ConfigTaskResult> future) {
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.SHOW_CURRENT_DATABASE_COLUMN_HEADERS.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
+ tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
+ if (database == null) {
+ tsBlockBuilder.getColumnBuilder(0).appendNull();
+ } else {
+ tsBlockBuilder
+ .getColumnBuilder(0)
+ .writeBinary(new Binary(database, TSFileConfig.STRING_CHARSET));
+ }
+
+ tsBlockBuilder.declarePosition();
+
+ future.set(
+ new ConfigTaskResult(
+ TSStatusCode.SUCCESS_STATUS,
+ tsBlockBuilder.build(),
+ DatasetHeaderFactory.getShowCurrentDatabaseHeader()));
+ }
+
+ @Override
+ public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor
configTaskExecutor)
+ throws InterruptedException {
+ return configTaskExecutor.showCurrentDatabase(database);
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentSqlDialectTask.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentSqlDialectTask.java
new file mode 100644
index 00000000000..26cac2b9cbd
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentSqlDialectTask.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.execution.config.session;
+
+import org.apache.iotdb.db.queryengine.common.header.ColumnHeader;
+import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant;
+import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory;
+import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ShowCurrentSqlDialectTask implements IConfigTask {
+ private final String sqlDialect;
+
+ public ShowCurrentSqlDialectTask(String sqlDialect) {
+ this.sqlDialect = sqlDialect;
+ }
+
+ public static void buildTsBlock(String sqlDialect,
SettableFuture<ConfigTaskResult> future) {
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.SHOW_CURRENT_SQL_DIALECT_COLUMN_HEADERS.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
+ tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
+ tsBlockBuilder
+ .getColumnBuilder(0)
+ .writeBinary(new Binary(sqlDialect, TSFileConfig.STRING_CHARSET));
+ tsBlockBuilder.declarePosition();
+
+ future.set(
+ new ConfigTaskResult(
+ TSStatusCode.SUCCESS_STATUS,
+ tsBlockBuilder.build(),
+ DatasetHeaderFactory.getShowCurrentSqlDialectHeader()));
+ }
+
+ @Override
+ public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor
configTaskExecutor)
+ throws InterruptedException {
+ return configTaskExecutor.showCurrentSqlDialect(sqlDialect);
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentTimestampTask.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentTimestampTask.java
new file mode 100644
index 00000000000..78ce06eb409
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentTimestampTask.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.execution.config.session;
+
+import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory;
+import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+
+import static
org.apache.iotdb.db.queryengine.plan.execution.memory.StatementMemorySourceVisitor.getCurrentTimestampResult;
+
+public class ShowCurrentTimestampTask implements IConfigTask {
+
+ public static void buildTsBlock(SettableFuture<ConfigTaskResult> future) {
+ future.set(
+ new ConfigTaskResult(
+ TSStatusCode.SUCCESS_STATUS,
+ getCurrentTimestampResult(),
+ DatasetHeaderFactory.getShowCurrentTimestampHeader()));
+ }
+
+ @Override
+ public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor
configTaskExecutor)
+ throws InterruptedException {
+ return configTaskExecutor.showCurrentTimestamp();
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentUserTask.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentUserTask.java
new file mode 100644
index 00000000000..ee8c23aa3e6
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentUserTask.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.execution.config.session;
+
+import org.apache.iotdb.db.queryengine.common.header.ColumnHeader;
+import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant;
+import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory;
+import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ShowCurrentUserTask implements IConfigTask {
+
+ private final String currentUser;
+
+ public ShowCurrentUserTask(String currentUser) {
+ this.currentUser = currentUser;
+ }
+
+ public static void buildTsBlock(String currentUser,
SettableFuture<ConfigTaskResult> future) {
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.SHOW_CURRENT_USER_COLUMN_HEADERS.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
+ tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
+ tsBlockBuilder
+ .getColumnBuilder(0)
+ .writeBinary(new Binary(currentUser, TSFileConfig.STRING_CHARSET));
+ tsBlockBuilder.declarePosition();
+
+ future.set(
+ new ConfigTaskResult(
+ TSStatusCode.SUCCESS_STATUS,
+ tsBlockBuilder.build(),
+ DatasetHeaderFactory.getShowCurrentUserHeader()));
+ }
+
+ @Override
+ public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor
configTaskExecutor)
+ throws InterruptedException {
+ return configTaskExecutor.showCurrentUser(currentUser);
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowVersionTask.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowVersionTask.java
new file mode 100644
index 00000000000..8f009c68883
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowVersionTask.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.execution.config.session;
+
+import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory;
+import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
+import
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+
+import static
org.apache.iotdb.db.queryengine.plan.execution.memory.StatementMemorySourceVisitor.getVersionResult;
+
+public class ShowVersionTask implements IConfigTask {
+
+ public ShowVersionTask() {
+ // Empty constructor
+ }
+
+ public static void buildTsBlock(SettableFuture<ConfigTaskResult> future) {
+ future.set(
+ new ConfigTaskResult(
+ TSStatusCode.SUCCESS_STATUS,
+ getVersionResult(),
+ DatasetHeaderFactory.getShowVersionHeader()));
+ }
+
+ @Override
+ public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor
configTaskExecutor)
+ throws InterruptedException {
+ return configTaskExecutor.showVersion();
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
index c19bd14b6de..d8391f68989 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
@@ -187,6 +187,12 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitShowVersion(
ShowVersionStatement showVersionStatement, StatementMemorySourceContext
context) {
+
+ return new StatementMemorySource(
+ getVersionResult(), context.getAnalysis().getRespDatasetHeader());
+ }
+
+ public static TsBlock getVersionResult() {
List<TSDataType> outputDataTypes =
ColumnHeaderConstant.showVersionColumnHeaders.stream()
.map(ColumnHeader::getColumnType)
@@ -200,8 +206,7 @@ public class StatementMemorySourceVisitor
.getColumnBuilder(1)
.writeBinary(new Binary(IoTDBConstant.BUILD_INFO,
TSFileConfig.STRING_CHARSET));
tsBlockBuilder.declarePosition();
- return new StatementMemorySource(
- tsBlockBuilder.build(), context.getAnalysis().getRespDatasetHeader());
+ return tsBlockBuilder.build();
}
@Override
@@ -266,18 +271,24 @@ public class StatementMemorySourceVisitor
tsBlockBuilder.build(), context.getAnalysis().getRespDatasetHeader());
}
+ @Override
public StatementMemorySource visitShowCurrentTimestamp(
ShowCurrentTimestampStatement showCurrentTimestampStatement,
StatementMemorySourceContext context) {
+
+ return new StatementMemorySource(
+ getCurrentTimestampResult(),
context.getAnalysis().getRespDatasetHeader());
+ }
+
+ public static TsBlock getCurrentTimestampResult() {
List<TSDataType> outputDataTypes =
- ColumnHeaderConstant.showCurrentTimestampColumnHeaders.stream()
+ ColumnHeaderConstant.SHOW_CURRENT_TIMESTAMP_COLUMN_HEADERS.stream()
.map(ColumnHeader::getColumnType)
.collect(Collectors.toList());
TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
tsBlockBuilder.getColumnBuilder(0).writeLong(System.currentTimeMillis());
tsBlockBuilder.declarePosition();
- return new StatementMemorySource(
- tsBlockBuilder.build(), context.getAnalysis().getRespDatasetHeader());
+ return tsBlockBuilder.build();
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AstVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AstVisitor.java
index 32de4cb6a95..ffba78a3d40 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AstVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AstVisitor.java
@@ -554,4 +554,32 @@ public abstract class AstVisitor<R, C> {
protected R visitPipeEnriched(PipeEnriched node, C context) {
return visitStatement(node, context);
}
+
+ protected R visitShowVersion(ShowVersion node, C context) {
+ return visitStatement(node, context);
+ }
+
+ protected R visitShowCurrentUser(ShowCurrentUser node, C context) {
+ return visitStatement(node, context);
+ }
+
+ protected R visitShowCurrentDatabase(ShowCurrentDatabase node, C context) {
+ return visitStatement(node, context);
+ }
+
+ protected R visitShowCurrentSqlDialect(ShowCurrentSqlDialect node, C
context) {
+ return visitStatement(node, context);
+ }
+
+ protected R visitShowVariables(ShowVariables node, C context) {
+ return visitStatement(node, context);
+ }
+
+ protected R visitShowClusterId(ShowClusterId node, C context) {
+ return visitStatement(node, context);
+ }
+
+ protected R visitShowCurrentTimestamp(ShowCurrentTimestamp node, C context) {
+ return visitStatement(node, context);
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowClusterId.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowClusterId.java
new file mode 100644
index 00000000000..1a5f7e0182a
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowClusterId.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowClusterId extends Statement {
+
+ public ShowClusterId(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowClusterId(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW CLUSTERID";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentDatabase.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentDatabase.java
new file mode 100644
index 00000000000..caeb4d0eee8
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentDatabase.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowCurrentDatabase extends Statement {
+
+ public ShowCurrentDatabase(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowCurrentDatabase(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW CURRENT_DATABASE";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentSqlDialect.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentSqlDialect.java
new file mode 100644
index 00000000000..b4054b0ca69
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentSqlDialect.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowCurrentSqlDialect extends Statement {
+
+ public ShowCurrentSqlDialect(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowCurrentSqlDialect(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW CURRENT_SQL_DIALECT";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentTimestamp.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentTimestamp.java
new file mode 100644
index 00000000000..d37a37d10f3
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentTimestamp.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowCurrentTimestamp extends Statement {
+
+ public ShowCurrentTimestamp(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowCurrentTimestamp(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW CURRENT_TIMESTAMP";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentUser.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentUser.java
new file mode 100644
index 00000000000..d6e9400ed43
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentUser.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowCurrentUser extends Statement {
+
+ public ShowCurrentUser(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowCurrentUser(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW CURRENT_USER";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVariables.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVariables.java
new file mode 100644
index 00000000000..0bd8c46202c
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVariables.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowVariables extends Statement {
+
+ public ShowVariables(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowVariables(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW VARIABLES";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVersion.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVersion.java
new file mode 100644
index 00000000000..048dcb60e1d
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVersion.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nullable;
+
+import java.util.List;
+
+public class ShowVersion extends Statement {
+
+ public ShowVersion(@Nullable NodeLocation location) {
+ super(location);
+ }
+
+ @Override
+ public List<Node> getChildren() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
+ return visitor.visitShowVersion(this, context);
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ return (obj != null) && (getClass() == obj.getClass());
+ }
+
+ @Override
+ public boolean shallowEquals(Node other) {
+ return sameClass(this, other);
+ }
+
+ @Override
+ public String toString() {
+ return "SHOW VERSION";
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
index 282ef4554dc..85d5638a0b0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
@@ -121,7 +121,12 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetConfiguration;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowAINodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCluster;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowClusterId;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowConfigNodes;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentDatabase;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentSqlDialect;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentTimestamp;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentUser;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDataNodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDevice;
@@ -130,6 +135,8 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipePlugins;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowRegions;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVariables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVersion;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SimpleCaseExpression;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SimpleGroupBy;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SingleColumn;
@@ -861,7 +868,7 @@ public class AstBuilder extends
RelationalSqlBaseVisitor<Node> {
@Override
public Node
visitShowClusterIdStatement(RelationalSqlParser.ShowClusterIdStatementContext
ctx) {
- return super.visitShowClusterIdStatement(ctx);
+ return new ShowClusterId(getLocation(ctx));
}
@Override
@@ -892,11 +899,6 @@ public class AstBuilder extends
RelationalSqlBaseVisitor<Node> {
return super.visitMigrateRegionStatement(ctx);
}
- @Override
- public Node
visitShowVariablesStatement(RelationalSqlParser.ShowVariablesStatementContext
ctx) {
- return super.visitShowVariablesStatement(ctx);
- }
-
@Override
public Node visitFlushStatement(RelationalSqlParser.FlushStatementContext
ctx) {
FlushStatement flushStatement = new FlushStatement(StatementType.FLUSH);
@@ -959,7 +961,36 @@ public class AstBuilder extends
RelationalSqlBaseVisitor<Node> {
@Override
public Node
visitShowVersionStatement(RelationalSqlParser.ShowVersionStatementContext ctx) {
- return super.visitShowVersionStatement(ctx);
+ return new ShowVersion(getLocation(ctx));
+ }
+
+ @Override
+ public Node visitShowCurrentSqlDialectStatement(
+ RelationalSqlParser.ShowCurrentSqlDialectStatementContext ctx) {
+ return new ShowCurrentSqlDialect(getLocation(ctx));
+ }
+
+ @Override
+ public Node visitShowCurrentDatabaseStatement(
+ RelationalSqlParser.ShowCurrentDatabaseStatementContext ctx) {
+ return new ShowCurrentDatabase(getLocation(ctx));
+ }
+
+ @Override
+ public Node visitShowCurrentUserStatement(
+ RelationalSqlParser.ShowCurrentUserStatementContext ctx) {
+ return new ShowCurrentUser(getLocation(ctx));
+ }
+
+ @Override
+ public Node
visitShowVariablesStatement(RelationalSqlParser.ShowVariablesStatementContext
ctx) {
+ return new ShowVariables(getLocation(ctx));
+ }
+
+ @Override
+ public Node visitShowCurrentTimestampStatement(
+ RelationalSqlParser.ShowCurrentTimestampStatementContext ctx) {
+ return new ShowCurrentTimestamp(getLocation(ctx));
}
@Override
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/SqlFormatter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/SqlFormatter.java
index 97a898d26a2..4db8b41cf2e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/SqlFormatter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/SqlFormatter.java
@@ -66,11 +66,18 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Row;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SelectItem;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowClusterId;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentDatabase;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentSqlDialect;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentTimestamp;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentUser;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowFunctions;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipePlugins;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVariables;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowVersion;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SingleColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StartPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopPipe;
@@ -529,6 +536,48 @@ public final class SqlFormatter {
return null;
}
+ @Override
+ protected Void visitShowCurrentSqlDialect(ShowCurrentSqlDialect node,
Integer context) {
+ builder.append(node.toString());
+ return null;
+ }
+
+ @Override
+ protected Void visitShowCurrentDatabase(ShowCurrentDatabase node, Integer
context) {
+ builder.append(node.toString());
+ return null;
+ }
+
+ @Override
+ protected Void visitShowCurrentUser(ShowCurrentUser node, Integer context)
{
+ builder.append(node.toString());
+ return null;
+ }
+
+ @Override
+ protected Void visitShowVersion(ShowVersion node, Integer context) {
+ builder.append(node.toString());
+ return null;
+ }
+
+ @Override
+ protected Void visitShowVariables(ShowVariables node, Integer context) {
+ builder.append(node.toString());
+ return null;
+ }
+
+ @Override
+ protected Void visitShowClusterId(ShowClusterId node, Integer context) {
+ builder.append(node.toString());
+ return null;
+ }
+
+ @Override
+ protected Void visitShowCurrentTimestamp(ShowCurrentTimestamp node,
Integer context) {
+ builder.append(node.toString());
+ return null;
+ }
+
@Override
protected Void visitDelete(Delete node, Integer indent) {
builder.append("DELETE FROM
").append(formatName(node.getTable().getName()));
diff --git
a/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
b/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
index 6acfcf01657..602361b0257 100644
---
a/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
+++
b/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
@@ -112,6 +112,10 @@ statement
| killQueryStatement
| loadConfigurationStatement
| setConfigurationStatement
+ | showCurrentSqlDialectStatement
+ | showCurrentUserStatement
+ | showCurrentDatabaseStatement
+ | showCurrentTimestampStatement
// auth Statement
@@ -398,7 +402,7 @@ showAINodesStatement
;
showClusterIdStatement
- : SHOW CLUSTERID
+ : SHOW (CLUSTERID | CLUSTER_ID)
;
showRegionIdStatement
@@ -479,6 +483,23 @@ localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
+showCurrentSqlDialectStatement
+ : SHOW CURRENT_SQL_DIALECT
+ ;
+
+showCurrentUserStatement
+ : SHOW CURRENT_USER
+ ;
+
+showCurrentDatabaseStatement
+ : SHOW CURRENT_DATABASE
+ ;
+
+showCurrentTimestampStatement
+ : SHOW CURRENT_TIMESTAMP
+ ;
+
+
@@ -934,6 +955,7 @@ CHARSET: 'CHARSET';
CLEAR: 'CLEAR';
CLUSTER: 'CLUSTER';
CLUSTERID: 'CLUSTERID';
+CLUSTER_ID: 'CLUSTER_ID';
COLUMN: 'COLUMN';
COLUMNS: 'COLUMNS';
COMMENT: 'COMMENT';
@@ -958,6 +980,7 @@ CURRENT_DATE: 'CURRENT_DATE';
CURRENT_PATH: 'CURRENT_PATH';
CURRENT_ROLE: 'CURRENT_ROLE';
CURRENT_SCHEMA: 'CURRENT_SCHEMA';
+CURRENT_SQL_DIALECT: 'CURRENT_SQL_DIALECT';
CURRENT_TIME: 'CURRENT_TIME';
CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
CURRENT_USER: 'CURRENT_USER';