You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by sh...@apache.org on 2026/04/16 08:53:48 UTC
(iotdb) branch calc_commons updated: refactor
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 5f1639cac34 refactor
5f1639cac34 is described below
commit 5f1639cac34d22361fc7718af79cd83eed09478e
Author: shuwenwei <we...@timecho.com>
AuthorDate: Thu Apr 16 16:53:34 2026 +0800
refactor
---
.../plan/relational/sql/ast/AnchorPattern.java | 9 +-
.../relational/sql/ast/CommonQueryAstVisitor.java | 121 ++++++
.../plan/relational/sql/ast/EmptyPattern.java | 9 +-
.../plan/relational/sql/ast/Except.java | 10 +-
.../plan/relational/sql/ast/ExcludedPattern.java | 9 +-
.../plan/relational/sql/ast/Intersect.java | 10 +-
.../plan/relational/sql/ast/MeasureDefinition.java | 11 +-
.../relational/sql/ast/OneOrMoreQuantifier.java | 8 +-
.../relational/sql/ast/PatternAlternation.java | 9 +-
.../relational/sql/ast/PatternConcatenation.java | 9 +-
.../relational/sql/ast/PatternPermutation.java | 9 +-
.../plan/relational/sql/ast/PatternQuantifier.java | 8 +-
.../sql/ast/PatternRecognitionRelation.java | 12 +-
.../plan/relational/sql/ast/PatternVariable.java | 10 +-
.../plan/relational/sql/ast/QuantifiedPattern.java | 9 +-
.../relational/sql/ast/QuerySpecification.java | 16 +-
.../plan/relational/sql/ast/RangeQuantifier.java | 10 +-
.../plan/relational/sql/ast/RowPattern.java | 8 +-
.../plan/relational/sql/ast/Select.java | 10 +-
.../plan/relational/sql/ast/SetOperation.java | 9 +-
.../plan/relational/sql/ast/SkipTo.java | 18 +-
.../plan/relational/sql/ast/SubsetDefinition.java | 10 +-
.../plan/relational/sql/ast/Table.java | 11 +-
.../relational/sql/ast/TableFunctionArgument.java | 11 +-
.../sql/ast/TableFunctionInvocation.java | 11 +-
.../sql/ast/TableFunctionTableArgument.java | 12 +-
.../plan/relational/sql/ast/Union.java | 10 +-
.../relational/sql/ast/VariableDefinition.java | 11 +-
.../plan/relational/sql/ast/WindowDefinition.java | 11 +-
.../relational/sql/ast/ZeroOrMoreQuantifier.java | 8 +-
.../relational/sql/ast/ZeroOrOneQuantifier.java | 8 +-
.../relational/sql/util/ExpressionFormatter.java | 10 +-
.../visitor/PipePlanToStatementVisitor.java | 2 +-
.../db/queryengine/common/MPPQueryContext.java | 2 +-
.../execution/operator/ExplainAnalyzeOperator.java | 2 +-
.../iotdb/db/queryengine/plan/Coordinator.java | 2 +-
.../TableModelStatementMemorySourceVisitor.java | 2 +-
.../plan/relational/analyzer/Analysis.java | 12 +-
.../relational/analyzer/ExpressionAnalyzer.java | 6 +-
.../analyzer/PatternRecognitionAnalysis.java | 2 +-
.../analyzer/PatternRecognitionAnalyzer.java | 18 +-
.../plan/relational/analyzer/Scope.java | 2 +-
.../relational/analyzer/StatementAnalyzer.java | 34 +-
.../plan/relational/planner/CteMaterializer.java | 2 +-
.../plan/relational/planner/QueryPlanner.java | 6 +-
.../plan/relational/planner/RelationPlanner.java | 30 +-
.../relational/planner/TableLogicalPlanner.java | 2 +-
.../rowpattern/RowPatternToIrRewriter.java | 28 +-
.../sql/ast/AbstractQueryDeviceWithCache.java | 1 +
.../relational/sql/ast/AbstractTraverseDevice.java | 1 +
.../plan/relational/sql/ast/AstVisitor.java | 121 ------
.../plan/relational/sql/ast/CountDevice.java | 1 +
.../sql/ast/DefaultTraversalVisitor.java | 10 +
.../plan/relational/sql/ast/Delete.java | 1 +
.../plan/relational/sql/ast/DeleteDevice.java | 1 +
.../plan/relational/sql/ast/Insert.java | 1 +
.../plan/relational/sql/ast/ShowDevice.java | 1 +
.../plan/relational/sql/ast/Update.java | 1 +
.../plan/relational/sql/parser/AstBuilder.java | 80 ++--
.../plan/relational/sql/rewrite/ShowRewrite.java | 2 +-
.../sql/util/CommonQuerySqlFormatter.java | 288 +++++++++++++--
.../relational/sql/util/DataNodeSqlFormatter.java | 410 +++------------------
.../plan/relational/sql/util/QueryUtil.java | 8 +-
.../relational/sql/util/RowPatternFormatter.java | 30 +-
.../plan/relational/sql/util/SqlFormatter.java | 76 ----
65 files changed, 657 insertions(+), 965 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AnchorPattern.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/AnchorPattern.java
similarity index 84%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AnchorPattern.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/AnchorPattern.java
index 881741ee098..9af2abdd77e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AnchorPattern.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/AnchorPattern.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -55,7 +50,7 @@ public class AnchorPattern extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitAnchorPattern(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitAnchorPattern(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/CommonQueryAstVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/CommonQueryAstVisitor.java
index b1721897f8d..c5a14b6485b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/CommonQueryAstVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/CommonQueryAstVisitor.java
@@ -343,4 +343,125 @@ public interface CommonQueryAstVisitor<R, C> extends IAstVisitor<R, C> {
default R visitLimit(Limit node, C context) {
return visitNode(node, context);
}
+
+ default R visitSelect(Select node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitTable(Table node, C context) {
+ return visitQueryBody(node, context);
+ }
+
+ default R visitQuerySpecification(QuerySpecification node, C context) {
+ return visitQueryBody(node, context);
+ }
+
+ default R visitWindowDefinition(WindowDefinition node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitSetOperation(SetOperation node, C context) {
+ return visitQueryBody(node, context);
+ }
+
+ default R visitUnion(Union node, C context) {
+ return visitSetOperation(node, context);
+ }
+
+ default R visitIntersect(Intersect node, C context) {
+ return visitSetOperation(node, context);
+ }
+
+ default R visitExcept(Except node, C context) {
+ return visitSetOperation(node, context);
+ }
+
+ default R visitTableArgument(TableFunctionTableArgument tableFunctionTableArgument, C context) {
+ return visitNode(tableFunctionTableArgument, context);
+ }
+
+ default R visitTableFunctionArgument(TableFunctionArgument tableFunctionArgument, C context) {
+ return visitNode(tableFunctionArgument, context);
+ }
+
+ default R visitTableFunctionInvocation(
+ TableFunctionInvocation tableFunctionInvocation, C context) {
+ return visitNode(tableFunctionInvocation, context);
+ }
+
+ default R visitPatternRecognitionRelation(PatternRecognitionRelation node, C context) {
+ return visitRelation(node, context);
+ }
+
+ default R visitRowPattern(RowPattern node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitPatternAlternation(PatternAlternation node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitPatternConcatenation(PatternConcatenation node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitQuantifiedPattern(QuantifiedPattern node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitAnchorPattern(AnchorPattern node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitEmptyPattern(EmptyPattern node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitExcludedPattern(ExcludedPattern node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitPatternPermutation(PatternPermutation node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitPatternVariable(PatternVariable node, C context) {
+ return visitRowPattern(node, context);
+ }
+
+ default R visitPatternQuantifier(PatternQuantifier node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitZeroOrMoreQuantifier(ZeroOrMoreQuantifier node, C context) {
+ return visitPatternQuantifier(node, context);
+ }
+
+ default R visitOneOrMoreQuantifier(OneOrMoreQuantifier node, C context) {
+ return visitPatternQuantifier(node, context);
+ }
+
+ default R visitZeroOrOneQuantifier(ZeroOrOneQuantifier node, C context) {
+ return visitPatternQuantifier(node, context);
+ }
+
+ default R visitRangeQuantifier(RangeQuantifier node, C context) {
+ return visitPatternQuantifier(node, context);
+ }
+
+ default R visitMeasureDefinition(MeasureDefinition node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitSkipTo(SkipTo node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitSubsetDefinition(SubsetDefinition node, C context) {
+ return visitNode(node, context);
+ }
+
+ default R visitVariableDefinition(VariableDefinition node, C context) {
+ return visitNode(node, context);
+ }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/EmptyPattern.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/EmptyPattern.java
similarity index 81%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/EmptyPattern.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/EmptyPattern.java
index 34e4fbf0f6c..ffd04baec1c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/EmptyPattern.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/EmptyPattern.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -41,7 +36,7 @@ public class EmptyPattern extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitEmptyPattern(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitEmptyPattern(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Except.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Except.java
similarity index 86%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Except.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Except.java
index 1e4bfb3c927..7e8275dbcb9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Except.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Except.java
@@ -17,13 +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.IAstVisitor;
-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.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -64,7 +58,7 @@ public final class Except extends SetOperation {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitExcept(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitExcept(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ExcludedPattern.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ExcludedPattern.java
similarity index 84%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ExcludedPattern.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ExcludedPattern.java
index 5bf356f0ed0..99301435bc1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ExcludedPattern.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ExcludedPattern.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -50,7 +45,7 @@ public class ExcludedPattern extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitExcludedPattern(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitExcludedPattern(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Intersect.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Intersect.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Intersect.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Intersect.java
index a79aa412eab..03899734dac 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Intersect.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Intersect.java
@@ -17,13 +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.IAstVisitor;
-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.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -57,7 +51,7 @@ public final class Intersect extends SetOperation {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitIntersect(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitIntersect(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/MeasureDefinition.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/MeasureDefinition.java
similarity index 82%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/MeasureDefinition.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/MeasureDefinition.java
index a8f640d575d..9293e3f154a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/MeasureDefinition.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/MeasureDefinition.java
@@ -17,14 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -58,7 +51,7 @@ public class MeasureDefinition extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitMeasureDefinition(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitMeasureDefinition(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/OneOrMoreQuantifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/OneOrMoreQuantifier.java
similarity index 78%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/OneOrMoreQuantifier.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/OneOrMoreQuantifier.java
index 57b3bd52ff9..2a682c6f40d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/OneOrMoreQuantifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/OneOrMoreQuantifier.java
@@ -17,11 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -35,7 +31,7 @@ public class OneOrMoreQuantifier extends PatternQuantifier {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitOneOrMoreQuantifier(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitOneOrMoreQuantifier(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternAlternation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternAlternation.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternAlternation.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternAlternation.java
index 237c1bf7b0e..42a324d52ba 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternAlternation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternAlternation.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -52,7 +47,7 @@ public class PatternAlternation extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitPatternAlternation(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitPatternAlternation(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternConcatenation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternConcatenation.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternConcatenation.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternConcatenation.java
index 3466e3d4254..0b83aca9fee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternConcatenation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternConcatenation.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -52,7 +47,7 @@ public class PatternConcatenation extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitPatternConcatenation(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitPatternConcatenation(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternPermutation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternPermutation.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternPermutation.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternPermutation.java
index 90901c9f7e3..84c55c27a43 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternPermutation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternPermutation.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -52,7 +47,7 @@ public class PatternPermutation extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitPatternPermutation(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitPatternPermutation(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternQuantifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternQuantifier.java
similarity index 84%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternQuantifier.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternQuantifier.java
index 0467833ef8f..51aee17ff43 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternQuantifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternQuantifier.java
@@ -17,11 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
@@ -44,7 +40,7 @@ public abstract class PatternQuantifier extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitPatternQuantifier(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitPatternQuantifier(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternRecognitionRelation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternRecognitionRelation.java
similarity index 91%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternRecognitionRelation.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternRecognitionRelation.java
index 3ebc7d922e3..05aacbf2f71 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternRecognitionRelation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternRecognitionRelation.java
@@ -17,15 +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.IAstVisitor;
-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.OrderBy;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -115,7 +107,7 @@ public class PatternRecognitionRelation extends Relation {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitPatternRecognitionRelation(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitPatternRecognitionRelation(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternVariable.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternVariable.java
similarity index 82%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternVariable.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternVariable.java
index 16ca5a93fd3..4130de8503b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/PatternVariable.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/PatternVariable.java
@@ -17,13 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -51,7 +45,7 @@ public class PatternVariable extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitPatternVariable(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitPatternVariable(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/QuantifiedPattern.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/QuantifiedPattern.java
similarity index 86%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/QuantifiedPattern.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/QuantifiedPattern.java
index 4c863497f7d..f6e4ae23d17 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/QuantifiedPattern.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/QuantifiedPattern.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -57,7 +52,7 @@ public class QuantifiedPattern extends RowPattern {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitQuantifiedPattern(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitQuantifiedPattern(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/QuerySpecification.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/QuerySpecification.java
similarity index 87%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/QuerySpecification.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/QuerySpecification.java
index e893c3990f0..ba3e87dcfb2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/QuerySpecification.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/QuerySpecification.java
@@ -17,19 +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.Fill;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.GroupBy;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IAstVisitor;
-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.Offset;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QueryBody;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -139,7 +127,7 @@ public class QuerySpecification extends QueryBody {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitQuerySpecification(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitQuerySpecification(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RangeQuantifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/RangeQuantifier.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RangeQuantifier.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/RangeQuantifier.java
index ce73d6fdd94..c7e42e59c0b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RangeQuantifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/RangeQuantifier.java
@@ -17,13 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LongLiteral;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -62,7 +56,7 @@ public class RangeQuantifier extends PatternQuantifier {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitRangeQuantifier(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitRangeQuantifier(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RowPattern.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/RowPattern.java
similarity index 73%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RowPattern.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/RowPattern.java
index 946b4a321a5..a9e54c28086 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RowPattern.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/RowPattern.java
@@ -17,11 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
public abstract class RowPattern extends Node {
protected RowPattern(NodeLocation location) {
@@ -30,6 +26,6 @@ public abstract class RowPattern extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitRowPattern(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitRowPattern(this, context);
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Select.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Select.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Select.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Select.java
index 8d643d61826..0781bac309f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Select.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Select.java
@@ -17,13 +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.IAstVisitor;
-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.SelectItem;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -63,7 +57,7 @@ public class Select extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitSelect(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitSelect(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SetOperation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SetOperation.java
similarity index 73%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SetOperation.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SetOperation.java
index 331df91492e..aa2ae381e63 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SetOperation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SetOperation.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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QueryBody;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import java.util.List;
@@ -40,7 +35,7 @@ public abstract class SetOperation extends QueryBody {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitSetOperation(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitSetOperation(this, context);
}
public abstract List<Relation> getRelations();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SkipTo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SkipTo.java
similarity index 82%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SkipTo.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SkipTo.java
index be44c5e61a8..28828eb5855 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SkipTo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SkipTo.java
@@ -17,13 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -35,10 +29,10 @@ import java.util.Optional;
import static com.google.common.base.MoreObjects.toStringHelper;
import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.Position.FIRST;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.Position.LAST;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.Position.NEXT;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.Position.PAST_LAST;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.Position.FIRST;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.Position.LAST;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.Position.NEXT;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.Position.PAST_LAST;
public class SkipTo extends Node {
private static final long INSTANCE_SIZE = RamUsageEstimator.shallowSizeOfInstance(SkipTo.class);
@@ -96,7 +90,7 @@ public class SkipTo extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitSkipTo(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitSkipTo(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SubsetDefinition.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SubsetDefinition.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SubsetDefinition.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SubsetDefinition.java
index 8a5ad1c75ac..1b3883af0bf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/SubsetDefinition.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/SubsetDefinition.java
@@ -17,13 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -59,7 +53,7 @@ public class SubsetDefinition extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitSubsetDefinition(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitSubsetDefinition(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Table.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Table.java
similarity index 81%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Table.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Table.java
index 0e511e67579..ade146f6e88 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Table.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Table.java
@@ -17,14 +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.IAstVisitor;
-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.QualifiedName;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QueryBody;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -57,7 +50,7 @@ public class Table extends QueryBody {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitTable(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitTable(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionArgument.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionArgument.java
similarity index 83%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionArgument.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionArgument.java
index 25f4b1a05b8..e68beb5c5e2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionArgument.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionArgument.java
@@ -17,14 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -61,7 +54,7 @@ public class TableFunctionArgument extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitTableFunctionArgument(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitTableFunctionArgument(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionInvocation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionInvocation.java
similarity index 82%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionInvocation.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionInvocation.java
index 5f3cac32920..5918339a405 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionInvocation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionInvocation.java
@@ -17,14 +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.IAstVisitor;
-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.QualifiedName;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -58,7 +51,7 @@ public class TableFunctionInvocation extends Relation {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitTableFunctionInvocation(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitTableFunctionInvocation(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionTableArgument.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionTableArgument.java
similarity index 86%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionTableArgument.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionTableArgument.java
index 01f07c3ddb4..57d200b8f77 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/TableFunctionTableArgument.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/TableFunctionTableArgument.java
@@ -17,15 +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.IAstVisitor;
-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.OrderBy;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -75,7 +67,7 @@ public class TableFunctionTableArgument extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitTableArgument(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitTableArgument(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Union.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Union.java
similarity index 85%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Union.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Union.java
index ee746365b97..b11b2d3b36a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Union.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/Union.java
@@ -17,13 +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.IAstVisitor;
-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.Relation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -57,7 +51,7 @@ public class Union extends SetOperation {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitUnion(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitUnion(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/VariableDefinition.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/VariableDefinition.java
similarity index 82%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/VariableDefinition.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/VariableDefinition.java
index 2be9e0f759f..e1324f67edd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/VariableDefinition.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/VariableDefinition.java
@@ -17,14 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -58,7 +51,7 @@ public class VariableDefinition extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitVariableDefinition(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitVariableDefinition(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WindowDefinition.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/WindowDefinition.java
similarity index 82%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WindowDefinition.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/WindowDefinition.java
index 4adadc82afd..14909ce3bc0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WindowDefinition.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/WindowDefinition.java
@@ -17,14 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-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.WindowSpecification;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -58,7 +51,7 @@ public class WindowDefinition extends Node {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitWindowDefinition(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitWindowDefinition(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ZeroOrMoreQuantifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ZeroOrMoreQuantifier.java
similarity index 78%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ZeroOrMoreQuantifier.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ZeroOrMoreQuantifier.java
index 113905c8a3b..d8dc9aac340 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ZeroOrMoreQuantifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ZeroOrMoreQuantifier.java
@@ -17,11 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -35,7 +31,7 @@ public class ZeroOrMoreQuantifier extends PatternQuantifier {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitZeroOrMoreQuantifier(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitZeroOrMoreQuantifier(this, context);
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ZeroOrOneQuantifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ZeroOrOneQuantifier.java
similarity index 78%
rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ZeroOrOneQuantifier.java
rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ZeroOrOneQuantifier.java
index e14915b8743..e942a68c468 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ZeroOrOneQuantifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/node_commons/plan/relational/sql/ast/ZeroOrOneQuantifier.java
@@ -17,11 +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.IAstVisitor;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+package org.apache.iotdb.db.node_commons.plan.relational.sql.ast;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -35,7 +31,7 @@ public class ZeroOrOneQuantifier extends PatternQuantifier {
@Override
public <R, C> R accept(IAstVisitor<R, C> visitor, C context) {
- return ((AstVisitor<R, C>) visitor).visitZeroOrOneQuantifier(this, context);
+ return ((CommonQueryAstVisitor<R, C>) visitor).visitZeroOrOneQuantifier(this, context);
}
@Override
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 4da7aa0b3c7..f710a183254 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,6 +82,7 @@ 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;
@@ -99,9 +100,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.queryengine.plan.relational.sql.util.SqlFormatter.formatName;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.util.SqlFormatter.formatSql;
public final class ExpressionFormatter {
@@ -116,6 +116,12 @@ public final class ExpressionFormatter {
return new Formatter(Optional.empty(), Optional.empty()).process(expression, null);
}
+ private static String formatSql(Node root) {
+ StringBuilder builder = new StringBuilder();
+ new CommonQuerySqlFormatter(builder).process(root, 0);
+ return builder.toString();
+ }
+
public static class Formatter implements CommonQueryAstVisitor<String, Void> {
private final Optional<Function<Literal, String>> literalFormatter;
private final Optional<Function<SymbolReference, String>> symbolReferenceFormatter;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java
index b2347461953..525418e5889 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.commons.path.MeasurementPath;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metadata.write.ActivateTemplateNode;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metadata.write.AlterTimeSeriesNode;
@@ -45,7 +46,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.planner.node.schema.Creat
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.schema.TableDeviceAttributeUpdateNode;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreateOrUpdateDevice;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Delete;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Update;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.DeleteDataStatement;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
index bc18bb75375..c682644d482 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
@@ -31,13 +31,13 @@ import org.apache.iotdb.db.node_commons.common.SessionInfo;
import org.apache.iotdb.db.node_commons.plan.relational.analyzer.NodeRef;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.plan.analyze.Analysis;
import org.apache.iotdb.db.queryengine.plan.analyze.PredicateUtils;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider;
import org.apache.iotdb.db.queryengine.plan.analyze.lock.SchemaLockType;
import org.apache.iotdb.db.queryengine.plan.planner.memory.NotThreadSafeMemoryReservationManager;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.statistics.QueryPlanStatistics;
import org.apache.iotdb.db.utils.cte.CteDataStore;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java
index 01fde66d65a..ed7f3c88eb1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java
@@ -30,12 +30,12 @@ import org.apache.iotdb.db.calc_commons.execution.operator.process.ProcessOperat
import org.apache.iotdb.db.exception.mpp.FragmentInstanceFetchException;
import org.apache.iotdb.db.node_commons.execution.MemoryEstimationHelper;
import org.apache.iotdb.db.node_commons.plan.relational.analyzer.NodeRef;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.common.FragmentInstanceId;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.plan.Coordinator;
import org.apache.iotdb.db.queryengine.plan.execution.QueryExecution;
import org.apache.iotdb.db.queryengine.plan.planner.plan.FragmentInstance;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.statistics.FragmentInstanceStatisticsDrawer;
import org.apache.iotdb.db.queryengine.statistics.QueryStatisticsFetcher;
import org.apache.iotdb.db.queryengine.statistics.StatisticLine;
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 fb195f08dd9..a8b11dea77d 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
@@ -43,6 +43,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Literal;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Parameter;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.node_commons.plan.relational.type.InternalTypeManager;
import org.apache.iotdb.db.node_commons.plan.relational.type.TypeManager;
import org.apache.iotdb.db.protocol.session.IClientSession;
@@ -142,7 +143,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StartRepairData;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopExternalService;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopRepairData;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubscriptionStatement;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.UnloadModel;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Use;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WrappedInsertStatement;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/TableModelStatementMemorySourceVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/TableModelStatementMemorySourceVisitor.java
index 6f8fdb12c92..7c2535a49eb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/TableModelStatementMemorySourceVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/TableModelStatementMemorySourceVisitor.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.schema.column.ColumnHeader;
import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.node_commons.plan.relational.analyzer.NodeRef;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
import org.apache.iotdb.db.queryengine.plan.Coordinator;
import org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner;
@@ -37,7 +38,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CountDevice;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Explain;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDevice;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.read.common.block.TsBlock;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
index 2cccc1c9317..698020c3a4f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
@@ -46,9 +46,15 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Parameter;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RangeQuantifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RowPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubqueryExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubsetDefinition;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionInvocation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowFrame;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.With;
import org.apache.iotdb.db.node_commons.plan.statement.component.FillPolicy;
@@ -65,13 +71,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableSchema;
import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControl;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuerySpecification;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RangeQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowStatement;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubsetDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionInvocation;
import org.apache.iotdb.db.queryengine.plan.relational.sql.parser.SqlParser;
import com.google.common.collect.ArrayListMultimap;
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 923bf22b3fe..039fcbbf6dd 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
@@ -72,13 +72,16 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Parameter;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ProcessingMode;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedComparisonExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RangeQuantifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Row;
+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;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SymbolReference;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Trim;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WhenClause;
@@ -99,9 +102,6 @@ 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.RangeQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubsetDefinition;
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/PatternRecognitionAnalysis.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalysis.java
index ef0f2bbae21..28ddb808fdf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalysis.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalysis.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.analyzer.NodeRef;
import org.apache.iotdb.db.node_commons.plan.relational.metadata.ResolvedFunction;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.FunctionCall;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RangeQuantifier;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RangeQuantifier;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalyzer.java
index 846ec6b8bd0..a0af3ea3b34 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalyzer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/PatternRecognitionAnalyzer.java
@@ -21,20 +21,20 @@ package org.apache.iotdb.db.queryengine.plan.relational.analyzer;
import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.node_commons.plan.relational.analyzer.NodeRef;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExcludedPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.FunctionCall;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
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.PatternRecognitionRelation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch;
+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.SkipTo;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubsetDefinition;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.VariableDefinition;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis.Range;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExcludedPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.MeasureDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RangeQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubsetDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.VariableDefinition;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Scope.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Scope.java
index ce24d7246de..83e10a3530b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Scope.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Scope.java
@@ -25,8 +25,8 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AllColumns;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WithQuery;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.rpc.TSStatusCode;
import com.google.common.collect.ImmutableMap;
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 05b6d98459d..258407ee5b8 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
@@ -41,6 +41,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.CoalesceExpressi
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Columns;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DereferenceExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Except;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExistsPredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Extract;
@@ -55,6 +56,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IfExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.InListExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.InPredicate;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Intersect;
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;
@@ -64,32 +66,46 @@ 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.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;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Offset;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Parameter;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Row;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SearchedCaseExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SelectItem;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SetOperation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleCaseExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleGroupBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SingleColumn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SortItem;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
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;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SymbolReference;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionArgument;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionInvocation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionTableArgument;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableSubquery;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Trim;
+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.VariableDefinition;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WhenClause;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Window;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowDefinition;
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;
@@ -148,7 +164,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropPipePlugin;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropSubscription;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropTable;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropTopic;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Except;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Explain;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExplainAnalyze;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.FetchDevice;
@@ -156,20 +171,14 @@ 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.Intersect;
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.MeasureDefinition;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.NaturalJoin;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation;
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.QuerySpecification;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameTable;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Select;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetOperation;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDevice;
@@ -180,20 +189,11 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowPipes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowSubscriptions;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTables;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTopics;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StartPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopPipe;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubsetDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionArgument;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionInvocation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionTableArgument;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Union;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Update;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.UpdateAssignment;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Use;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.VariableDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WindowDefinition;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WrappedInsertStatement;
import org.apache.iotdb.db.queryengine.plan.relational.type.CompatibleResolver;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertBaseStatement;
@@ -279,6 +279,7 @@ import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type.INNER;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type.LEFT;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type.RIGHT;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ONE;
import static org.apache.iotdb.db.queryengine.execution.warnings.StandardWarningCode.REDUNDANT_ORDER_BY;
import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.AggregationAnalyzer.verifyOrderByAggregations;
import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.AggregationAnalyzer.verifySourceAggregations;
@@ -290,7 +291,6 @@ import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.Expressio
import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.Scope.BasisType.TABLE;
import static org.apache.iotdb.db.queryengine.plan.relational.metadata.MetadataUtil.createQualifiedObjectName;
import static org.apache.iotdb.db.queryengine.plan.relational.planner.IrExpressionInterpreter.evaluateConstantExpression;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ONE;
import static org.apache.iotdb.db.queryengine.plan.relational.sql.util.AstUtil.preOrder;
import static org.apache.iotdb.db.queryengine.plan.relational.utils.NodeUtils.getSortItemsFromOrderBy;
import static org.apache.tsfile.read.common.type.BooleanType.BOOLEAN;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/CteMaterializer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/CteMaterializer.java
index df94bde9c81..f1c4c6ab2d5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/CteMaterializer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/CteMaterializer.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory;
import org.apache.iotdb.db.exception.mpp.FragmentInstanceFetchException;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.With;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WithQuery;
import org.apache.iotdb.db.protocol.session.SessionManager;
@@ -45,7 +46,6 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.FragmentInstance;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableSchema;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.plan.relational.sql.parser.SqlParser;
import org.apache.iotdb.db.queryengine.statistics.FragmentInstanceStatisticsDrawer;
import org.apache.iotdb.db.queryengine.statistics.QueryStatisticsFetcher;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/QueryPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/QueryPlanner.java
index b7281d16b94..7d105013bff 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/QueryPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/QueryPlanner.java
@@ -50,13 +50,16 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.FrameBound;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.FunctionCall;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IfExpression;
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.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NullLiteral;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Offset;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QueryBody;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SortItem;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.VariableDefinition;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowFrame;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.common.QueryId;
@@ -67,9 +70,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.analyzer.RelationType;
import org.apache.iotdb.db.queryengine.plan.relational.planner.ir.GapFillStartAndEndTimeExtractVisitor;
import org.apache.iotdb.db.queryengine.plan.relational.planner.ir.PredicateWithUncorrelatedScalarSubqueryReconstructor;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Delete;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.MeasureDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuerySpecification;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.VariableDefinition;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
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 1b717e1edad..1dd87458570 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
@@ -55,19 +55,32 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AliasedRelation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.CoalesceExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DereferenceExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Except;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
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.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;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RowPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SetOperation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SortItem;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubqueryExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SubsetDefinition;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionInvocation;
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.VariableDefinition;
import org.apache.iotdb.db.node_commons.plan.relational.type.InternalTypeManager;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.common.QueryId;
@@ -109,26 +122,13 @@ import org.apache.iotdb.db.queryengine.plan.relational.planner.rowpattern.rowpat
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AsofJoinOn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Delete;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Except;
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.Intersect;
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.MeasureDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PipeEnriched;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuerySpecification;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetOperation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubsetDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionInvocation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Union;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.VariableDefinition;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
@@ -169,6 +169,8 @@ import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type.INNER;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type.LEFT;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Join.Type.RIGHT;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ONE;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.Position.PAST_LAST;
import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.PatternRecognitionAnalysis.NavigationAnchor.LAST;
import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.PatternRecognitionAnalysis.NavigationMode.RUNNING;
import static org.apache.iotdb.db.queryengine.plan.relational.planner.OrderingTranslator.sortItemToSortOrder;
@@ -178,8 +180,6 @@ import static org.apache.iotdb.db.queryengine.plan.relational.planner.QueryPlann
import static org.apache.iotdb.db.queryengine.plan.relational.planner.QueryPlanner.extractPatternRecognitionExpressions;
import static org.apache.iotdb.db.queryengine.plan.relational.planner.QueryPlanner.pruneInvisibleFields;
import static org.apache.iotdb.db.queryengine.plan.relational.planner.ir.IrUtils.extractPredicates;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ONE;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.Position.PAST_LAST;
import static org.apache.iotdb.db.queryengine.plan.relational.utils.NodeUtils.getSortItemsFromOrderBy;
import static org.apache.tsfile.read.common.type.LongType.INT64;
import static org.apache.tsfile.read.common.type.StringType.STRING;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
index ccb5cad7f8c..cf63bc86cb1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
@@ -39,6 +39,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.planner.node.OutputNode;
import org.apache.iotdb.db.node_commons.plan.relational.planner.node.ProjectNode;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.node_commons.plan.relational.type.InternalTypeManager;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.common.QueryId;
@@ -84,7 +85,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Insert;
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.relational.sql.ast.ShowDevice;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Update;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WrappedStatement;
import org.apache.iotdb.db.schemaengine.table.DataNodeTableCache;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/rowpattern/rowpattern/RowPatternToIrRewriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/rowpattern/rowpattern/RowPatternToIrRewriter.java
index 80e0001eb5c..41d74ae0497 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/rowpattern/rowpattern/RowPatternToIrRewriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/rowpattern/rowpattern/RowPatternToIrRewriter.java
@@ -30,23 +30,23 @@ import org.apache.iotdb.db.node_commons.plan.relational.planner.rowpattern.rowpa
import org.apache.iotdb.db.node_commons.plan.relational.planner.rowpattern.rowpattern.IrQuantified;
import org.apache.iotdb.db.node_commons.plan.relational.planner.rowpattern.rowpattern.IrQuantifier;
import org.apache.iotdb.db.node_commons.plan.relational.planner.rowpattern.rowpattern.IrRowPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AnchorPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.EmptyPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExcludedPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OneOrMoreQuantifier;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternAlternation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternConcatenation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternPermutation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternQuantifier;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternVariable;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedPattern;
+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.queryengine.plan.relational.analyzer.Analysis;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis.Range;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AnchorPattern;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.EmptyPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExcludedPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.OneOrMoreQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternAlternation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternConcatenation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternPermutation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternVariable;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuantifiedPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RangeQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ZeroOrMoreQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ZeroOrOneQuantifier;
import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractQueryDeviceWithCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractQueryDeviceWithCache.java
index ecd4bef96a7..8a596ddb5b4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractQueryDeviceWithCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractQueryDeviceWithCache.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory;
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.NodeLocation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractTraverseDevice.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractTraverseDevice.java
index 3debfdd058c..313465765ca 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractTraverseDevice.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/AbstractTraverseDevice.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.LogicalExpressio
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.ast.Table;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.DeviceEntry;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.MetadataUtil;
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 2294907eb41..ea8f8b82003 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
@@ -55,38 +55,6 @@ public interface AstVisitor<R, C> extends CommonQueryAstVisitor<R, C> {
return visitStatement(node, context);
}
- default R visitSelect(Select node, C context) {
- return visitNode(node, context);
- }
-
- default R visitQuerySpecification(QuerySpecification node, C context) {
- return visitQueryBody(node, context);
- }
-
- default R visitSetOperation(SetOperation node, C context) {
- return visitQueryBody(node, context);
- }
-
- default R visitUnion(Union node, C context) {
- return visitSetOperation(node, context);
- }
-
- default R visitIntersect(Intersect node, C context) {
- return visitSetOperation(node, context);
- }
-
- default R visitExcept(Except node, C context) {
- return visitSetOperation(node, context);
- }
-
- default R visitWindowDefinition(WindowDefinition node, C context) {
- return visitNode(node, context);
- }
-
- default R visitTable(Table node, C context) {
- return visitQueryBody(node, context);
- }
-
default R visitColumnDefinition(ColumnDefinition node, C context) {
return visitNode(node, context);
}
@@ -490,93 +458,4 @@ public interface AstVisitor<R, C> extends CommonQueryAstVisitor<R, C> {
default R visitDropModel(DropModel node, C context) {
return visitStatement(node, context);
}
-
- default R visitTableArgument(TableFunctionTableArgument tableFunctionTableArgument, C context) {
- return visitNode(tableFunctionTableArgument, context);
- }
-
- default R visitTableFunctionArgument(TableFunctionArgument tableFunctionArgument, C context) {
- return visitNode(tableFunctionArgument, context);
- }
-
- default R visitTableFunctionInvocation(
- TableFunctionInvocation tableFunctionInvocation, C context) {
- return visitNode(tableFunctionInvocation, context);
- }
-
- default R visitMeasureDefinition(MeasureDefinition node, C context) {
- return visitNode(node, context);
- }
-
- default R visitSkipTo(SkipTo node, C context) {
- return visitNode(node, context);
- }
-
- default R visitSubsetDefinition(SubsetDefinition node, C context) {
- return visitNode(node, context);
- }
-
- default R visitVariableDefinition(VariableDefinition node, C context) {
- return visitNode(node, context);
- }
-
- default R visitPatternRecognitionRelation(PatternRecognitionRelation node, C context) {
- return visitRelation(node, context);
- }
-
- default R visitRowPattern(RowPattern node, C context) {
- return visitNode(node, context);
- }
-
- default R visitPatternAlternation(PatternAlternation node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitPatternConcatenation(PatternConcatenation node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitQuantifiedPattern(QuantifiedPattern node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitAnchorPattern(AnchorPattern node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitEmptyPattern(EmptyPattern node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitExcludedPattern(ExcludedPattern node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitPatternPermutation(PatternPermutation node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitPatternVariable(PatternVariable node, C context) {
- return visitRowPattern(node, context);
- }
-
- default R visitPatternQuantifier(PatternQuantifier node, C context) {
- return visitNode(node, context);
- }
-
- default R visitZeroOrMoreQuantifier(ZeroOrMoreQuantifier node, C context) {
- return visitPatternQuantifier(node, context);
- }
-
- default R visitOneOrMoreQuantifier(OneOrMoreQuantifier node, C context) {
- return visitPatternQuantifier(node, context);
- }
-
- default R visitZeroOrOneQuantifier(ZeroOrOneQuantifier node, C context) {
- return visitPatternQuantifier(node, context);
- }
-
- default R visitRangeQuantifier(RangeQuantifier node, C context) {
- return visitPatternQuantifier(node, context);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/CountDevice.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/CountDevice.java
index 4d01dfb5c64..11c480bb5f9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/CountDevice.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/CountDevice.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.commons.schema.column.ColumnHeader;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IAstVisitor;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis;
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 118ab56940d..8a57ff1d024 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
@@ -28,6 +28,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Cast;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.CoalesceExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ComparisonExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DereferenceExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExcludedPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExistsPredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Extract;
@@ -50,12 +51,21 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NotExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NullIfExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Offset;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternAlternation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternConcatenation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternPermutation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternVariable;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedComparisonExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Row;
+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.Select;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SelectItem;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SetOperation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleCaseExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleGroupBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SingleColumn;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Delete.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Delete.java
index a6130a857e5..3173acde25a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Delete.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Delete.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IAstVisitor;
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.ast.Table;
import org.apache.iotdb.db.storageengine.dataregion.modification.TableDeletionEntry;
import com.google.common.collect.ImmutableList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
index c061fed4405..87657581d70 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
@@ -33,6 +33,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.planner.Symbol;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IAstVisitor;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.execution.operator.schema.source.DeviceBlackListConstructor;
import org.apache.iotdb.db.queryengine.execution.operator.schema.source.TableDeviceQuerySource;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Insert.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Insert.java
index 55459f961a8..63041774813 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Insert.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Insert.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import com.google.common.collect.ImmutableList;
import org.apache.tsfile.read.common.type.LongType;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowDevice.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowDevice.java
index 2e46c31c7ca..120ce603e92 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowDevice.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/ShowDevice.java
@@ -28,6 +28,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IAstVisitor;
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.Offset;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
import org.apache.iotdb.db.queryengine.execution.operator.schema.source.TableDeviceQuerySource;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Update.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Update.java
index 9fafb524371..934faf1eae5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Update.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/Update.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IAstVisitor;
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.Table;
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/AstBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
index 411439e2747..99d193f79eb 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
@@ -38,6 +38,7 @@ import org.apache.iotdb.db.node_commons.common.SqlDialect;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AliasedRelation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AllColumns;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AllRows;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AnchorPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ArithmeticBinaryExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ArithmeticUnaryExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.BetweenPredicate;
@@ -54,6 +55,9 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DataType;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DataTypeParameter;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DereferenceExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DoubleLiteral;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.EmptyPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Except;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExcludedPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExistsPredicate;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Extract;
@@ -68,6 +72,7 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.IfExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.InListExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.InPredicate;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Intersect;
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;
@@ -77,6 +82,7 @@ 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.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;
@@ -84,36 +90,60 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NullIfExpression
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NullLiteral;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NumericParameter;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Offset;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OneOrMoreQuantifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Parameter;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternAlternation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternConcatenation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternPermutation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternQuantifier;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternVariable;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ProcessingMode;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedComparisonExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QueryBody;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RangeQuantifier;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Row;
+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.Select;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SelectItem;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleCaseExpression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SimpleGroupBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SingleColumn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SortItem;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
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;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableExpressionType;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionArgument;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionInvocation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionTableArgument;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableSubquery;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Trim;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TypeParameter;
+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.VariableDefinition;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WhenClause;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Window;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowDefinition;
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.node_commons.plan.relational.sql.ast.With;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WithQuery;
+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.parser.ParsingException;
import org.apache.iotdb.db.protocol.session.IClientSession;
import org.apache.iotdb.db.queryengine.execution.operator.process.copyto.CopyToOptions;
@@ -121,7 +151,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AddColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AlterColumnDataType;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AlterDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AlterPipe;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AnchorPattern;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AsofJoinOn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ClearCache;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ColumnDefinition;
@@ -152,9 +181,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropPipePlugin;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropSubscription;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropTable;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropTopic;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.EmptyPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Except;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExcludedPattern;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Execute;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExecuteImmediate;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Explain;
@@ -163,29 +189,16 @@ 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.Intersect;
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.MeasureDefinition;
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.OneOrMoreQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternAlternation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternConcatenation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternPermutation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternVariable;
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.QuantifiedPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuerySpecification;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RangeQuantifier;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ReconstructRegion;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RemoveAINode;
@@ -194,8 +207,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RemoveDataNode;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RemoveRegion;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameTable;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetColumnComment;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetConfiguration;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
@@ -231,26 +242,15 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTables;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowTopics;
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.SkipTo;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StartPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StartRepairData;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopRepairData;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubsetDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionArgument;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionInvocation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionTableArgument;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Union;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.UnloadModel;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Update;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.UpdateAssignment;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Use;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.VariableDefinition;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ViewFieldDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WindowDefinition;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ZeroOrMoreQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ZeroOrOneQuantifier;
import org.apache.iotdb.db.queryengine.plan.relational.sql.util.AstUtil;
import org.apache.iotdb.db.queryengine.plan.relational.sql.util.QueryUtil;
import org.apache.iotdb.db.queryengine.plan.relational.type.AuthorRType;
@@ -315,29 +315,29 @@ import static org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory
import static org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.TAG;
import static org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.TIME;
import static org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinScalarFunction.DATE_BIN;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AnchorPattern.Type.PARTITION_END;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.AnchorPattern.Type.PARTITION_START;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.GroupingSets.Type.CUBE;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.GroupingSets.Type.EXPLICIT;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.GroupingSets.Type.ROLLUP;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ALL_OMIT_EMPTY;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ALL_SHOW_EMPTY;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ALL_WITH_UNMATCHED;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ONE;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ProcessingMode.Mode.FINAL;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ProcessingMode.Mode.RUNNING;
import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName.mapIdentifier;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.skipPastLastRow;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.skipToFirst;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.skipToLast;
+import static org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SkipTo.skipToNextRow;
import static org.apache.iotdb.db.queryengine.plan.execution.config.TableConfigTaskVisitor.DATABASE_NOT_SPECIFIED;
import static org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.SERVICE_MANAGEMENT_NOT_SUPPORTED;
import static org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.parseDateTimeFormat;
import static org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.parseIdentifier;
import static org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.parseNodeString;
import static org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.parseStringLiteral;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AnchorPattern.Type.PARTITION_END;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AnchorPattern.Type.PARTITION_START;
import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AsofJoinOn.constructAsofJoinOn;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ALL_OMIT_EMPTY;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ALL_SHOW_EMPTY;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ALL_WITH_UNMATCHED;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation.RowsPerMatch.ONE;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.skipPastLastRow;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.skipToFirst;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.skipToLast;
-import static org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SkipTo.skipToNextRow;
import static org.apache.iotdb.db.queryengine.plan.relational.sql.util.QueryUtil.selectList;
import static org.apache.iotdb.db.queryengine.plan.relational.sql.util.QueryUtil.table;
import static org.apache.iotdb.db.utils.TimestampPrecisionUtils.currPrecision;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/rewrite/ShowRewrite.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/rewrite/ShowRewrite.java
index 9d4a66a1cf9..a6c933efedc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/rewrite/ShowRewrite.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/rewrite/ShowRewrite.java
@@ -29,13 +29,13 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Parameter;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SingleColumn;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Statement;
import org.apache.iotdb.db.queryengine.execution.warnings.WarningCollector;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.StatementAnalyzerFactory;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CountStatement;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowExternalService;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowQueriesStatement;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowStatement;
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/queryengine/plan/relational/sql/util/CommonQuerySqlFormatter.java
index 762200bf1a3..714bcdccc5c 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/queryengine/plan/relational/sql/util/CommonQuerySqlFormatter.java
@@ -22,22 +22,34 @@ package org.apache.iotdb.db.queryengine.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;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.CommonQueryAstVisitor;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Except;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Fill;
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.Limit;
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;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Row;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.RowPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SingleColumn;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionArgument;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionInvocation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableFunctionTableArgument;
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;
@@ -45,6 +57,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.NaturalJoin;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.Iterator;
import java.util.List;
@@ -52,15 +65,32 @@ import java.util.List;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.ImmutableList.toImmutableList;
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;
public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Integer> {
- protected final SqlFormatter.SqlBuilder builder;
+ protected static final String INDENT = " ";
+ protected final SqlBuilder builder;
public CommonQuerySqlFormatter(StringBuilder builder) {
- this.builder = new SqlFormatter.SqlBuilder(builder);
+ this.builder = new SqlBuilder(builder);
+ }
+
+ protected static String formatName(Identifier identifier) {
+ return ExpressionFormatter.formatExpression(identifier);
+ }
+
+ public static String formatName(QualifiedName name) {
+ return name.getOriginalParts().stream()
+ .map(CommonQuerySqlFormatter::formatName)
+ .collect(joining("."));
+ }
+
+ protected static String formatExpression(Expression expression) {
+ return ExpressionFormatter.formatExpression(expression);
}
@Override
@@ -71,7 +101,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
@Override
public Void visitExpression(Expression node, Integer indent) {
checkArgument(indent == 0, "visitExpression should only be called at root");
- builder.append(SqlFormatter.formatExpression(node));
+ builder.append(formatExpression(node));
return null;
}
@@ -88,7 +118,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
Iterator<WithQuery> queries = with.getQueries().iterator();
while (queries.hasNext()) {
WithQuery query = queries.next();
- append(indent, SqlFormatter.formatName(query.getName()));
+ append(indent, formatName(query.getName()));
query
.getColumnNames()
.ifPresent(columnNames -> appendAliasColumns(builder, columnNames));
@@ -113,7 +143,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
append(indent, "FILL METHOD ").append(node.getFillMethod().name());
if (node.getFillMethod() == FillPolicy.CONSTANT) {
- builder.append(SqlFormatter.formatExpression(node.getFillValue().get()));
+ builder.append(formatExpression(node.getFillValue().get()));
} else if (node.getFillMethod() == FillPolicy.LINEAR) {
node.getTimeColumnIndex()
.ifPresent(index -> builder.append(" TIME_COLUMN ").append(String.valueOf(index)));
@@ -124,7 +154,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
.append(" FILL_GROUP ")
.append(
elements.stream()
- .map(SqlFormatter::formatExpression)
+ .map(CommonQuerySqlFormatter::formatExpression)
.collect(joining(", "))));
} else if (node.getFillMethod() == FillPolicy.PREVIOUS) {
node.getTimeBound()
@@ -138,7 +168,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
.append(" FILL_GROUP ")
.append(
elements.stream()
- .map(SqlFormatter::formatExpression)
+ .map(CommonQuerySqlFormatter::formatExpression)
.collect(joining(", "))));
} else {
throw new IllegalArgumentException("Unknown fill method: " + node.getFillMethod());
@@ -154,29 +184,26 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
@Override
public Void visitOffset(Offset node, Integer indent) {
- append(indent, "OFFSET ")
- .append(SqlFormatter.formatExpression(node.getRowCount()))
- .append(" ROWS\n");
+ append(indent, "OFFSET ").append(formatExpression(node.getRowCount())).append(" ROWS\n");
return null;
}
@Override
public Void visitLimit(Limit node, Integer indent) {
- append(indent, "LIMIT ").append(SqlFormatter.formatExpression(node.getRowCount())).append('\n');
+ append(indent, "LIMIT ").append(formatExpression(node.getRowCount())).append('\n');
return null;
}
@Override
public Void visitSingleColumn(SingleColumn node, Integer indent) {
- builder.append(SqlFormatter.formatExpression(node.getExpression()));
- node.getAlias().ifPresent(alias -> builder.append(' ').append(SqlFormatter.formatName(alias)));
+ builder.append(formatExpression(node.getExpression()));
+ node.getAlias().ifPresent(alias -> builder.append(' ').append(formatName(alias)));
return null;
}
@Override
public Void visitAllColumns(AllColumns node, Integer indent) {
- node.getTarget()
- .ifPresent(value -> builder.append(SqlFormatter.formatExpression(value)).append("."));
+ node.getTarget().ifPresent(value -> builder.append(formatExpression(value)).append("."));
builder.append("*");
if (!node.getAliases().isEmpty()) {
@@ -186,7 +213,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
Joiner.on(", ")
.join(
node.getAliases().stream()
- .map(SqlFormatter::formatName)
+ .map(CommonQuerySqlFormatter::formatName)
.collect(toImmutableList())))
.append(")");
}
@@ -222,7 +249,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
builder.append(" USING (").append(Joiner.on(", ").join(using.getColumns())).append(")");
} else if (criteria instanceof JoinOn) {
JoinOn on = (JoinOn) criteria;
- builder.append(" ON ").append(SqlFormatter.formatExpression(on.getExpression()));
+ builder.append(" ON ").append(formatExpression(on.getExpression()));
} else if (!(criteria instanceof NaturalJoin)) {
throw new UnsupportedOperationException("unknown join criteria: " + criteria);
}
@@ -239,7 +266,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
public Void visitAliasedRelation(AliasedRelation node, Integer indent) {
processRelationSuffix(node.getRelation(), indent);
- builder.append(' ').append(SqlFormatter.formatName(node.getAlias()));
+ builder.append(' ').append(formatName(node.getAlias()));
appendAliasColumns(builder, node.getColumnNames());
return null;
@@ -252,7 +279,7 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
boolean first = true;
for (Expression row : node.getRows()) {
builder.append("\n").append(indentString(indent)).append(first ? " " : ", ");
- builder.append(SqlFormatter.formatExpression(row));
+ builder.append(formatExpression(row));
first = false;
}
builder.append('\n');
@@ -316,12 +343,12 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
throw new UnsupportedOperationException("unsupported relation: " + relation);
}
- protected SqlFormatter.SqlBuilder append(int indent, String value) {
+ protected SqlBuilder append(int indent, String value) {
return builder.append(indentString(indent)).append(value);
}
protected static String indentString(int indent) {
- return Strings.repeat(SqlFormatter.INDENT, indent);
+ return Strings.repeat(INDENT, indent);
}
protected void formatDefinitionList(List<String> elements, int indent) {
@@ -336,11 +363,226 @@ public class CommonQuerySqlFormatter implements CommonQueryAstVisitor<Void, Inte
}
}
- protected void appendAliasColumns(SqlFormatter.SqlBuilder builder, List<Identifier> columns) {
+ protected void appendAliasColumns(SqlBuilder builder, List<Identifier> columns) {
if ((columns != null) && !columns.isEmpty()) {
String formattedColumns =
- columns.stream().map(SqlFormatter::formatName).collect(joining(", "));
+ columns.stream().map(CommonQuerySqlFormatter::formatName).collect(joining(", "));
builder.append(" (").append(formattedColumns).append(')');
}
}
+
+ @Override
+ public Void visitRowPattern(RowPattern node, Integer indent) {
+ checkArgument(indent == 0, "visitRowPattern should only be called at root");
+ builder.append(formatPattern(node));
+ return null;
+ }
+
+ @Override
+ public Void visitQuerySpecification(QuerySpecification node, Integer indent) {
+ process(node.getSelect(), indent);
+
+ node.getFrom()
+ .ifPresent(
+ from -> {
+ append(indent, "FROM");
+ builder.append('\n');
+ append(indent, " ");
+ process(from, indent);
+ });
+
+ builder.append('\n');
+
+ node.getWhere()
+ .ifPresent(where -> append(indent, "WHERE " + formatExpression(where)).append('\n'));
+
+ node.getGroupBy()
+ .ifPresent(
+ groupBy ->
+ append(
+ indent,
+ "GROUP BY "
+ + (groupBy.isDistinct() ? " DISTINCT " : "")
+ + org.apache.iotdb.db.node_commons.plan.relational.sql.util
+ .ExpressionFormatter.formatGroupBy(groupBy.getGroupingElements()))
+ .append('\n'));
+
+ node.getHaving()
+ .ifPresent(having -> append(indent, "HAVING " + formatExpression(having)).append('\n'));
+
+ node.getOrderBy().ifPresent(orderBy -> process(orderBy, indent));
+ node.getOffset().ifPresent(offset -> process(offset, indent));
+ node.getLimit().ifPresent(limit -> process(limit, indent));
+ return null;
+ }
+
+ @Override
+ public Void visitSelect(Select node, Integer indent) {
+ append(indent, "SELECT");
+ if (node.isDistinct()) {
+ builder.append(" DISTINCT");
+ }
+
+ if (node.getSelectItems().size() > 1) {
+ boolean first = true;
+ for (org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SelectItem item :
+ node.getSelectItems()) {
+ builder.append("\n").append(indentString(indent)).append(first ? " " : ", ");
+ process(item, indent);
+ first = false;
+ }
+ } else {
+ builder.append(' ');
+ process(com.google.common.collect.Iterables.getOnlyElement(node.getSelectItems()), indent);
+ }
+
+ builder.append('\n');
+
+ return null;
+ }
+
+ @Override
+ public Void visitTable(Table node, Integer indent) {
+ builder.append(formatName(node.getName()));
+ return null;
+ }
+
+ @Override
+ public Void visitUnion(Union node, Integer indent) {
+ Iterator<Relation> relations = node.getRelations().iterator();
+
+ while (relations.hasNext()) {
+ processRelation(relations.next(), indent);
+
+ if (relations.hasNext()) {
+ builder.append("UNION ");
+ if (!node.isDistinct()) {
+ builder.append("ALL ");
+ }
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public Void visitExcept(Except node, Integer indent) {
+ processRelation(node.getLeft(), indent);
+
+ builder.append("EXCEPT ");
+ if (!node.isDistinct()) {
+ builder.append("ALL ");
+ }
+
+ processRelation(node.getRight(), indent);
+
+ return null;
+ }
+
+ @Override
+ public Void visitIntersect(Intersect node, Integer indent) {
+ Iterator<Relation> relations = node.getRelations().iterator();
+
+ while (relations.hasNext()) {
+ processRelation(relations.next(), indent);
+
+ if (relations.hasNext()) {
+ builder.append("INTERSECT ");
+ if (!node.isDistinct()) {
+ builder.append("ALL ");
+ }
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public Void visitTableFunctionInvocation(TableFunctionInvocation node, Integer indent) {
+ append(indent, "TABLE(");
+ appendTableFunctionInvocation(node, indent + 1);
+ builder.append(")");
+ return null;
+ }
+
+ @Override
+ public Void visitTableArgument(TableFunctionTableArgument node, Integer indent) {
+ Relation relation = node.getTable();
+ Node unaliased =
+ relation instanceof AliasedRelation ? ((AliasedRelation) relation).getRelation() : relation;
+ if (unaliased instanceof TableSubquery) {
+ unaliased = ((TableSubquery) unaliased).getQuery();
+ }
+ builder.append("TABLE(");
+ process(unaliased, indent);
+ builder.append(")");
+ if (relation instanceof AliasedRelation) {
+ AliasedRelation aliasedRelation = (AliasedRelation) relation;
+ builder.append(" AS ").append(formatName(aliasedRelation.getAlias()));
+ appendAliasColumns(builder, aliasedRelation.getColumnNames());
+ }
+ if (node.getPartitionBy().isPresent()) {
+ builder.append("\n");
+ append(indent, "PARTITION BY ")
+ .append(
+ node.getPartitionBy().get().stream()
+ .map(CommonQuerySqlFormatter::formatExpression)
+ .collect(joining(", ")));
+ }
+ node.getOrderBy()
+ .ifPresent(
+ orderBy -> {
+ builder.append("\n");
+ append(indent, formatOrderBy(orderBy));
+ });
+
+ return null;
+ }
+
+ private void appendTableFunctionInvocation(TableFunctionInvocation node, Integer indent) {
+ builder.append(formatName(node.getName())).append("(\n");
+ appendTableFunctionArguments(node.getArguments(), indent + 1);
+ builder.append(")");
+ }
+
+ private void appendTableFunctionArguments(List<TableFunctionArgument> arguments, int indent) {
+ for (int i = 0; i < arguments.size(); i++) {
+ TableFunctionArgument argument = arguments.get(i);
+ if (argument.getName().isPresent()) {
+ append(indent, formatName(argument.getName().get()));
+ builder.append(" => ");
+ } else {
+ append(indent, "");
+ }
+ Node value = argument.getValue();
+ if (value instanceof Expression) {
+ builder.append(formatExpression((Expression) value));
+ } else {
+ process(value, indent + 1);
+ }
+ if (i < arguments.size() - 1) {
+ builder.append(",\n");
+ }
+ }
+ }
+
+ protected static class SqlBuilder {
+ private final StringBuilder builder;
+
+ public SqlBuilder(StringBuilder builder) {
+ this.builder = requireNonNull(builder, "builder is null");
+ }
+
+ @CanIgnoreReturnValue
+ public SqlBuilder append(CharSequence value) {
+ builder.append(value);
+ return this;
+ }
+
+ @CanIgnoreReturnValue
+ public SqlBuilder append(char c) {
+ builder.append(c);
+ return this;
+ }
+ }
}
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 a57b5893510..0ac347699f1 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
@@ -19,12 +19,11 @@
package org.apache.iotdb.db.queryengine.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.Expression;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
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.TableSubquery;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
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;
@@ -47,20 +46,14 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropPipePlugin;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropSubscription;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropTable;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DropTopic;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Except;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Explain;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExplainAnalyze;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Insert;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Intersect;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadTsFile;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternRecognitionRelation;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Property;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RenameTable;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetColumnComment;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetProperties;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SetTableComment;
@@ -80,277 +73,27 @@ 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.StartPipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StopPipe;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionArgument;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionInvocation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableFunctionTableArgument;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Union;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Update;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.UpdateAssignment;
import com.google.common.base.Joiner;
-import java.util.Iterator;
import java.util.List;
import java.util.Objects;
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkState;
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;
-public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
+public final class DataNodeSqlFormatter extends CommonQuerySqlFormatter
implements AstVisitor<Void, Integer> {
- public DataNodeSqlFormatter(StringBuilder builder) {
- super(builder);
- }
-
- @Override
- public Void visitRowPattern(RowPattern node, Integer indent) {
- checkArgument(indent == 0, "visitRowPattern should only be called at root");
- builder.append(formatPattern(node));
- return null;
- }
-
- @Override
- public Void visitQuerySpecification(QuerySpecification node, Integer indent) {
- process(node.getSelect(), indent);
-
- node.getFrom()
- .ifPresent(
- from -> {
- append(indent, "FROM");
- builder.append('\n');
- append(indent, " ");
- process(from, indent);
- });
-
- builder.append('\n');
-
- node.getWhere()
- .ifPresent(
- where -> append(indent, "WHERE " + SqlFormatter.formatExpression(where)).append('\n'));
-
- node.getGroupBy()
- .ifPresent(
- groupBy ->
- append(
- indent,
- "GROUP BY "
- + (groupBy.isDistinct() ? " DISTINCT " : "")
- + org.apache.iotdb.db.node_commons.plan.relational.sql.util
- .ExpressionFormatter.formatGroupBy(groupBy.getGroupingElements()))
- .append('\n'));
-
- node.getHaving()
- .ifPresent(
- having ->
- append(indent, "HAVING " + SqlFormatter.formatExpression(having)).append('\n'));
-
- node.getOrderBy().ifPresent(orderBy -> process(orderBy, indent));
- node.getOffset().ifPresent(offset -> process(offset, indent));
- node.getLimit().ifPresent(limit -> process(limit, indent));
- return null;
- }
-
- @Override
- public Void visitSelect(Select node, Integer indent) {
- append(indent, "SELECT");
- if (node.isDistinct()) {
- builder.append(" DISTINCT");
- }
-
- if (node.getSelectItems().size() > 1) {
- boolean first = true;
- for (org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SelectItem item :
- node.getSelectItems()) {
- builder.append("\n").append(indentString(indent)).append(first ? " " : ", ");
- process(item, indent);
- first = false;
- }
- } else {
- builder.append(' ');
- process(com.google.common.collect.Iterables.getOnlyElement(node.getSelectItems()), indent);
- }
-
- builder.append('\n');
-
- return null;
- }
-
- @Override
- public Void visitTable(Table node, Integer indent) {
- builder.append(SqlFormatter.formatName(node.getName()));
- return null;
- }
-
- @Override
- public Void visitPatternRecognitionRelation(PatternRecognitionRelation node, Integer indent) {
- processRelationSuffix(node.getInput(), indent);
-
- builder.append(" MATCH_RECOGNIZE (\n");
- if (!node.getPartitionBy().isEmpty()) {
- append(indent + 1, "PARTITION BY ")
- .append(
- node.getPartitionBy().stream()
- .map(
- org.apache.iotdb.db.node_commons.plan.relational.sql.util.ExpressionFormatter
- ::formatExpression)
- .collect(joining(", ")))
- .append("\n");
- }
- if (node.getOrderBy().isPresent()) {
- process(node.getOrderBy().get(), indent + 1);
- }
- if (!node.getMeasures().isEmpty()) {
- append(indent + 1, "MEASURES");
- formatDefinitionList(
- node.getMeasures().stream()
- .map(
- measure ->
- SqlFormatter.formatExpression(measure.getExpression())
- + " AS "
- + SqlFormatter.formatExpression(measure.getName()))
- .collect(com.google.common.collect.ImmutableList.toImmutableList()),
- indent + 2);
- }
- if (node.getRowsPerMatch().isPresent()) {
- String rowsPerMatch;
- switch (node.getRowsPerMatch().get()) {
- case ONE:
- rowsPerMatch = "ONE ROW PER MATCH";
- break;
- case ALL_SHOW_EMPTY:
- rowsPerMatch = "ALL ROWS PER MATCH SHOW EMPTY MATCHES";
- break;
- case ALL_OMIT_EMPTY:
- rowsPerMatch = "ALL ROWS PER MATCH OMIT EMPTY MATCHES";
- break;
- case ALL_WITH_UNMATCHED:
- rowsPerMatch = "ALL ROWS PER MATCH WITH UNMATCHED ROWS";
- break;
- default:
- throw new IllegalStateException(
- "unexpected rowsPerMatch: " + node.getRowsPerMatch().get());
- }
- append(indent + 1, rowsPerMatch).append("\n");
- }
- if (node.getAfterMatchSkipTo().isPresent()) {
- String skipTo;
- switch (node.getAfterMatchSkipTo().get().getPosition()) {
- case PAST_LAST:
- skipTo = "AFTER MATCH SKIP PAST LAST ROW";
- break;
- case NEXT:
- skipTo = "AFTER MATCH SKIP TO NEXT ROW";
- break;
- case LAST:
- checkState(
- node.getAfterMatchSkipTo().get().getIdentifier().isPresent(),
- "missing identifier in AFTER MATCH SKIP TO LAST");
- skipTo =
- "AFTER MATCH SKIP TO LAST "
- + SqlFormatter.formatExpression(
- node.getAfterMatchSkipTo().get().getIdentifier().get());
- break;
- case FIRST:
- checkState(
- node.getAfterMatchSkipTo().get().getIdentifier().isPresent(),
- "missing identifier in AFTER MATCH SKIP TO FIRST");
- skipTo =
- "AFTER MATCH SKIP TO FIRST "
- + SqlFormatter.formatExpression(
- node.getAfterMatchSkipTo().get().getIdentifier().get());
- break;
- default:
- throw new IllegalStateException("unexpected skipTo: " + node.getAfterMatchSkipTo().get());
- }
- append(indent + 1, skipTo).append("\n");
- }
- append(indent + 1, "PATTERN (").append(formatPattern(node.getPattern())).append(")\n");
- if (!node.getSubsets().isEmpty()) {
- append(indent + 1, "SUBSET");
- formatDefinitionList(
- node.getSubsets().stream()
- .map(
- subset ->
- SqlFormatter.formatExpression(subset.getName())
- + " = "
- + subset.getIdentifiers().stream()
- .map(
- org.apache.iotdb.db.node_commons.plan.relational.sql.util
- .ExpressionFormatter
- ::formatExpression)
- .collect(joining(", ", "(", ")")))
- .collect(com.google.common.collect.ImmutableList.toImmutableList()),
- indent + 2);
- }
- append(indent + 1, "DEFINE");
- formatDefinitionList(
- node.getVariableDefinitions().stream()
- .map(
- variable ->
- SqlFormatter.formatExpression(variable.getName())
- + " AS "
- + SqlFormatter.formatExpression(variable.getExpression()))
- .collect(com.google.common.collect.ImmutableList.toImmutableList()),
- indent + 2);
-
- builder.append(")");
-
- return null;
- }
-
- @Override
- public Void visitUnion(Union node, Integer indent) {
- Iterator<Relation> relations = node.getRelations().iterator();
-
- while (relations.hasNext()) {
- processRelation(relations.next(), indent);
-
- if (relations.hasNext()) {
- builder.append("UNION ");
- if (!node.isDistinct()) {
- builder.append("ALL ");
- }
- }
- }
-
- return null;
- }
-
- @Override
- public Void visitExcept(Except node, Integer indent) {
- processRelation(node.getLeft(), indent);
-
- builder.append("EXCEPT ");
- if (!node.isDistinct()) {
- builder.append("ALL ");
- }
-
- processRelation(node.getRight(), indent);
-
- return null;
+ public static String formatDataNodeSql(Node root) {
+ StringBuilder builder = new StringBuilder();
+ new DataNodeSqlFormatter(builder).process(root, 0);
+ return builder.toString();
}
- @Override
- public Void visitIntersect(Intersect node, Integer indent) {
- Iterator<Relation> relations = node.getRelations().iterator();
-
- while (relations.hasNext()) {
- processRelation(relations.next(), indent);
-
- if (relations.hasNext()) {
- builder.append("INTERSECT ");
- if (!node.isDistinct()) {
- builder.append("ALL ");
- }
- }
- }
-
- return null;
+ private DataNodeSqlFormatter(StringBuilder builder) {
+ super(builder);
}
@Override
@@ -401,7 +144,8 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
builder.append(" DETAILS");
}
- node.getDbName().ifPresent(db -> builder.append(" FROM ").append(SqlFormatter.formatName(db)));
+ node.getDbName()
+ .ifPresent(db -> builder.append(" FROM ").append(CommonQuerySqlFormatter.formatName(db)));
return null;
}
@@ -456,9 +200,13 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
@Override
public Void visitDelete(Delete node, Integer indent) {
- builder.append("DELETE FROM ").append(SqlFormatter.formatName(node.getTable().getName()));
+ builder
+ .append("DELETE FROM ")
+ .append(CommonQuerySqlFormatter.formatName(node.getTable().getName()));
node.getWhere()
- .ifPresent(where -> builder.append(" WHERE ").append(SqlFormatter.formatExpression(where)));
+ .ifPresent(
+ where ->
+ builder.append(" WHERE ").append(CommonQuerySqlFormatter.formatExpression(where)));
return null;
}
@@ -490,7 +238,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
if (node.isExists()) {
builder.append("IF EXISTS ");
}
- builder.append(SqlFormatter.formatName(node.getDbName()));
+ builder.append(CommonQuerySqlFormatter.formatName(node.getDbName()));
return null;
}
@@ -500,7 +248,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
if (node.isIfNotExists()) {
builder.append("IF NOT EXISTS ");
}
- String tableName = SqlFormatter.formatName(node.getName());
+ String tableName = CommonQuerySqlFormatter.formatName(node.getName());
builder.append(tableName).append(" (\n");
String elementIndent = indentString(indent + 1);
@@ -534,7 +282,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
builder.append("OR REPLACE ");
}
builder.append("VIEW ");
- String tableName = SqlFormatter.formatName(node.getName());
+ String tableName = CommonQuerySqlFormatter.formatName(node.getName());
builder.append(tableName).append(" (\n");
String elementIndent = indentString(indent + 1);
@@ -572,7 +320,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
if (node.isExists()) {
builder.append("IF EXISTS ");
}
- builder.append(SqlFormatter.formatName(node.getTableName()));
+ builder.append(CommonQuerySqlFormatter.formatName(node.getTableName()));
return null;
}
@@ -586,9 +334,9 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
}
builder
- .append(SqlFormatter.formatName(node.getSource()))
+ .append(CommonQuerySqlFormatter.formatName(node.getSource()))
.append(" RENAME TO ")
- .append(SqlFormatter.formatName(node.getTarget()));
+ .append(CommonQuerySqlFormatter.formatName(node.getTarget()));
return null;
}
@@ -610,7 +358,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
}
builder
- .append(SqlFormatter.formatName(node.getName()))
+ .append(CommonQuerySqlFormatter.formatName(node.getName()))
.append(" SET PROPERTIES ")
.append(joinProperties(node.getProperties()));
@@ -625,15 +373,15 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
builder.append("IF EXISTS ");
}
- builder.append(SqlFormatter.formatName(node.getTable())).append("RENAME COLUMN ");
+ builder.append(CommonQuerySqlFormatter.formatName(node.getTable())).append("RENAME COLUMN ");
if (node.columnIfExists()) {
builder.append("IF EXISTS ");
}
builder
- .append(SqlFormatter.formatName(node.getSource()))
+ .append(CommonQuerySqlFormatter.formatName(node.getSource()))
.append(" TO ")
- .append(SqlFormatter.formatName(node.getTarget()));
+ .append(CommonQuerySqlFormatter.formatName(node.getTarget()));
return null;
}
@@ -646,12 +394,12 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
builder.append("IF EXISTS ");
}
- builder.append(SqlFormatter.formatName(node.getTable())).append("DROP COLUMN ");
+ builder.append(CommonQuerySqlFormatter.formatName(node.getTable())).append("DROP COLUMN ");
if (node.columnIfExists()) {
builder.append("IF EXISTS ");
}
- builder.append(SqlFormatter.formatName(node.getField()));
+ builder.append(CommonQuerySqlFormatter.formatName(node.getField()));
return null;
}
@@ -664,7 +412,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
builder.append("IF EXISTS ");
}
- builder.append(SqlFormatter.formatName(node.getTableName())).append("ADD COLUMN ");
+ builder.append(CommonQuerySqlFormatter.formatName(node.getTableName())).append("ADD COLUMN ");
if (node.columnIfNotExists()) {
builder.append("IF NOT EXISTS ");
}
@@ -679,7 +427,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
builder
.append("COMMENT ON")
.append(node.isView() ? " VIEW " : " TABLE ")
- .append(SqlFormatter.formatName(node.getTableName()))
+ .append(CommonQuerySqlFormatter.formatName(node.getTableName()))
.append(" IS ")
.append(node.getComment());
@@ -690,9 +438,9 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
public Void visitSetColumnComment(SetColumnComment node, Integer indent) {
builder
.append("COMMENT ON COLUMN ")
- .append(SqlFormatter.formatName(node.getTable()))
+ .append(CommonQuerySqlFormatter.formatName(node.getTable()))
.append(".")
- .append(SqlFormatter.formatName(node.getField()))
+ .append(CommonQuerySqlFormatter.formatName(node.getField()))
.append(" IS ")
.append(node.getComment());
return null;
@@ -700,7 +448,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
@Override
public Void visitInsert(Insert node, Integer indent) {
- builder.append("INSERT INTO ").append(SqlFormatter.formatName(node.getTarget()));
+ builder.append("INSERT INTO ").append(CommonQuerySqlFormatter.formatName(node.getTarget()));
node.getColumns()
.ifPresent(
@@ -717,7 +465,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
public Void visitUpdate(Update node, Integer indent) {
builder
.append("UPDATE ")
- .append(SqlFormatter.formatName(node.getTable().getName()))
+ .append(CommonQuerySqlFormatter.formatName(node.getTable().getName()))
.append(" SET");
int setCounter = node.getAssignments().size() - 1;
for (UpdateAssignment assignment : node.getAssignments()) {
@@ -726,7 +474,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
.append(indentString(indent + 1))
.append(((Identifier) assignment.getName()).getValue())
.append(" = ")
- .append(SqlFormatter.formatExpression(assignment.getValue()));
+ .append(CommonQuerySqlFormatter.formatExpression(assignment.getValue()));
if (setCounter > 0) {
builder.append(",");
}
@@ -739,7 +487,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
.append("\n")
.append(indentString(indent))
.append("WHERE ")
- .append(SqlFormatter.formatExpression(where)));
+ .append(CommonQuerySqlFormatter.formatExpression(where)));
return null;
}
@@ -1278,48 +1026,6 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
return null;
}
- @Override
- public Void visitTableFunctionInvocation(TableFunctionInvocation node, Integer indent) {
- append(indent, "TABLE(");
- appendTableFunctionInvocation(node, indent + 1);
- builder.append(")");
- return null;
- }
-
- @Override
- public Void visitTableArgument(TableFunctionTableArgument node, Integer indent) {
- Relation relation = node.getTable();
- Node unaliased =
- relation instanceof AliasedRelation ? ((AliasedRelation) relation).getRelation() : relation;
- if (unaliased instanceof TableSubquery) {
- unaliased = ((TableSubquery) unaliased).getQuery();
- }
- builder.append("TABLE(");
- process(unaliased, indent);
- builder.append(")");
- if (relation instanceof AliasedRelation) {
- AliasedRelation aliasedRelation = (AliasedRelation) relation;
- builder.append(" AS ").append(SqlFormatter.formatName(aliasedRelation.getAlias()));
- appendAliasColumns(builder, aliasedRelation.getColumnNames());
- }
- if (node.getPartitionBy().isPresent()) {
- builder.append("\n");
- append(indent, "PARTITION BY ")
- .append(
- node.getPartitionBy().get().stream()
- .map(SqlFormatter::formatExpression)
- .collect(joining(", ")));
- }
- node.getOrderBy()
- .ifPresent(
- orderBy -> {
- builder.append("\n");
- append(indent, formatOrderBy(orderBy));
- });
-
- return null;
- }
-
@Override
protected boolean needsParenthesesForRelationSuffix(Relation relation) {
return super.needsParenthesesForRelationSuffix(relation)
@@ -1333,7 +1039,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
@Override
protected String formatSimpleTableRelationName(Relation relation) {
- return SqlFormatter.formatName(((Table) relation).getName());
+ return CommonQuerySqlFormatter.formatName(((Table) relation).getName());
}
private String formatPropertiesMultiLine(List<Property> properties) {
@@ -1345,12 +1051,13 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
properties.stream()
.map(
element ->
- SqlFormatter.INDENT
- + SqlFormatter.formatName(element.getName())
+ CommonQuerySqlFormatter.INDENT
+ + CommonQuerySqlFormatter.formatName(element.getName())
+ " = "
+ (element.isSetToDefault()
? "DEFAULT"
- : SqlFormatter.formatExpression(element.getNonDefaultValue())))
+ : CommonQuerySqlFormatter.formatExpression(
+ element.getNonDefaultValue())))
.collect(joining(",\n"));
return "\nWITH (\n" + propertyList + "\n)";
@@ -1359,7 +1066,7 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
private String formatColumnDefinition(ColumnDefinition column) {
StringBuilder stringBuilder =
new StringBuilder()
- .append(SqlFormatter.formatName(column.getName()))
+ .append(CommonQuerySqlFormatter.formatName(column.getName()))
.append(" ")
.append(column.getType())
.append(" ")
@@ -1377,38 +1084,11 @@ public class DataNodeSqlFormatter extends CommonQuerySqlFormatter
return properties.stream()
.map(
element ->
- SqlFormatter.formatName(element.getName())
+ CommonQuerySqlFormatter.formatName(element.getName())
+ " = "
+ (element.isSetToDefault()
? "DEFAULT"
- : SqlFormatter.formatExpression(element.getNonDefaultValue())))
+ : CommonQuerySqlFormatter.formatExpression(element.getNonDefaultValue())))
.collect(joining(", "));
}
-
- private void appendTableFunctionInvocation(TableFunctionInvocation node, Integer indent) {
- builder.append(SqlFormatter.formatName(node.getName())).append("(\n");
- appendTableFunctionArguments(node.getArguments(), indent + 1);
- builder.append(")");
- }
-
- private void appendTableFunctionArguments(List<TableFunctionArgument> arguments, int indent) {
- for (int i = 0; i < arguments.size(); i++) {
- TableFunctionArgument argument = arguments.get(i);
- if (argument.getName().isPresent()) {
- append(indent, SqlFormatter.formatName(argument.getName().get()));
- builder.append(" => ");
- } else {
- append(indent, "");
- }
- Node value = argument.getValue();
- if (value instanceof Expression) {
- builder.append(SqlFormatter.formatExpression((Expression) value));
- } else {
- process(value, indent + 1);
- }
- if (i < arguments.size() - 1) {
- builder.append(",\n");
- }
- }
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/QueryUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/QueryUtil.java
index fd65156ff1e..14edc4027ba 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/QueryUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/QueryUtil.java
@@ -35,18 +35,18 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OrderBy;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Query;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QueryBody;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuerySpecification;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Relation;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SearchedCaseExpression;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Select;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SelectItem;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SingleColumn;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SortItem;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.StringLiteral;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Table;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.TableSubquery;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WhenClause;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuerySpecification;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Select;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WindowDefinition;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.WindowDefinition;
import com.google.common.collect.ImmutableList;
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/queryengine/plan/relational/sql/util/RowPatternFormatter.java
index 52580801438..c25057d15a0 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/queryengine/plan/relational/sql/util/RowPatternFormatter.java
@@ -19,22 +19,22 @@
package org.apache.iotdb.db.queryengine.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;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.EmptyPattern;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.ExcludedPattern;
import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.OneOrMoreQuantifier;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternAlternation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternConcatenation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternPermutation;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.PatternVariable;
+import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QuantifiedPattern;
+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 org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AnchorPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.EmptyPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExcludedPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.OneOrMoreQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternAlternation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternConcatenation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternPermutation;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PatternVariable;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QuantifiedPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RangeQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RowPattern;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ZeroOrMoreQuantifier;
-import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ZeroOrOneQuantifier;
import static java.util.stream.Collectors.joining;
@@ -45,7 +45,7 @@ public final class RowPatternFormatter {
return new Formatter().process(pattern, null);
}
- public static class Formatter implements AstVisitor<String, Void> {
+ public static class Formatter implements CommonQueryAstVisitor<String, Void> {
@Override
public String visitNode(Node node, Void context) {
throw new UnsupportedOperationException();
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
deleted file mode 100644
index 69bfe239750..00000000000
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/util/SqlFormatter.java
+++ /dev/null
@@ -1,76 +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.Expression;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName;
-import org.apache.iotdb.db.node_commons.plan.relational.sql.util.ExpressionFormatter;
-
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-
-import static java.util.Objects.requireNonNull;
-import static java.util.stream.Collectors.joining;
-
-public final class SqlFormatter {
-
- protected static final String INDENT = " ";
-
- private SqlFormatter() {}
-
- public static String formatSql(Node root) {
- StringBuilder builder = new StringBuilder();
- new DataNodeSqlFormatter(builder).process(root, 0);
- return builder.toString();
- }
-
- static String formatName(Identifier identifier) {
- return ExpressionFormatter.formatExpression(identifier);
- }
-
- public static String formatName(QualifiedName name) {
- return name.getOriginalParts().stream().map(SqlFormatter::formatName).collect(joining("."));
- }
-
- static String formatExpression(Expression expression) {
- return ExpressionFormatter.formatExpression(expression);
- }
-
- protected static class SqlBuilder {
- private final StringBuilder builder;
-
- public SqlBuilder(StringBuilder builder) {
- this.builder = requireNonNull(builder, "builder is null");
- }
-
- @CanIgnoreReturnValue
- public SqlBuilder append(CharSequence value) {
- builder.append(value);
- return this;
- }
-
- @CanIgnoreReturnValue
- public SqlBuilder append(char c) {
- builder.append(c);
- return this;
- }
- }
-}