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;