This is an automated email from the ASF dual-hosted git repository.
shuwenwei pushed a commit to branch calc_commons
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/calc_commons by this push:
new 8f9dc14f825 move ReservedIdentifiers
8f9dc14f825 is described below
commit 8f9dc14f825c7f67cc3655bf970524914e8b2bfe
Author: shuwenwei <[email protected]>
AuthorDate: Thu Apr 16 17:49:44 2026 +0800
move ReservedIdentifiers
---
.../plan/relational/sql/ast/JoinOn.java | 7 +-
.../plan/relational/sql/ast/JoinUsing.java | 7 +-
.../plan/relational/sql/ast/NaturalJoin.java | 5 +-
.../sql/parser/CaseInsensitiveStream.java | 2 +-
.../sql/util/CommonQuerySqlFormatter.java | 27 ++++---
.../relational/sql/util/ExpressionFormatter.java | 5 +-
.../relational/sql/util/ReservedIdentifiers.java | 84 ++++++++++++++++++++++
.../relational/sql/util/RowPatternFormatter.java | 3 +-
.../InformationSchemaContentSupplierFactory.java | 2 +-
.../relational/analyzer/ExpressionAnalyzer.java | 2 +-
.../relational/analyzer/StatementAnalyzer.java | 6 +-
.../plan/relational/planner/RelationPlanner.java | 4 +-
.../plan/relational/sql/ast/AsofJoinOn.java | 1 +
.../sql/ast/DefaultTraversalVisitor.java | 1 +
.../relational/sql/ast/StackableAstVisitor.java | 6 +-
.../plan/relational/sql/parser/AstBuilder.java | 6 +-
.../plan/relational/sql/parser/SqlParser.java | 1 +
.../relational/sql/util/DataNodeSqlFormatter.java | 1 +
.../relational/sql/util/ReservedIdentifiers.java | 49 -------------
19 files changed, 120 insertions(+), 99 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/JoinOn.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/JoinOn.java
similarity index 86%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/JoinOn.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/JoinOn.java
index 0da1a8f5137..8e1100ceabf 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/JoinOn.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/JoinOn.java
@@ -17,12 +17,7 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
-
-import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AstMemoryEstimationHelper;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/JoinUsing.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/JoinUsing.java
similarity index 85%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/JoinUsing.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/JoinUsing.java
index f455c04359c..bfa78f32ab9 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/JoinUsing.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/JoinUsing.java
@@ -17,12 +17,7 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
-
-import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AstMemoryEstimationHelper;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/NaturalJoin.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/NaturalJoin.java
similarity index 88%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/NaturalJoin.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/NaturalJoin.java
index 46551a913d6..efe1bfde4ed 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/NaturalJoin.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/NaturalJoin.java
@@ -17,10 +17,7 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
-
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/CaseInsensitiveStream.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/parser/CaseInsensitiveStream.java
similarity index 96%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/CaseInsensitiveStream.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/parser/CaseInsensitiveStream.java
index ff7185d0868..774e761f626 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/CaseInsensitiveStream.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/parser/CaseInsensitiveStream.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.relational.sql.parser;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.parser;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.IntStream;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/CommonQuerySqlFormatter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/CommonQuerySqlFormatter.java
similarity index 95%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/CommonQuerySqlFormatter.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/CommonQuerySqlFormatter.java
index 32aa0616fdf..fa2a9542f97 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/CommonQuerySqlFormatter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/CommonQuerySqlFormatter.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.relational.sql.util;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.util;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AliasedRelation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AllColumns;
@@ -29,7 +29,10 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Intersect;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinOn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinUsing;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Limit;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NaturalJoin;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Offset;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
@@ -50,11 +53,7 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableSubquery;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Union;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Values;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WithQuery;
-import
org.apache.iotdb.db.node_commons.plan.relational.sql.util.ExpressionFormatter;
import org.apache.iotdb.db.node_commons.plan.statement.component.FillPolicy;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinOn;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinUsing;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.NaturalJoin;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
@@ -70,7 +69,7 @@ import static
com.google.common.collect.Iterables.getOnlyElement;
import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.joining;
import static
org.apache.iotdb.db.node_commons.plan.relational.sql.util.ExpressionFormatter.formatOrderBy;
-import static
org.apache.iotdb.db.queryengine.plan.relational.sql.util.RowPatternFormatter.formatPattern;
+import static
org.apache.iotdb.db.node_commons.plan.relational.sql.util.RowPatternFormatter.formatPattern;
public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void,
Integer> {
@@ -654,8 +653,7 @@ public class CommonQuerySqlFormatter implements
CommonQueryAstVisitor<Void, Inte
"missing identifier in AFTER MATCH SKIP TO LAST");
skipTo =
"AFTER MATCH SKIP TO LAST "
- + formatExpression(
- node.getAfterMatchSkipTo().get().getIdentifier().get());
+ +
formatExpression(node.getAfterMatchSkipTo().get().getIdentifier().get());
break;
case FIRST:
checkState(
@@ -663,8 +661,7 @@ public class CommonQuerySqlFormatter implements
CommonQueryAstVisitor<Void, Inte
"missing identifier in AFTER MATCH SKIP TO FIRST");
skipTo =
"AFTER MATCH SKIP TO FIRST "
- + formatExpression(
- node.getAfterMatchSkipTo().get().getIdentifier().get());
+ +
formatExpression(node.getAfterMatchSkipTo().get().getIdentifier().get());
break;
default:
throw new IllegalStateException("unexpected skipTo: " +
node.getAfterMatchSkipTo().get());
@@ -681,11 +678,11 @@ public class CommonQuerySqlFormatter implements
CommonQueryAstVisitor<Void, Inte
formatExpression(subset.getName())
+ " = "
+ subset.getIdentifiers().stream()
- .map(
-
org.apache.iotdb.db.node_commons.plan.relational.sql.util
- .ExpressionFormatter
- ::formatExpression)
- .collect(joining(", ", "(", ")")))
+ .map(
+
org.apache.iotdb.db.node_commons.plan.relational.sql.util
+ .ExpressionFormatter
+ ::formatExpression)
+ .collect(joining(", ", "(", ")")))
.collect(com.google.common.collect.ImmutableList.toImmutableList()),
indent + 2);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ExpressionFormatter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ExpressionFormatter.java
index f710a183254..513eca0f70b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ExpressionFormatter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ExpressionFormatter.java
@@ -82,7 +82,6 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Window;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowFrame;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowReference;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowSpecification;
-import
org.apache.iotdb.db.queryengine.plan.relational.sql.util.CommonQuerySqlFormatter;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
@@ -100,8 +99,8 @@ import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
import static
org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinScalarFunction.DATE_BIN;
-import static
org.apache.iotdb.db.queryengine.plan.relational.sql.util.CommonQuerySqlFormatter.formatName;
-import static
org.apache.iotdb.db.queryengine.plan.relational.sql.util.ReservedIdentifiers.reserved;
+import static
org.apache.iotdb.db.node_commons.plan.relational.sql.util.CommonQuerySqlFormatter.formatName;
+import static
org.apache.iotdb.db.node_commons.plan.relational.sql.util.ReservedIdentifiers.reserved;
public final class ExpressionFormatter {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ReservedIdentifiers.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ReservedIdentifiers.java
new file mode 100644
index 00000000000..032bac80769
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/ReservedIdentifiers.java
@@ -0,0 +1,84 @@
+/*
+ * 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.node_commons.plan.relational.sql.util;
+
+import
org.apache.iotdb.db.node_commons.plan.relational.sql.parser.CaseInsensitiveStream;
+import
org.apache.iotdb.db.node_commons.plan.relational.sql.parser.ParsingException;
+import org.apache.iotdb.db.relational.grammar.sql.RelationalSqlLexer;
+import org.apache.iotdb.db.relational.grammar.sql.RelationalSqlParser;
+
+import org.antlr.v4.runtime.ANTLRErrorListener;
+import org.antlr.v4.runtime.BaseErrorListener;
+import org.antlr.v4.runtime.CharStreams;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.Recognizer;
+import org.antlr.v4.runtime.Token;
+
+import java.util.Set;
+
+import static com.google.common.collect.ImmutableSet.toImmutableSet;
+import static
org.apache.iotdb.db.relational.grammar.sql.RelationalSqlKeywords.sqlKeywords;
+
+public final class ReservedIdentifiers {
+
+ private static final ANTLRErrorListener ERROR_LISTENER =
+ new BaseErrorListener() {
+ @Override
+ public void syntaxError(
+ Recognizer<?, ?> recognizer,
+ Object offendingSymbol,
+ int line,
+ int charPositionInLine,
+ String message,
+ RecognitionException e) {
+ throw new ParsingException(message, e, line, charPositionInLine + 1);
+ }
+ };
+
+ private ReservedIdentifiers() {}
+
+ public static Set<String> reservedIdentifiers() {
+ return sqlKeywords().stream()
+ .filter(ReservedIdentifiers::reserved)
+ .sorted()
+ .collect(toImmutableSet());
+ }
+
+ public static boolean reserved(final String name) {
+ try {
+ RelationalSqlLexer lexer =
+ new RelationalSqlLexer(new
CaseInsensitiveStream(CharStreams.fromString(name)));
+ CommonTokenStream tokenStream = new CommonTokenStream(lexer);
+ RelationalSqlParser parser = new RelationalSqlParser(tokenStream);
+
+ lexer.removeErrorListeners();
+ lexer.addErrorListener(ERROR_LISTENER);
+
+ parser.removeErrorListeners();
+ parser.addErrorListener(ERROR_LISTENER);
+
+ parser.identifier();
+ return parser.getCurrentToken().getType() != Token.EOF;
+ } catch (final ParsingException ignored) {
+ return true;
+ }
+ }
+}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/RowPatternFormatter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/RowPatternFormatter.java
similarity index 97%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/RowPatternFormatter.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/RowPatternFormatter.java
index c25057d15a0..e74c5e03e08 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/RowPatternFormatter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/util/RowPatternFormatter.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.relational.sql.util;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.util;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AnchorPattern;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.CommonQueryAstVisitor;
@@ -34,7 +34,6 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RangeQuantifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RowPattern;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ZeroOrMoreQuantifier;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ZeroOrOneQuantifier;
-import
org.apache.iotdb.db.node_commons.plan.relational.sql.util.ExpressionFormatter;
import static java.util.stream.Collectors.joining;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
index 78988754457..288c686a4e6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
@@ -72,6 +72,7 @@ import
org.apache.iotdb.db.node_commons.plan.relational.function.TableBuiltinTab
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.StringLiteral;
+import
org.apache.iotdb.db.node_commons.plan.relational.sql.util.ReservedIdentifiers;
import org.apache.iotdb.db.pipe.metric.overview.PipeDataNodeSinglePipeMetrics;
import org.apache.iotdb.db.protocol.client.ConfigNodeClient;
import org.apache.iotdb.db.protocol.client.ConfigNodeClientManager;
@@ -86,7 +87,6 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanGraphPrinter;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.InformationSchemaTableScanNode;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableDiskUsageInformationSchemaTableScanNode;
import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControl;
-import
org.apache.iotdb.db.queryengine.plan.relational.sql.util.ReservedIdentifiers;
import org.apache.iotdb.db.relational.grammar.sql.RelationalSqlKeywords;
import org.apache.iotdb.db.schemaengine.table.InformationSchemaUtils;
import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionAnalyzer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionAnalyzer.java
index 039fcbbf6dd..e32f3764e4f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionAnalyzer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionAnalyzer.java
@@ -78,7 +78,6 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RowPattern;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SearchedCaseExpression;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleCaseExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SortItem;
-import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.StackableAstVisitor;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.StringLiteral;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubqueryExpression;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubsetDefinition;
@@ -102,6 +101,7 @@ import
org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
import
org.apache.iotdb.db.queryengine.plan.relational.metadata.OperatorNotFoundException;
import
org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControl;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StackableAstVisitor;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableList;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
index 258407ee5b8..41e833cba64 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
@@ -61,12 +61,15 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IsNotNullPredica
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IsNullPredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinOn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinUsing;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LikePredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Limit;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Literal;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LogicalExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LongLiteral;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.MeasureDefinition;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NaturalJoin;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NotExpression;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NullIfExpression;
@@ -171,10 +174,7 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Insert;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertRow;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertRows;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertTablet;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinOn;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinUsing;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadTsFile;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.NaturalJoin;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PipeEnriched;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Property;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameColumn;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
index 1dd87458570..c82bead621c 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
@@ -61,6 +61,8 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Intersect;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinOn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinUsing;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LogicalExpression;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.MeasureDefinition;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
@@ -125,8 +127,6 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Delete;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertRow;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertRows;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertTablet;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinOn;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinUsing;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadTsFile;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PipeEnriched;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowStatement;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AsofJoinOn.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AsofJoinOn.java
index 0669aa2361e..8cd5249d1ea 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AsofJoinOn.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AsofJoinOn.java
@@ -25,6 +25,7 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AstMemoryEstimat
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinOn;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LogicalExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LongLiteral;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DefaultTraversalVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DefaultTraversalVisitor.java
index 8a57ff1d024..cb6d62a644d 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DefaultTraversalVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DefaultTraversalVisitor.java
@@ -43,6 +43,7 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.InPredicate;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IsNotNullPredicate;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IsNullPredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinOn;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LikePredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Limit;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LogicalExpression;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/StackableAstVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/StackableAstVisitor.java
similarity index 90%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/StackableAstVisitor.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/StackableAstVisitor.java
index 53a5671ee09..503eb4ff547 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/StackableAstVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/StackableAstVisitor.java
@@ -17,9 +17,9 @@
* under the License.
*/
-package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
+package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import java.util.LinkedList;
import java.util.Optional;
@@ -31,7 +31,7 @@ public class StackableAstVisitor<R, C>
public R process(Node node, StackableAstVisitorContext<C> context) {
context.push(node);
try {
- return node.accept(this, context);
+ return AstVisitor.super.process(node, context);
} finally {
context.pop();
}
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 99d193f79eb..953357f3aed 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
@@ -77,12 +77,15 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IsNotNullPredica
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IsNullPredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinCriteria;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinOn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.JoinUsing;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LikePredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Limit;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Literal;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LogicalExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LongLiteral;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.MeasureDefinition;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NaturalJoin;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NotExpression;
@@ -189,14 +192,11 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExtendRegion;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Flush;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Insert;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.InsertRows;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinOn;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinUsing;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.KillQuery;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadConfiguration;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadModel;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadTsFile;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.MigrateRegion;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.NaturalJoin;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Prepare;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Property;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ReconstructRegion;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/SqlParser.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/SqlParser.java
index bf13ae1e871..494bcb092ae 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/SqlParser.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/SqlParser.java
@@ -25,6 +25,7 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
+import
org.apache.iotdb.db.node_commons.plan.relational.sql.parser.CaseInsensitiveStream;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.parser.ParsingException;
import org.apache.iotdb.db.protocol.session.IClientSession;
import org.apache.iotdb.db.relational.grammar.sql.RelationalSqlBaseListener;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/DataNodeSqlFormatter.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/DataNodeSqlFormatter.java
index 0ac347699f1..11eb8cceb6c 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/DataNodeSqlFormatter.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/DataNodeSqlFormatter.java
@@ -24,6 +24,7 @@ import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import
org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
+import
org.apache.iotdb.db.node_commons.plan.relational.sql.util.CommonQuerySqlFormatter;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AddColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AlterDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AlterPipe;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/ReservedIdentifiers.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/ReservedIdentifiers.java
deleted file mode 100644
index 4e9108aacbe..00000000000
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/ReservedIdentifiers.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.queryengine.plan.relational.sql.util;
-
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import
org.apache.iotdb.db.node_commons.plan.relational.sql.parser.ParsingException;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.parser.SqlParser;
-
-import java.time.ZoneId;
-import java.util.Set;
-
-import static com.google.common.collect.ImmutableSet.toImmutableSet;
-import static
org.apache.iotdb.db.relational.grammar.sql.RelationalSqlKeywords.sqlKeywords;
-
-public final class ReservedIdentifiers {
- private static final SqlParser PARSER = new SqlParser();
-
- public static Set<String> reservedIdentifiers() {
- return sqlKeywords().stream()
- .filter(ReservedIdentifiers::reserved)
- .sorted()
- .collect(toImmutableSet());
- }
-
- public static boolean reserved(final String name) {
- try {
- return !(PARSER.createExpression(name, ZoneId.systemDefault())
instanceof Identifier);
- } catch (final ParsingException ignored) {
- return true;
- }
- }
-}