You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2022/07/04 12:48:02 UTC
[iotdb] branch master updated: [IOTDB-3697] [IOTDB-3141] Add show version function (#6566)
This is an automated email from the ASF dual-hosted git repository.
xingtanzjr 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 b16ca9ef5b [IOTDB-3697] [IOTDB-3141] Add show version function (#6566)
b16ca9ef5b is described below
commit b16ca9ef5b767266e4ac91e7daa00f1547536eca
Author: 任宇华 <79...@users.noreply.github.com>
AuthorDate: Mon Jul 4 20:47:56 2022 +0800
[IOTDB-3697] [IOTDB-3141] Add show version function (#6566)
---
.../iotdb/db/mpp/common/header/HeaderConstant.java | 5 ++++
.../apache/iotdb/db/mpp/plan/analyze/Analyzer.java | 11 ++++++++
.../memory/StatementMemorySourceVisitor.java | 13 +++++++++
.../iotdb/db/mpp/plan/parser/ASTVisitor.java | 7 +++++
.../db/mpp/plan/statement/StatementVisitor.java | 5 ++++
.../plan/statement/sys/ShowVersionStatement.java | 33 ++++++++++++++++++++++
.../service/thrift/impl/ClientRPCServiceImpl.java | 5 ++++
7 files changed, 79 insertions(+)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java
index 8d3597b918..4fb07662ab 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java
@@ -49,6 +49,7 @@ public class HeaderConstant {
public static final String COLUMN_TIME_PARTITION_INTERVAL = "time_partition_interval";
public static final String COLUMN_CHILDPATHS = "child paths";
public static final String COLUMN_CHILDNODES = "child nodes";
+ public static final String COLUMN_VERSION = "version";
// column names for count statement
public static final String COLUMN_COLUMN = "column";
@@ -88,6 +89,7 @@ public class HeaderConstant {
public static final DatasetHeader showTTLHeader;
public static final DatasetHeader showChildPathsHeader;
public static final DatasetHeader showChildNodesHeader;
+ public static final DatasetHeader showVersionHeader;
// dataset header for count statement
public static final DatasetHeader countStorageGroupHeader;
@@ -184,6 +186,9 @@ public class HeaderConstant {
showChildNodesHeader =
new DatasetHeader(
Collections.singletonList(new ColumnHeader(COLUMN_CHILDNODES, TSDataType.TEXT)), true);
+ showVersionHeader =
+ new DatasetHeader(
+ Collections.singletonList(new ColumnHeader(COLUMN_VERSION, TSDataType.TEXT)), true);
}
static {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index 2dd7c55ff9..0a4aeccfac 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -81,6 +81,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTimeSeriesStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ShowVersionStatement;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.filter.GroupByFilter;
import org.apache.iotdb.tsfile.read.filter.GroupByMonthFilter;
@@ -1370,6 +1371,16 @@ public class Analyzer {
HeaderConstant.showChildNodesHeader);
}
+ @Override
+ public Analysis visitShowVersion(
+ ShowVersionStatement showVersionStatement, MPPQueryContext context) {
+ Analysis analysis = new Analysis();
+ analysis.setStatement(showVersionStatement);
+ analysis.setRespDatasetHeader(HeaderConstant.showVersionHeader);
+ analysis.setFinishQueryAfterAnalyze(true);
+ return analysis;
+ }
+
private Analysis visitSchemaNodeManagementPartition(
Statement statement, PartialPath path, DatasetHeader header) {
Analysis analysis = new Analysis();
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java
index 4ee9aeea37..e2f5d6c7c0 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java
@@ -34,6 +34,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.CountNodesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildNodesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildPathsStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ShowVersionStatement;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
@@ -113,6 +114,18 @@ public class StatementMemorySourceVisitor
tsBlockBuilder.build(), context.getAnalysis().getRespDatasetHeader());
}
+ @Override
+ public StatementMemorySource visitShowVersion(
+ ShowVersionStatement showVersionStatement, StatementMemorySourceContext context) {
+ TsBlockBuilder tsBlockBuilder =
+ new TsBlockBuilder(HeaderConstant.showVersionHeader.getRespDataTypes());
+ tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
+ tsBlockBuilder.getColumnBuilder(0).writeBinary(new Binary(IoTDBConstant.VERSION));
+ tsBlockBuilder.declarePosition();
+ return new StatementMemorySource(
+ tsBlockBuilder.build(), context.getAnalysis().getRespDatasetHeader());
+ }
+
@Override
public StatementMemorySource visitCountNodes(
CountNodesStatement countStatement, StatementMemorySourceContext context) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index 00079c29b3..e5347b27e1 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -107,6 +107,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.AuthorStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.FlushStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ShowVersionStatement;
import org.apache.iotdb.db.qp.constant.SQLConstant;
import org.apache.iotdb.db.qp.logical.sys.AuthorOperator;
import org.apache.iotdb.db.qp.sql.IoTDBSqlParser;
@@ -620,6 +621,12 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
return new CountStorageGroupStatement(path);
}
+ // Show version
+ @Override
+ public Statement visitShowVersion(IoTDBSqlParser.ShowVersionContext ctx) {
+ return new ShowVersionStatement();
+ }
+
// Create Function
@Override
public Statement visitCreateFunction(CreateFunctionContext ctx) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index 02661d1258..2cff76f200 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@ -59,6 +59,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.AuthorStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
import org.apache.iotdb.db.mpp.plan.statement.sys.FlushStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ShowVersionStatement;
/**
* This class provides a visitor of {@link org.apache.iotdb.db.mpp.plan.statement.StatementNode},
@@ -261,4 +262,8 @@ public abstract class StatementVisitor<R, C> {
public R visitShowDataNodes(ShowDataNodesStatement showDataNodesStatement, C context) {
return visitStatement(showDataNodesStatement, context);
}
+
+ public R visitShowVersion(ShowVersionStatement showVersionStatement, C context) {
+ return visitStatement(showVersionStatement, context);
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java
new file mode 100644
index 0000000000..2e4ee20cfb
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java
@@ -0,0 +1,33 @@
+/*
+ * 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.mpp.plan.statement.sys;
+
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStatement;
+
+public class ShowVersionStatement extends ShowStatement {
+
+ public ShowVersionStatement() {}
+
+ @Override
+ public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+ return visitor.visitShowVersion(this, context);
+ }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java
index f28f53ec14..844ffa66ad 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/ClientRPCServiceImpl.java
@@ -542,6 +542,11 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
StatementGenerator.createStatement(
statement, SESSION_MANAGER.getZoneId(req.getSessionId()));
+ if (s == null) {
+ return RpcUtils.getTSExecuteStatementResp(
+ RpcUtils.getStatus(
+ TSStatusCode.EXECUTE_STATEMENT_ERROR, "This operation type is not supported"));
+ }
// permission check
TSStatus status = AuthorityChecker.checkAuthority(s, req.sessionId);
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {