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 <[email protected]>
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
+    ;
+
+
 
 
 

Reply via email to