This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 0d9fc3a8801 Add query metrics for table model
0d9fc3a8801 is described below
commit 0d9fc3a8801a714d7df879a06df185eb005fe57f
Author: Beyyes <[email protected]>
AuthorDate: Tue Sep 3 11:45:11 2024 +0800
Add query metrics for table model
---
.../queryengine/metric/QueryPlanCostMetricSet.java | 149 +++++++++++++++++----
.../iotdb/db/queryengine/plan/Coordinator.java | 14 +-
.../queryengine/plan/analyze/AnalyzeVisitor.java | 11 +-
.../db/queryengine/plan/analyze/Analyzer.java | 4 +-
.../queryengine/plan/analyze/TemplatedAnalyze.java | 3 +-
.../queryengine/plan/execution/QueryExecution.java | 9 +-
.../TableModelStatementMemorySourceVisitor.java | 3 +-
.../queryengine/plan/planner/LogicalPlanner.java | 7 +-
.../plan/relational/analyzer/Analyzer.java | 9 ++
...ogicalPlanner.java => TableLogicalPlanner.java} | 19 ++-
...nalModelPlanner.java => TableModelPlanner.java} | 6 +-
.../distribute/TableDistributedPlanner.java | 12 +-
.../optimizations/PushPredicateIntoTableScan.java | 13 ++
.../plan/relational/analyzer/AnalyzerTest.java | 79 ++++++-----
.../analyzer/LimitOffsetPushDownTest.java | 18 +--
.../plan/relational/analyzer/SortTest.java | 32 ++---
.../plan/relational/analyzer/SubQueryTest.java | 14 +-
.../plan/relational/planner/PlanTester.java | 8 +-
18 files changed, 287 insertions(+), 123 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryPlanCostMetricSet.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryPlanCostMetricSet.java
index da775515688..0b0721fe44b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryPlanCostMetricSet.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryPlanCostMetricSet.java
@@ -32,10 +32,14 @@ import java.util.Arrays;
public class QueryPlanCostMetricSet implements IMetricSet {
private static final QueryPlanCostMetricSet INSTANCE = new
QueryPlanCostMetricSet();
+
+ public static final String TABLE_TYPE = "table";
+ public static final String TREE_TYPE = "tree";
+
public static final String ANALYZER = "analyzer";
public static final String LOGICAL_PLANNER = "logical_planner";
+ public static final String LOGICAL_PLAN_OPTIMIZE = "logical_plan_optimize";
public static final String DISTRIBUTION_PLANNER = "distribution_planner";
-
public static final String PARTITION_FETCHER = "partition_fetcher";
public static final String SCHEMA_FETCHER = "schema_fetcher";
@@ -43,28 +47,58 @@ public class QueryPlanCostMetricSet implements IMetricSet {
// empty constructor
}
- private Timer analyzerTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
- private Timer logicalPlannerTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
- private Timer distributionPlannerTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
- private Timer partitionFetcherTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
- private Timer schemaFetcherTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer treeAnalyzerTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer treeLogicalPlannerTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer treeDistributionPlannerTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer treePartitionFetcherTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer treeSchemaFetcherTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
- public void recordPlanCost(String stage, long costTimeInNanos) {
+ private Timer tableAnalyzerTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer tableLogicalPlannerTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer tableLogicalPlanOptimizerTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer tableDistributionPlannerTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer tablePartitionFetcherTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+ private Timer tableSchemaFetcherTimer =
DoNothingMetricManager.DO_NOTHING_TIMER;
+
+ public void recordPlanCost(String type, String stage, long costTimeInNanos) {
switch (stage) {
case ANALYZER:
- analyzerTimer.updateNanos(costTimeInNanos);
+ if (TREE_TYPE.equals(type)) {
+ treeAnalyzerTimer.updateNanos(costTimeInNanos);
+ } else {
+ tableAnalyzerTimer.updateNanos(costTimeInNanos);
+ }
break;
case LOGICAL_PLANNER:
- logicalPlannerTimer.updateNanos(costTimeInNanos);
+ if (TREE_TYPE.equals(type)) {
+ treeLogicalPlannerTimer.updateNanos(costTimeInNanos);
+ } else {
+ tableLogicalPlannerTimer.updateNanos(costTimeInNanos);
+ }
+ break;
+ case LOGICAL_PLAN_OPTIMIZE:
+ tableLogicalPlanOptimizerTimer.updateNanos(costTimeInNanos);
break;
case DISTRIBUTION_PLANNER:
- distributionPlannerTimer.updateNanos(costTimeInNanos);
+ if (TREE_TYPE.equals(type)) {
+ treeDistributionPlannerTimer.updateNanos(costTimeInNanos);
+ } else {
+ tableDistributionPlannerTimer.updateNanos(costTimeInNanos);
+ }
break;
case PARTITION_FETCHER:
- partitionFetcherTimer.updateNanos(costTimeInNanos);
+ if (TREE_TYPE.equals(type)) {
+ treePartitionFetcherTimer.updateNanos(costTimeInNanos);
+ } else {
+ tablePartitionFetcherTimer.updateNanos(costTimeInNanos);
+ }
break;
case SCHEMA_FETCHER:
- schemaFetcherTimer.updateNanos(costTimeInNanos);
+ if (TREE_TYPE.equals(type)) {
+ treeSchemaFetcherTimer.updateNanos(costTimeInNanos);
+ } else {
+ tableSchemaFetcherTimer.updateNanos(costTimeInNanos);
+ }
break;
default:
throw new UnsupportedOperationException("Unsupported stage: " + stage);
@@ -73,34 +107,93 @@ public class QueryPlanCostMetricSet implements IMetricSet {
@Override
public void bindTo(AbstractMetricService metricService) {
- analyzerTimer =
+ treeAnalyzerTimer =
metricService.getOrCreateTimer(
Metric.QUERY_PLAN_COST.toString(),
MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TREE_TYPE,
Tag.STAGE.toString(),
ANALYZER);
- logicalPlannerTimer =
+ treeLogicalPlannerTimer =
metricService.getOrCreateTimer(
Metric.QUERY_PLAN_COST.toString(),
MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TREE_TYPE,
Tag.STAGE.toString(),
LOGICAL_PLANNER);
- distributionPlannerTimer =
+ treeDistributionPlannerTimer =
+ metricService.getOrCreateTimer(
+ Metric.QUERY_PLAN_COST.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TREE_TYPE,
+ Tag.STAGE.toString(),
+ DISTRIBUTION_PLANNER);
+ treePartitionFetcherTimer =
+ metricService.getOrCreateTimer(
+ Metric.QUERY_PLAN_COST.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TREE_TYPE,
+ Tag.STAGE.toString(),
+ PARTITION_FETCHER);
+ treeSchemaFetcherTimer =
+ metricService.getOrCreateTimer(
+ Metric.QUERY_PLAN_COST.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TREE_TYPE,
+ Tag.STAGE.toString(),
+ SCHEMA_FETCHER);
+
+ tableAnalyzerTimer =
+ metricService.getOrCreateTimer(
+ Metric.QUERY_PLAN_COST.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TABLE_TYPE,
+ Tag.STAGE.toString(),
+ ANALYZER);
+ tableLogicalPlannerTimer =
+ metricService.getOrCreateTimer(
+ Metric.QUERY_PLAN_COST.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TABLE_TYPE,
+ Tag.STAGE.toString(),
+ LOGICAL_PLANNER);
+ tableLogicalPlanOptimizerTimer =
+ metricService.getOrCreateTimer(
+ Metric.QUERY_PLAN_COST.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TABLE_TYPE,
+ Tag.STAGE.toString(),
+ LOGICAL_PLAN_OPTIMIZE);
+ tableDistributionPlannerTimer =
metricService.getOrCreateTimer(
Metric.QUERY_PLAN_COST.toString(),
MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TABLE_TYPE,
Tag.STAGE.toString(),
DISTRIBUTION_PLANNER);
- partitionFetcherTimer =
+ tablePartitionFetcherTimer =
metricService.getOrCreateTimer(
Metric.QUERY_PLAN_COST.toString(),
MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TABLE_TYPE,
Tag.STAGE.toString(),
PARTITION_FETCHER);
- schemaFetcherTimer =
+ tableSchemaFetcherTimer =
metricService.getOrCreateTimer(
Metric.QUERY_PLAN_COST.toString(),
MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ TABLE_TYPE,
Tag.STAGE.toString(),
SCHEMA_FETCHER);
}
@@ -108,14 +201,24 @@ public class QueryPlanCostMetricSet implements IMetricSet
{
@Override
public void unbindFrom(AbstractMetricService metricService) {
Arrays.asList(
- ANALYZER, LOGICAL_PLANNER, DISTRIBUTION_PLANNER,
PARTITION_FETCHER, SCHEMA_FETCHER)
+ ANALYZER,
+ LOGICAL_PLANNER,
+ LOGICAL_PLAN_OPTIMIZE,
+ DISTRIBUTION_PLANNER,
+ PARTITION_FETCHER,
+ SCHEMA_FETCHER)
.forEach(
stage ->
- metricService.remove(
- MetricType.TIMER,
- Metric.QUERY_PLAN_COST.toString(),
- Tag.STAGE.toString(),
- stage));
+ Arrays.asList(TREE_TYPE, TABLE_TYPE)
+ .forEach(
+ type ->
+ metricService.remove(
+ MetricType.TIMER,
+ Metric.QUERY_PLAN_COST.toString(),
+ Tag.TYPE.toString(),
+ type,
+ Tag.STAGE.toString(),
+ stage)));
}
public static QueryPlanCostMetricSet getInstance() {
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 fff9085efa6..a86dfe1dacf 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
@@ -46,7 +46,7 @@ import
org.apache.iotdb.db.queryengine.plan.execution.config.TableConfigTaskVisi
import
org.apache.iotdb.db.queryengine.plan.execution.config.TreeConfigTaskVisitor;
import org.apache.iotdb.db.queryengine.plan.planner.TreeModelPlanner;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
-import
org.apache.iotdb.db.queryengine.plan.relational.planner.RelationalModelPlanner;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.TableModelPlanner;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AddColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreateDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreateTable;
@@ -291,8 +291,8 @@ public class Coordinator {
queryContext.setTableQuery(true);
queryContext.setTimeOut(timeOut);
queryContext.setStartTime(startTime);
- RelationalModelPlanner relationalModelPlanner =
- new RelationalModelPlanner(
+ TableModelPlanner tableModelPlanner =
+ new TableModelPlanner(
statement.toRelationalStatement(queryContext),
sqlParser,
metadata,
@@ -301,7 +301,7 @@ public class Coordinator {
scheduledExecutor,
SYNC_INTERNAL_SERVICE_CLIENT_MANAGER,
ASYNC_INTERNAL_SERVICE_CLIENT_MANAGER);
- return new QueryExecution(relationalModelPlanner, queryContext, executor);
+ return new QueryExecution(tableModelPlanner, queryContext, executor);
}
private IQueryExecution createQueryExecutionForTableModel(
@@ -340,8 +340,8 @@ public class Coordinator {
if (statement instanceof WrappedInsertStatement) {
((WrappedInsertStatement) statement).setContext(queryContext);
}
- RelationalModelPlanner relationalModelPlanner =
- new RelationalModelPlanner(
+ TableModelPlanner tableModelPlanner =
+ new TableModelPlanner(
statement,
sqlParser,
metadata,
@@ -350,7 +350,7 @@ public class Coordinator {
scheduledExecutor,
SYNC_INTERNAL_SERVICE_CLIENT_MANAGER,
ASYNC_INTERNAL_SERVICE_CLIENT_MANAGER);
- return new QueryExecution(relationalModelPlanner, queryContext, executor);
+ return new QueryExecution(tableModelPlanner, queryContext, executor);
}
public IQueryExecution getQueryExecution(Long queryId) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index 3c55f9588cf..f0a91e5e766 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -200,6 +200,7 @@ import static
org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant
import static
org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant.ENDTIME;
import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.PARTITION_FETCHER;
import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.SCHEMA_FETCHER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TREE_TYPE;
import static
org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils.removeLogicalView;
import static
org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils.validateSchema;
import static
org.apache.iotdb.db.queryengine.plan.analyze.ExpressionAnalyzer.bindSchemaForExpression;
@@ -530,7 +531,8 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
logger.debug("[EndFetchSchema]");
long schemaFetchCost = System.nanoTime() - startTime;
context.setFetchSchemaCost(schemaFetchCost);
- QueryPlanCostMetricSet.getInstance().recordPlanCost(SCHEMA_FETCHER,
schemaFetchCost);
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TREE_TYPE, SCHEMA_FETCHER, schemaFetchCost);
}
analysis.setSchemaTree(schemaTree);
@@ -2215,7 +2217,8 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
}
} finally {
long partitionFetchCost = System.nanoTime() - startTime;
- QueryPlanCostMetricSet.getInstance().recordPlanCost(PARTITION_FETCHER,
partitionFetchCost);
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TREE_TYPE, PARTITION_FETCHER, partitionFetchCost);
context.setFetchPartitionCost(partitionFetchCost);
}
}
@@ -2378,7 +2381,7 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
long startTime = System.nanoTime();
ISchemaTree targetSchemaTree = schemaFetcher.fetchSchema(targetPathTree,
true, context);
QueryPlanCostMetricSet.getInstance()
- .recordPlanCost(SCHEMA_FETCHER, System.nanoTime() - startTime);
+ .recordPlanCost(TREE_TYPE, SCHEMA_FETCHER, System.nanoTime() -
startTime);
deviceViewIntoPathDescriptor.bindType(targetSchemaTree);
analysis.setDeviceViewIntoPathDescriptor(deviceViewIntoPathDescriptor);
@@ -2456,7 +2459,7 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
ISchemaTree targetSchemaTree = schemaFetcher.fetchSchema(targetPathTree,
true, context);
updateSchemaTreeByViews(analysis, targetSchemaTree, context);
QueryPlanCostMetricSet.getInstance()
- .recordPlanCost(SCHEMA_FETCHER, System.nanoTime() - startTime);
+ .recordPlanCost(TREE_TYPE, SCHEMA_FETCHER, System.nanoTime() -
startTime);
intoPathDescriptor.bindType(targetSchemaTree);
analysis.setIntoPathDescriptor(intoPathDescriptor);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
index eca06360c9c..238620b6f48 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
@@ -26,6 +26,7 @@ import
org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaFetcher;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.ANALYZER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TREE_TYPE;
/** Analyze the statement and generate Analysis. */
public class Analyzer {
@@ -51,7 +52,8 @@ public class Analyzer {
}
if (statement.isQuery()) {
- QueryPlanCostMetricSet.getInstance().recordPlanCost(ANALYZER,
System.nanoTime() - startTime);
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TREE_TYPE, ANALYZER, System.nanoTime() - startTime);
}
return analysis;
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
index d3bf070d2be..c1f0971b293 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
@@ -58,6 +58,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.PARTITION_FETCHER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TREE_TYPE;
import static
org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.CONFIG;
import static
org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.DEVICE_EXPRESSION;
import static
org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.END_TIME_EXPRESSION;
@@ -418,7 +419,7 @@ public class TemplatedAnalyze {
}
} finally {
QueryPlanCostMetricSet.getInstance()
- .recordPlanCost(PARTITION_FETCHER, System.nanoTime() - startTime);
+ .recordPlanCost(TREE_TYPE, PARTITION_FETCHER, System.nanoTime() -
startTime);
}
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
index 108b117298c..ff2509f1d69 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
@@ -72,6 +72,7 @@ import static
com.google.common.base.Throwables.throwIfUnchecked;
import static
org.apache.iotdb.db.queryengine.common.DataNodeEndPoints.isSameNode;
import static
org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet.WAIT_FOR_RESULT;
import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.DISTRIBUTION_PLANNER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TREE_TYPE;
/**
* QueryExecution stores all the status of a query which is being prepared or
running inside the MPP
@@ -153,7 +154,7 @@ public class QueryExecution implements IQueryExecution {
@Override
public void start() {
- final long startTime = System.nanoTime();
+ long startTime = System.nanoTime();
if (skipExecute()) {
LOGGER.debug("[SkipExecute]");
if (analysis.isFailed()) {
@@ -184,8 +185,7 @@ public class QueryExecution implements IQueryExecution {
doDistributedPlan();
// update timeout after finishing plan stage
- context.setTimeOut(
- context.getTimeOut() - (System.currentTimeMillis() -
context.getStartTime()));
+ context.setTimeOut(context.getTimeOut() - (System.nanoTime() -
context.getStartTime()));
stateMachine.transitionToPlanned();
if (context.getQueryType() == QueryType.READ) {
@@ -302,7 +302,8 @@ public class QueryExecution implements IQueryExecution {
if (analysis.isQuery()) {
long distributionPlanCost = System.nanoTime() - startTime;
context.setDistributionPlanCost(distributionPlanCost);
- QUERY_PLAN_COST_METRIC_SET.recordPlanCost(DISTRIBUTION_PLANNER,
distributionPlanCost);
+ QUERY_PLAN_COST_METRIC_SET.recordPlanCost(
+ TREE_TYPE, DISTRIBUTION_PLANNER, distributionPlanCost);
}
// if is this Statement is ShowQueryStatement, set its instances to the
highest priority, so
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 ce8065659fa..83c0cdb5af1 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
@@ -26,6 +26,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner;
import org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanGraphPrinter;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.TableLogicalPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableDistributedPlanGenerator;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableDistributedPlanner;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AstVisitor;
@@ -65,7 +66,7 @@ public class TableModelStatementMemorySourceVisitor
new ColumnHeader(IoTDBConstant.COLUMN_DISTRIBUTION_PLAN,
TSDataType.TEXT)),
true);
final LogicalQueryPlan logicalPlan =
- new
org.apache.iotdb.db.queryengine.plan.relational.planner.LogicalPlanner(
+ new TableLogicalPlanner(
context.getQueryContext(),
LocalExecutionPlanner.getInstance().metadata,
context.getQueryContext().getSession(),
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
index 65f28cd4a9e..1a05c5fc6e8 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
@@ -31,6 +31,7 @@ import java.util.Arrays;
import java.util.List;
import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.LOGICAL_PLANNER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TREE_TYPE;
/** Generate a logical plan for the statement. */
public class LogicalPlanner {
@@ -52,13 +53,15 @@ public class LogicalPlanner {
if (analysis.isQuery()) {
long planFinishTime = System.nanoTime();
- QueryPlanCostMetricSet.getInstance()
- .recordPlanCost(LOGICAL_PLANNER, System.nanoTime() - planFinishTime);
context.setLogicalPlanCost(planFinishTime - startTime);
+
for (PlanOptimizer optimizer : optimizers) {
rootNode = optimizer.optimize(rootNode, analysis, context);
}
context.setLogicalOptimizationCost(System.nanoTime() - planFinishTime);
+
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TREE_TYPE, LOGICAL_PLANNER, System.nanoTime() -
planFinishTime);
}
return new LogicalQueryPlan(context, rootNode);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
index f5861cf45fe..683650cb87f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
@@ -23,8 +23,10 @@ import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.common.SessionInfo;
import org.apache.iotdb.db.queryengine.execution.warnings.WarningCollector;
+import org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Expression;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Parameter;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Query;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WrappedInsertStatement;
@@ -32,6 +34,8 @@ import java.util.List;
import java.util.Map;
import static java.util.Objects.requireNonNull;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.ANALYZER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TABLE_TYPE;
public class Analyzer {
@@ -76,11 +80,16 @@ public class Analyzer {
analysis.setDatabaseName(session.getDatabaseName().get());
}
+ long startTime = System.nanoTime();
StatementAnalyzer analyzer =
statementAnalyzerFactory.createStatementAnalyzer(
analysis, context, session, warningCollector,
CorrelationSupport.ALLOWED);
analyzer.analyze(statement);
+ if (statement instanceof Query) {
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TABLE_TYPE, ANALYZER, System.nanoTime() - startTime);
+ }
// TODO access control
// check column access permissions for each table
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/LogicalPlanner.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
similarity index 94%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/LogicalPlanner.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
index 8ba4286183b..5de5aa29236 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/LogicalPlanner.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
@@ -21,6 +21,7 @@ import org.apache.iotdb.db.queryengine.common.SessionInfo;
import org.apache.iotdb.db.queryengine.common.header.ColumnHeader;
import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
import org.apache.iotdb.db.queryengine.execution.warnings.WarningCollector;
+import org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet;
import org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
@@ -64,11 +65,14 @@ import java.util.Objects;
import java.util.Optional;
import static java.util.Objects.requireNonNull;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.LOGICAL_PLANNER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.LOGICAL_PLAN_OPTIMIZE;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TABLE_TYPE;
import static
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowDevice.getDeviceColumnHeaderList;
import static
org.apache.iotdb.db.queryengine.plan.relational.type.InternalTypeManager.getTSDataType;
-public class LogicalPlanner {
- private static final Logger LOG =
LoggerFactory.getLogger(LogicalPlanner.class);
+public class TableLogicalPlanner {
+ private static final Logger LOG =
LoggerFactory.getLogger(TableLogicalPlanner.class);
private final MPPQueryContext queryContext;
private final SessionInfo sessionInfo;
private final SymbolAllocator symbolAllocator = new SymbolAllocator();
@@ -76,7 +80,7 @@ public class LogicalPlanner {
private final Metadata metadata;
private final WarningCollector warningCollector;
- public LogicalPlanner(
+ public TableLogicalPlanner(
MPPQueryContext queryContext,
Metadata metadata,
SessionInfo sessionInfo,
@@ -91,7 +95,7 @@ public class LogicalPlanner {
}
@TestOnly
- public LogicalPlanner(
+ public TableLogicalPlanner(
MPPQueryContext queryContext,
Metadata metadata,
SessionInfo sessionInfo,
@@ -105,9 +109,14 @@ public class LogicalPlanner {
}
public LogicalQueryPlan plan(Analysis analysis) {
+ long startTime = System.nanoTime();
PlanNode planNode = planStatement(analysis, analysis.getStatement());
if (analysis.getStatement() instanceof Query) {
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TABLE_TYPE, LOGICAL_PLANNER, System.nanoTime() -
startTime);
+ startTime = System.nanoTime();
+
for (PlanOptimizer optimizer : planOptimizers) {
planNode =
optimizer.optimize(
@@ -123,6 +132,8 @@ public class LogicalPlanner {
warningCollector,
PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector()));
}
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TABLE_TYPE, LOGICAL_PLAN_OPTIMIZE, System.nanoTime()
- startTime);
}
return new LogicalQueryPlan(queryContext, planNode);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableModelPlanner.java
similarity index 97%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableModelPlanner.java
index 2a2f40e94ca..2df9f797158 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableModelPlanner.java
@@ -47,7 +47,7 @@ import java.util.Collections;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
-public class RelationalModelPlanner implements IPlanner {
+public class TableModelPlanner implements IPlanner {
private final Statement statement;
@@ -69,7 +69,7 @@ public class RelationalModelPlanner implements IPlanner {
private final IClientManager<TEndPoint, AsyncDataNodeInternalServiceClient>
asyncInternalServiceClientManager;
- public RelationalModelPlanner(
+ public TableModelPlanner(
Statement statement,
SqlParser sqlParser,
Metadata metadata,
@@ -107,7 +107,7 @@ public class RelationalModelPlanner implements IPlanner {
@Override
public LogicalQueryPlan doLogicalPlan(IAnalysis analysis, MPPQueryContext
context) {
- return new LogicalPlanner(context, metadata, context.getSession(),
warningCollector)
+ return new TableLogicalPlanner(context, metadata, context.getSession(),
warningCollector)
.plan((Analysis) analysis);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
index 363bcde7a44..069d4024d65 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
@@ -16,6 +16,7 @@ package
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute;
import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import
org.apache.iotdb.db.queryengine.execution.exchange.sink.DownStreamChannelLocation;
+import org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import
org.apache.iotdb.db.queryengine.plan.planner.distribution.WriteFragmentParallelPlanner;
import org.apache.iotdb.db.queryengine.plan.planner.plan.DistributedQueryPlan;
@@ -43,6 +44,8 @@ import java.util.Map;
import static com.google.common.base.Preconditions.checkArgument;
import static
org.apache.iotdb.db.queryengine.execution.warnings.WarningCollector.NOOP;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.DISTRIBUTION_PLANNER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TABLE_TYPE;
public class TableDistributedPlanner {
@@ -62,6 +65,7 @@ public class TableDistributedPlanner {
}
public DistributedQueryPlan plan() {
+ long startTime = System.nanoTime();
TableDistributedPlanGenerator.PlanContext planContext =
new TableDistributedPlanGenerator.PlanContext();
PlanNode outputNodeWithExchange =
generateDistributedPlanWithOptimize(planContext);
@@ -71,9 +75,15 @@ public class TableDistributedPlanner {
.getRespDatasetHeader()
.setTableColumnToTsBlockIndexMap((OutputNode)
outputNodeWithExchange);
}
+
adjustUpStream(outputNodeWithExchange, planContext);
+ DistributedQueryPlan resultDistributedPlan =
generateDistributedPlan(outputNodeWithExchange);
- return generateDistributedPlan(outputNodeWithExchange);
+ if (analysis.getStatement() instanceof Query) {
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TABLE_TYPE, DISTRIBUTION_PLANNER, System.nanoTime()
- startTime);
+ }
+ return resultDistributedPlan;
}
public PlanNode generateDistributedPlanWithOptimize(
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
index 6e738a1c4aa..3e525cc32d8 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
@@ -20,6 +20,7 @@ import
org.apache.iotdb.commons.partition.DataPartitionQueryParam;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
+import org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
@@ -56,6 +57,9 @@ import static java.util.Objects.requireNonNull;
import static
org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.ATTRIBUTE;
import static
org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.MEASUREMENT;
import static
org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.TIME;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.PARTITION_FETCHER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.SCHEMA_FETCHER;
+import static
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TABLE_TYPE;
import static
org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.getTimePartitionSlotList;
import static
org.apache.iotdb.db.queryengine.plan.relational.planner.ir.GlobalTimePredicateExtractVisitor.extractGlobalTimeFilter;
@@ -274,10 +278,14 @@ public class PushPredicateIntoTableScan implements
PlanOptimizer {
node.getIdAndAttributeIndexMap().put(columnName, attributeIndex++);
}
}
+
+ long startTime = System.nanoTime();
List<DeviceEntry> deviceEntries =
metadata.indexScan(
node.getQualifiedObjectName(), metadataExpressions,
attributeColumns, queryContext);
node.setDeviceEntries(deviceEntries);
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TABLE_TYPE, SCHEMA_FETCHER, System.nanoTime() -
startTime);
if (deviceEntries.isEmpty()) {
analysis.setFinishQueryAfterAnalyze();
@@ -289,6 +297,8 @@ public class PushPredicateIntoTableScan implements
PlanOptimizer {
.orElse(null);
node.setTimeFilter(timeFilter);
String treeModelDatabase = "root." +
node.getQualifiedObjectName().getDatabaseName();
+
+ startTime = System.nanoTime();
DataPartition dataPartition =
fetchDataPartitionByDevices(treeModelDatabase, deviceEntries,
timeFilter);
@@ -303,6 +313,9 @@ public class PushPredicateIntoTableScan implements
PlanOptimizer {
} else {
analysis.upsertDataPartition(dataPartition);
}
+
+ QueryPlanCostMetricSet.getInstance()
+ .recordPlanCost(TABLE_TYPE, PARTITION_FETCHER, System.nanoTime() -
startTime);
}
}
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
index 250208e6fd5..9024de680b3 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
@@ -51,8 +51,8 @@ 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.metadata.TableSchema;
-import org.apache.iotdb.db.queryengine.plan.relational.planner.LogicalPlanner;
import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.TableLogicalPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableDistributedPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.CollectNode;
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.FilterNode;
@@ -123,7 +123,7 @@ public class AnalyzerTest {
String sql;
Analysis actualAnalysis;
MPPQueryContext context;
- LogicalPlanner logicalPlanner;
+ TableLogicalPlanner logicalPlanner;
LogicalQueryPlan logicalQueryPlan;
PlanNode rootNode;
TableDistributedPlanner distributionPlanner;
@@ -182,7 +182,7 @@ public class AnalyzerTest {
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -221,7 +221,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -272,7 +272,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -331,7 +331,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -361,7 +361,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -390,7 +390,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -431,7 +431,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -479,7 +479,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertEquals(1, actualAnalysis.getTables().size());
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -512,7 +512,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -527,7 +527,7 @@ public class AnalyzerTest {
assertNotNull(actualAnalysis);
assertEquals(1, actualAnalysis.getTables().size());
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -549,7 +549,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof ProjectNode);
@@ -570,7 +570,7 @@ public class AnalyzerTest {
actualAnalysis = analyzeSQL(sql, metadata, context);
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -587,7 +587,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof FilterNode);
@@ -606,7 +606,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -623,7 +623,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof ProjectNode);
@@ -640,7 +640,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -649,7 +649,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -664,7 +664,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -681,7 +681,7 @@ public class AnalyzerTest {
sql = "SELECT CAST(s2 AS DOUBLE) FROM table1 WHERE CAST(s1 AS DOUBLE) >
1.0";
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -690,7 +690,7 @@ public class AnalyzerTest {
"SELECT SUBSTRING(tag1, 2), SUBSTRING(tag2, s1) FROM table1 WHERE
SUBSTRING(tag2, 1) = 'A'";
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -698,7 +698,7 @@ public class AnalyzerTest {
sql = "SELECT ROUND(s1, 1) FROM table1 WHERE ROUND(s2, 2) > 1.0";
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
@@ -706,7 +706,7 @@ public class AnalyzerTest {
sql = "SELECT REPLACE(tag1, 'A', 'B') FROM table1 WHERE REPLACE(attr1,
'C', 'D') = 'D'";
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
}
@@ -717,7 +717,7 @@ public class AnalyzerTest {
sql = "SELECT DIFF(s1) FROM table1 WHERE DIFF(s2) > 0";
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof ProjectNode);
@@ -760,7 +760,7 @@ public class AnalyzerTest {
sql = "SELECT s1 FROM table1 WHERE DIFF(s2) > 0 and time > 5 and tag1 =
'A' and s1 = 1";
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
- logicalPlanner = new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ logicalPlanner = new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
logicalQueryPlan = logicalPlanner.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof ProjectNode);
@@ -779,7 +779,7 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -805,7 +805,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof OffsetNode);
OffsetNode offsetNode = (OffsetNode) rootNode.getChildren().get(0);
@@ -819,7 +820,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode.getChildren().get(0) instanceof ProjectNode);
assertTrue(getChildrenNode(rootNode, 2) instanceof OffsetNode);
@@ -835,7 +837,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
assertTrue(getChildrenNode(rootNode, 1) instanceof TableScanNode);
@@ -852,7 +855,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
// logical plan: `OutputNode - ProjectNode - LimitNode - TableScanNode`
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -885,7 +889,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
// logical plan: `OutputNode - ProjectNode - LimitNode - TableScanNode`
rootNode = logicalQueryPlan.getRootNode();
assertTrue(rootNode instanceof OutputNode);
@@ -908,7 +913,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
// logical plan: `OutputNode - ProjectNode - LimitNode - TableScanNode`
rootNode = logicalQueryPlan.getRootNode();
// distributed plan: `IdentitySink - OutputNode - ProjectNode - LimitNode
- TableScanNode`
@@ -928,7 +934,8 @@ public class AnalyzerTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(actualAnalysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector)
+ .plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
distributionPlanner = new TableDistributedPlanner(actualAnalysis,
logicalQueryPlan, context);
distributedQueryPlan = distributionPlanner.plan();
@@ -1039,7 +1046,7 @@ public class AnalyzerTest {
assertEquals(3, partitionSlotMapMap.size());
logicalQueryPlan =
- new LogicalPlanner(context, mockMetadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, mockMetadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
RelationalInsertTabletNode insertTabletNode =
@@ -1085,7 +1092,7 @@ public class AnalyzerTest {
assertEquals(1, partitionSlotMapMap.size());
logicalQueryPlan =
- new LogicalPlanner(context, mockMetadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, mockMetadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
RelationalInsertRowNode insertNode = (RelationalInsertRowNode)
logicalQueryPlan.getRootNode();
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/LimitOffsetPushDownTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/LimitOffsetPushDownTest.java
index 2e6f3bca6df..6e2bb2601f1 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/LimitOffsetPushDownTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/LimitOffsetPushDownTest.java
@@ -25,7 +25,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.ExchangeNode;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
-import org.apache.iotdb.db.queryengine.plan.relational.planner.LogicalPlanner;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.TableLogicalPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableDistributedPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.CollectNode;
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.LimitNode;
@@ -59,7 +59,7 @@ public class LimitOffsetPushDownTest {
String sql;
Analysis actualAnalysis;
MPPQueryContext context;
- LogicalPlanner logicalPlanner;
+ TableLogicalPlanner logicalPlanner;
LogicalQueryPlan logicalQueryPlan;
PlanNode rootNode;
TableDistributedPlanner distributionPlanner;
@@ -73,7 +73,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Project - Offset - Limit - TableScan`
@@ -113,7 +113,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Offset - Limit - Project - StreamSort - Project
- TableScan`
@@ -147,7 +147,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Limit - StreamSort - TableScan`
@@ -186,7 +186,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
rootNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Offset - Limit - Project - StreamSort - Project
- TableScan`
@@ -227,7 +227,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
// LogicalPlan: `Output - Offset - Project - TopK - Project - TableScan`
rootNode = logicalQueryPlan.getRootNode();
@@ -267,7 +267,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
// LogicalPlan: `Output - Offset - Project - TopK - Project - TableScan`
rootNode = logicalQueryPlan.getRootNode();
@@ -304,7 +304,7 @@ public class LimitOffsetPushDownTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
actualAnalysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP)
.plan(actualAnalysis);
// LogicalPlan: `Output - Project - Limit - TableScan`
rootNode = logicalQueryPlan.getRootNode();
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SortTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SortTest.java
index a07678ccaaa..045de6debb9 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SortTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SortTest.java
@@ -31,7 +31,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.ExchangeNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.sink.IdentitySinkNode;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
-import org.apache.iotdb.db.queryengine.plan.relational.planner.LogicalPlanner;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.TableLogicalPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableDistributedPlanner;
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.FilterNode;
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.LimitNode;
@@ -100,7 +100,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan:
`Output-Offset-Limit-Project-StreamSort-Project-Filter-TableScan`
@@ -176,7 +176,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output-Offset-Limit-StreamSort-TableScan`
assertTrue(getChildrenNode(logicalPlanNode, 3) instanceof StreamSortNode);
@@ -202,7 +202,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan:
`Output-Offset-Limit-Project-StreamSort-Project-Filter-TableScan`
@@ -280,7 +280,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output-Project-StreamSort-Project-Filter-TableScan`
@@ -348,7 +348,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan:
`Output-Offset-Limit-Project-StreamSort-Project-Filter-TableScan`
@@ -428,7 +428,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan:
`Output-Offset-Limit-Project-StreamSort-Project-Filter-TableScan`
@@ -506,7 +506,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKNoFilter(originalDeviceEntries1, originalDeviceEntries2, DESC,
15, 0, true);
@@ -518,7 +518,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKWithFilter(originalDeviceEntries1, originalDeviceEntries2, DESC,
0, 0, false);
@@ -529,7 +529,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKWithFilter(originalDeviceEntries1, originalDeviceEntries2, DESC,
0, 0, false);
@@ -540,7 +540,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKWithFilter(originalDeviceEntries1, originalDeviceEntries2, DESC,
0, 0, false);
@@ -555,7 +555,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKNoFilter(originalDeviceEntries1, originalDeviceEntries2, ASC, 0,
0, false);
@@ -566,7 +566,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKWithFilter(originalDeviceEntries1, originalDeviceEntries2, ASC,
0, 0, false);
@@ -577,7 +577,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKWithFilter(originalDeviceEntries1, originalDeviceEntries2, ASC,
0, 0, false);
@@ -588,7 +588,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
assertTopKWithFilter(originalDeviceEntries1, originalDeviceEntries2, ASC,
0, 0, false);
}
@@ -600,7 +600,7 @@ public class SortTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
distributionPlanner = new TableDistributedPlanner(analysis,
logicalQueryPlan, context);
distributedQueryPlan = distributionPlanner.plan();
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SubQueryTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SubQueryTest.java
index 6db97aac6e4..66fd695ae83 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SubQueryTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/SubQueryTest.java
@@ -26,7 +26,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.ExchangeNode;
import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.sink.IdentitySinkNode;
-import org.apache.iotdb.db.queryengine.plan.relational.planner.LogicalPlanner;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.TableLogicalPlanner;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableDistributedPlanner;
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.FilterNode;
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.LimitNode;
@@ -94,7 +94,7 @@ public class SubQueryTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Offset - Limit - StreamSort - Project -
TableScan`
@@ -179,7 +179,7 @@ public class SubQueryTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Offset - TopK - Project - Limit - Project -
StreamSort - Project -
@@ -275,7 +275,7 @@ public class SubQueryTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Offset - ProjectNode - TopK - Project - Limit -
Project - StreamSort -
@@ -390,7 +390,7 @@ public class SubQueryTest {
context = new MPPQueryContext(sql, queryId, sessionInfo, null, null);
analysis = analyzeSQL(sql, metadata, context);
logicalQueryPlan =
- new LogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
+ new TableLogicalPlanner(context, metadata, sessionInfo,
warningCollector).plan(analysis);
logicalPlanNode = logicalQueryPlan.getRootNode();
// LogicalPlan: `Output - Offset - ProjectNode - TopK - Project - Filter -
Limit - Project -
@@ -487,7 +487,7 @@ public class SubQueryTest {
sql = "SELECT * FROM (SELECT * FROM table1 WHERE s1>1) WHERE s2>2";
analysis = analyzeSQL(sql, TEST_MATADATA, QUERY_CONTEXT);
logicalPlanNode =
- new LogicalPlanner(QUERY_CONTEXT, TEST_MATADATA, SESSION_INFO,
DEFAULT_WARNING)
+ new TableLogicalPlanner(QUERY_CONTEXT, TEST_MATADATA, SESSION_INFO,
DEFAULT_WARNING)
.plan(analysis)
.getRootNode();
assertNodeMatches(logicalPlanNode, OutputNode.class, TableScanNode.class);
@@ -502,7 +502,7 @@ public class SubQueryTest {
sql = "SELECT * FROM (SELECT * FROM table1 limit 10) limit 5";
analysis = analyzeSQL(sql, TEST_MATADATA, QUERY_CONTEXT);
logicalPlanNode =
- new LogicalPlanner(QUERY_CONTEXT, TEST_MATADATA, SESSION_INFO,
DEFAULT_WARNING)
+ new TableLogicalPlanner(QUERY_CONTEXT, TEST_MATADATA, SESSION_INFO,
DEFAULT_WARNING)
.plan(analysis)
.getRootNode();
assertNodeMatches(logicalPlanNode, OutputNode.class, LimitNode.class,
TableScanNode.class);
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/PlanTester.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/PlanTester.java
index 254fd5f0912..dd3fcae48c6 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/PlanTester.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/PlanTester.java
@@ -84,8 +84,8 @@ public class PlanTester {
Analysis analysis = analyze(sql, metadata);
this.analysis = analysis;
- LogicalPlanner logicalPlanner =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
+ TableLogicalPlanner logicalPlanner =
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP);
plan = logicalPlanner.plan(analysis);
@@ -102,8 +102,8 @@ public class PlanTester {
Analysis analysis = analyze(sql, metadata);
- LogicalPlanner logicalPlanner =
- new LogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP, optimizers);
+ TableLogicalPlanner logicalPlanner =
+ new TableLogicalPlanner(context, metadata, sessionInfo,
WarningCollector.NOOP, optimizers);
return logicalPlanner.plan(analysis);
}