You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2024/01/02 09:01:10 UTC
(iotdb) 01/01: Fix timeout doesn't take effect in schema fetch bug
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/TIMECHODB-523
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit dd311f12aec357fbcdb7fceb8f61bc953cf4ca13
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Tue Jan 2 17:00:52 2024 +0800
Fix timeout doesn't take effect in schema fetch bug
---
.../queryengine/plan/analyze/AnalyzeVisitor.java | 27 ++++++++++++----------
1 file changed, 15 insertions(+), 12 deletions(-)
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 7df1dd2e4b5..7f36a0d099c 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
@@ -289,7 +289,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
analyzeDeviceViewOutput(analysis, queryStatement);
analyzeDeviceViewInput(analysis, queryStatement);
- analyzeInto(analysis, queryStatement, deviceList, outputExpressions);
+ analyzeInto(analysis, queryStatement, deviceList, outputExpressions, context);
} else {
// analyze output expressions
if (queryStatement.isGroupByLevel()) {
@@ -339,7 +339,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
analyzeSource(analysis, queryStatement);
// analyze into paths
- analyzeInto(analysis, queryStatement, outputExpressions);
+ analyzeInto(analysis, queryStatement, outputExpressions, context);
}
analyzeGroupByTime(analysis, queryStatement);
@@ -392,7 +392,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
// make sure paths in logical view is fetched
- updateSchemaTreeByViews(analysis, schemaTree);
+ updateSchemaTreeByViews(analysis, schemaTree, context);
} finally {
logger.debug("[EndFetchSchema]");
QueryPlanCostMetricSet.getInstance()
@@ -500,7 +500,8 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
lastQueryNonWritableViewSourceExpressionMap);
}
- private void updateSchemaTreeByViews(Analysis analysis, ISchemaTree originSchemaTree) {
+ private void updateSchemaTreeByViews(
+ Analysis analysis, ISchemaTree originSchemaTree, MPPQueryContext context) {
if (!originSchemaTree.hasLogicalViewMeasurement()) {
return;
}
@@ -534,7 +535,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
if (needToReFetch) {
- ISchemaTree viewSchemaTree = this.schemaFetcher.fetchSchema(patternTree, true, null);
+ ISchemaTree viewSchemaTree = this.schemaFetcher.fetchSchema(patternTree, true, context);
originSchemaTree.mergeSchemaTree(viewSchemaTree);
Set<String> allDatabases = viewSchemaTree.getDatabases();
allDatabases.addAll(originSchemaTree.getDatabases());
@@ -1990,7 +1991,8 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
Analysis analysis,
QueryStatement queryStatement,
List<PartialPath> deviceSet,
- List<Pair<Expression, String>> outputExpressions) {
+ List<Pair<Expression, String>> outputExpressions,
+ MPPQueryContext context) {
if (!queryStatement.isSelectInto()) {
return;
}
@@ -2041,7 +2043,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
// fetch schema of target paths
long startTime = System.nanoTime();
- ISchemaTree targetSchemaTree = schemaFetcher.fetchSchema(targetPathTree, true, null);
+ ISchemaTree targetSchemaTree = schemaFetcher.fetchSchema(targetPathTree, true, context);
QueryPlanCostMetricSet.getInstance()
.recordPlanCost(SCHEMA_FETCHER, System.nanoTime() - startTime);
deviceViewIntoPathDescriptor.bindType(targetSchemaTree);
@@ -2052,7 +2054,8 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
private void analyzeInto(
Analysis analysis,
QueryStatement queryStatement,
- List<Pair<Expression, String>> outputExpressions) {
+ List<Pair<Expression, String>> outputExpressions,
+ MPPQueryContext context) {
if (!queryStatement.isSelectInto()) {
return;
}
@@ -2109,8 +2112,8 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
// fetch schema of target paths
long startTime = System.nanoTime();
- ISchemaTree targetSchemaTree = schemaFetcher.fetchSchema(targetPathTree, true, null);
- updateSchemaTreeByViews(analysis, targetSchemaTree);
+ ISchemaTree targetSchemaTree = schemaFetcher.fetchSchema(targetPathTree, true, context);
+ updateSchemaTreeByViews(analysis, targetSchemaTree, context);
QueryPlanCostMetricSet.getInstance()
.recordPlanCost(SCHEMA_FETCHER, System.nanoTime() - startTime);
intoPathDescriptor.bindType(targetSchemaTree);
@@ -2721,7 +2724,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
// request schema fetch API
logger.debug("[StartFetchSchema]");
ISchemaTree schemaTree = schemaFetcher.fetchSchema(patternTree, true, context);
- updateSchemaTreeByViews(analysis, schemaTree);
+ updateSchemaTreeByViews(analysis, schemaTree, context);
logger.debug("[EndFetchSchema]]");
analyzeLastSource(
@@ -2957,7 +2960,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
Set<String> deduplicatedDevicePaths = new HashSet<>();
if (schemaTree.hasLogicalViewMeasurement()) {
- updateSchemaTreeByViews(analysis, schemaTree);
+ updateSchemaTreeByViews(analysis, schemaTree, context);
Set<PartialPath> deletePatternSet = new HashSet<>(deleteDataStatement.getPathList());
IMeasurementSchema measurementSchema;