You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2024/10/25 09:53:39 UTC
(iotdb) 01/02: Add show current_timestamp/clusterid for table model
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch AdminCommand
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 9301dcb7bd38ddd66ef3ec134b4837161b8ee6bd
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Fri Oct 25 17:06:25 2024 +0800
Add show current_timestamp/clusterid for table model
---
.../common/header/ColumnHeaderConstant.java | 6 ++--
.../common/header/DatasetHeaderFactory.java | 2 +-
.../iotdb/db/queryengine/plan/Coordinator.java | 6 +++-
.../execution/config/TableConfigTaskVisitor.java | 17 +++++++++
.../config/executor/ClusterConfigTaskExecutor.java | 12 ++++++-
.../config/executor/IConfigTaskExecutor.java | 6 +++-
.../config/session/ShowCurrentDatabaseTask.java | 6 ++--
...baseTask.java => ShowCurrentTimestampTask.java} | 41 ++++------------------
.../memory/StatementMemorySourceVisitor.java | 12 +++++--
.../plan/relational/sql/ast/AstVisitor.java | 8 +++++
.../ast/{ShowVersion.java => ShowClusterId.java} | 8 ++---
...{ShowVersion.java => ShowCurrentTimestamp.java} | 8 ++---
.../plan/relational/sql/ast/ShowVersion.java | 2 +-
.../plan/relational/sql/parser/AstBuilder.java | 25 +++++++++----
.../plan/relational/sql/util/SqlFormatter.java | 14 ++++++++
.../db/relational/grammar/sql/RelationalSql.g4 | 6 ++++
16 files changed, 117 insertions(+), 62 deletions(-)
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 c0301362130..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
@@ -542,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),
@@ -592,4 +589,7 @@ public class ColumnHeaderConstant {
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 8ccdbfd34c0..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() {
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 4684b49d18f..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,9 +60,11 @@ 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;
@@ -346,7 +348,9 @@ public class Coordinator {
|| statement instanceof ShowCurrentUser
|| statement instanceof ShowCurrentDatabase
|| statement instanceof ShowVersion
- || statement instanceof ShowVariables) {
+ || 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 7e921625ffa..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,6 +31,7 @@ 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;
@@ -55,6 +56,7 @@ import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational
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;
@@ -96,9 +98,11 @@ 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;
@@ -641,4 +645,17 @@ public class TableConfigTaskVisitor extends AstVisitor<IConfigTask, MPPQueryCont
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 343fb4e44d6..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
@@ -179,6 +179,7 @@ import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.S
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;
@@ -274,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;
@@ -1372,7 +1375,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
}
@Override
- public SettableFuture<ConfigTaskResult> showCurrentDatabase(String currentDatabase) {
+ public SettableFuture<ConfigTaskResult> showCurrentDatabase(@Nullable String currentDatabase) {
SettableFuture<ConfigTaskResult> future = SettableFuture.create();
ShowCurrentDatabaseTask.buildTsBlock(currentDatabase, future);
return future;
@@ -1385,6 +1388,13 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
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 db2167e3658..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;
@@ -340,5 +342,7 @@ public interface IConfigTaskExecutor {
SettableFuture<ConfigTaskResult> showCurrentUser(String currentUser);
- SettableFuture<ConfigTaskResult> showCurrentDatabase(String currentDatabase);
+ 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
index d6e9cf78fb1..20fd3ff1053 100644
--- 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
@@ -34,14 +34,16 @@ 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 {
- private final String database;
+ @Nullable private final String database;
- public ShowCurrentDatabaseTask(String database) {
+ public ShowCurrentDatabaseTask(@Nullable String database) {
this.database = database;
}
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/ShowCurrentTimestampTask.java
similarity index 52%
copy from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentDatabaseTask.java
copy to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/session/ShowCurrentTimestampTask.java
index d6e9cf78fb1..78ce06eb409 100644
--- 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/ShowCurrentTimestampTask.java
@@ -19,8 +19,6 @@
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;
@@ -29,49 +27,22 @@ 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;
+import static org.apache.iotdb.db.queryengine.plan.execution.memory.StatementMemorySourceVisitor.getCurrentTimestampResult;
-public class ShowCurrentDatabaseTask implements IConfigTask {
-
- private final String database;
-
- public ShowCurrentDatabaseTask(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();
+public class ShowCurrentTimestampTask implements IConfigTask {
+ public static void buildTsBlock(SettableFuture<ConfigTaskResult> future) {
future.set(
new ConfigTaskResult(
TSStatusCode.SUCCESS_STATUS,
- tsBlockBuilder.build(),
- DatasetHeaderFactory.getShowCurrentDatabaseHeader()));
+ getCurrentTimestampResult(),
+ DatasetHeaderFactory.getShowCurrentTimestampHeader()));
}
@Override
public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
throws InterruptedException {
- return configTaskExecutor.showCurrentDatabase(database);
+ return configTaskExecutor.showCurrentTimestamp();
}
}
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 b358da1ee69..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
@@ -271,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 88e293fe873..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
@@ -574,4 +574,12 @@ public abstract class AstVisitor<R, C> {
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/ShowVersion.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowClusterId.java
similarity index 89%
copy from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVersion.java
copy to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowClusterId.java
index a3522295ca8..1a5f7e0182a 100644
--- 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/ShowClusterId.java
@@ -25,9 +25,9 @@ import javax.annotation.Nullable;
import java.util.List;
-public class ShowVersion extends Statement {
+public class ShowClusterId extends Statement {
- public ShowVersion(@Nullable NodeLocation location) {
+ public ShowClusterId(@Nullable NodeLocation location) {
super(location);
}
@@ -38,7 +38,7 @@ public class ShowVersion extends Statement {
@Override
public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
- return visitor.visitShowVersion(this, context);
+ return visitor.visitShowClusterId(this, context);
}
@Override
@@ -61,6 +61,6 @@ public class ShowVersion extends Statement {
@Override
public String toString() {
- return "";
+ return "SHOW CLUSTERID";
}
}
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/ShowCurrentTimestamp.java
similarity index 87%
copy from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowVersion.java
copy to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowCurrentTimestamp.java
index a3522295ca8..d37a37d10f3 100644
--- 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/ShowCurrentTimestamp.java
@@ -25,9 +25,9 @@ import javax.annotation.Nullable;
import java.util.List;
-public class ShowVersion extends Statement {
+public class ShowCurrentTimestamp extends Statement {
- public ShowVersion(@Nullable NodeLocation location) {
+ public ShowCurrentTimestamp(@Nullable NodeLocation location) {
super(location);
}
@@ -38,7 +38,7 @@ public class ShowVersion extends Statement {
@Override
public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
- return visitor.visitShowVersion(this, context);
+ return visitor.visitShowCurrentTimestamp(this, context);
}
@Override
@@ -61,6 +61,6 @@ public class ShowVersion extends Statement {
@Override
public String toString() {
- return "";
+ return "SHOW CURRENT_TIMESTAMP";
}
}
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
index a3522295ca8..048dcb60e1d 100644
--- 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
@@ -61,6 +61,6 @@ public class ShowVersion extends Statement {
@Override
public String toString() {
- return "";
+ 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 1b8a9e78253..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
@@ -954,30 +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 super.visitShowCurrentSqlDialectStatement(ctx);
+ return new ShowCurrentSqlDialect(getLocation(ctx));
}
@Override
public Node visitShowCurrentDatabaseStatement(
RelationalSqlParser.ShowCurrentDatabaseStatementContext ctx) {
- return super.visitShowCurrentDatabaseStatement(ctx);
+ return new ShowCurrentDatabase(getLocation(ctx));
}
@Override
public Node visitShowCurrentUserStatement(
RelationalSqlParser.ShowCurrentUserStatementContext ctx) {
- return super.visitShowCurrentUserStatement(ctx);
+ return new ShowCurrentUser(getLocation(ctx));
}
@Override
public Node visitShowVariablesStatement(RelationalSqlParser.ShowVariablesStatementContext ctx) {
- return super.visitShowVariablesStatement(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 c73059d681b..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,8 +66,10 @@ 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;
@@ -564,6 +566,18 @@ public final class SqlFormatter {
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 4e207a98a19..c16466799e0 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
@@ -115,6 +115,7 @@ statement
| showCurrentSqlDialectStatement
| showCurrentUserStatement
| showCurrentDatabaseStatement
+ | showCurrentTimestampStatement
// auth Statement
@@ -494,6 +495,11 @@ showCurrentDatabaseStatement
: SHOW CURRENT_DATABASE
;
+showCurrentTimestampStatement
+ : SHOW CURRENT_TIMESTAMP
+ ;
+
+