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 + ; + +
