This is an automated email from the ASF dual-hosted git repository.

chenyz pushed a commit to branch rel/1.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.2 by this push:
     new 56ac549caa4 [To rel/1.2][IOTDB-6147] Alter view does not check the 
source path (#11123)
56ac549caa4 is described below

commit 56ac549caa4b1dc92d96a801733c6ac0be510fe2
Author: Chen YZ <[email protected]>
AuthorDate: Wed Sep 13 15:04:54 2023 +0800

    [To rel/1.2][IOTDB-6147] Alter view does not check the source path (#11123)
---
 .../db/queryengine/plan/analyze/Analyzer.java      |  13 +-
 .../plan/execution/config/ConfigExecution.java     |   8 +-
 .../plan/execution/config/ConfigTaskVisitor.java   | 200 +++++++++------------
 .../config/executor/ClusterConfigTaskExecutor.java |  29 +--
 .../config/executor/IConfigTaskExecutor.java       |   8 +-
 .../config/metadata/CreateContinuousQueryTask.java |  13 +-
 .../config/metadata/model/CreateModelTask.java     |   7 +-
 .../config/metadata/view/AlterLogicalViewTask.java |  10 +-
 8 files changed, 132 insertions(+), 156 deletions(-)

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 3dddc67ed68..f7ca04f7d05 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
@@ -25,7 +25,6 @@ import 
org.apache.iotdb.db.queryengine.plan.analyze.schema.ClusterSchemaFetcher;
 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.common.QueryId.MOCK_QUERY_ID;
 import static 
org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.ANALYZER;
 
 /** Analyze the statement and generate Analysis. */
@@ -53,15 +52,9 @@ public class Analyzer {
     return analysis;
   }
 
-  public static void validate(Statement statement) {
-    Analyzer analyzer = getAnalyzer();
-    analyzer.analyze(statement);
-  }
-
-  public static Analyzer getAnalyzer() {
+  public static Analysis analyze(Statement statement, MPPQueryContext context) 
{
     return new Analyzer(
-        new MPPQueryContext(MOCK_QUERY_ID),
-        ClusterPartitionFetcher.getInstance(),
-        ClusterSchemaFetcher.getInstance());
+            context, ClusterPartitionFetcher.getInstance(), 
ClusterSchemaFetcher.getInstance())
+        .analyze(statement);
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
index 54f6583b56e..e549f713278 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
@@ -81,13 +81,7 @@ public class ConfigExecution implements IQueryExecution {
     this.executor = executor;
     this.stateMachine = new QueryStateMachine(context.getQueryId(), executor);
     this.taskFuture = SettableFuture.create();
-    this.task =
-        statement.accept(
-            new ConfigTaskVisitor(),
-            new ConfigTaskVisitor.TaskContext(
-                context.getQueryId().getId(),
-                context.getSql(),
-                context.getSession() == null ? null : 
context.getSession().getUserName()));
+    this.task = statement.accept(new ConfigTaskVisitor(), context);
     this.resultSetConsumed = false;
     configTaskExecutor = ClusterConfigTaskExecutor.getInstance();
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
index 57b6a3cbad9..8e438fcabad 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.plan.execution.config;
 
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.CountDatabaseTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.CountTimeSlotListTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.CreateContinuousQueryTask;
@@ -53,7 +54,6 @@ import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.UnSetTTLTa
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.model.CreateModelTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.model.DropModelTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.model.ShowModelsTask;
-import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.model.ShowTrailsTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.AlterSchemaTemplateTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.CreateSchemaTemplateTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.metadata.template.DeactivateSchemaTemplateTask;
@@ -118,7 +118,6 @@ import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.UnSetTTLStatement
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.model.CreateModelStatement;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.model.DropModelStatement;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.model.ShowModelsStatement;
-import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.model.ShowTrailsStatement;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.CreatePipeStatement;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.DropPipeStatement;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.ShowPipesStatement;
@@ -149,70 +148,72 @@ import 
org.apache.iotdb.db.queryengine.plan.statement.sys.quota.ShowSpaceQuotaSt
 import 
org.apache.iotdb.db.queryengine.plan.statement.sys.quota.ShowThrottleQuotaStatement;
 import org.apache.iotdb.tsfile.exception.NotImplementedException;
 
-public class ConfigTaskVisitor
-    extends StatementVisitor<IConfigTask, ConfigTaskVisitor.TaskContext> {
+public class ConfigTaskVisitor extends StatementVisitor<IConfigTask, 
MPPQueryContext> {
 
   @Override
-  public IConfigTask visitNode(StatementNode node, TaskContext context) {
+  public IConfigTask visitNode(StatementNode node, MPPQueryContext context) {
     throw new UnsupportedOperationException(
         "Unsupported statement type: " + node.getClass().getName());
   }
 
   @Override
-  public IConfigTask visitStatement(Statement statement, TaskContext context) {
+  public IConfigTask visitStatement(Statement statement, MPPQueryContext 
context) {
     throw new NotImplementedException("ConfigTask is not implemented for: " + 
statement);
   }
 
   @Override
-  public IConfigTask visitSetDatabase(DatabaseSchemaStatement statement, 
TaskContext context) {
+  public IConfigTask visitSetDatabase(DatabaseSchemaStatement statement, 
MPPQueryContext context) {
     return new DatabaseSchemaTask(statement);
   }
 
   @Override
-  public IConfigTask visitAlterDatabase(DatabaseSchemaStatement statement, 
TaskContext context) {
+  public IConfigTask visitAlterDatabase(
+      DatabaseSchemaStatement statement, MPPQueryContext context) {
     return new DatabaseSchemaTask(statement);
   }
 
   @Override
   public IConfigTask visitDeleteStorageGroup(
-      DeleteDatabaseStatement statement, TaskContext context) {
+      DeleteDatabaseStatement statement, MPPQueryContext context) {
     return new DeleteStorageGroupTask(statement);
   }
 
   @Override
-  public IConfigTask visitShowStorageGroup(ShowDatabaseStatement statement, 
TaskContext context) {
+  public IConfigTask visitShowStorageGroup(
+      ShowDatabaseStatement statement, MPPQueryContext context) {
     return new ShowDatabaseTask(statement);
   }
 
   @Override
-  public IConfigTask visitCountStorageGroup(CountDatabaseStatement statement, 
TaskContext context) {
+  public IConfigTask visitCountStorageGroup(
+      CountDatabaseStatement statement, MPPQueryContext context) {
     return new CountDatabaseTask(statement);
   }
 
   @Override
-  public IConfigTask visitSetTTL(SetTTLStatement statement, TaskContext 
context) {
+  public IConfigTask visitSetTTL(SetTTLStatement statement, MPPQueryContext 
context) {
     return new SetTTLTask(statement);
   }
 
   @Override
-  public IConfigTask visitUnSetTTL(UnSetTTLStatement statement, TaskContext 
context) {
+  public IConfigTask visitUnSetTTL(UnSetTTLStatement statement, 
MPPQueryContext context) {
     return new UnSetTTLTask(statement);
   }
 
   @Override
-  public IConfigTask visitShowTTL(ShowTTLStatement showTTLStatement, 
TaskContext context) {
+  public IConfigTask visitShowTTL(ShowTTLStatement showTTLStatement, 
MPPQueryContext context) {
     return new ShowTTLTask(showTTLStatement);
   }
 
   @Override
   public IConfigTask visitShowVariables(
-      ShowVariablesStatement showVariablesStatement, TaskContext context) {
+      ShowVariablesStatement showVariablesStatement, MPPQueryContext context) {
     return new ShowVariablesTask();
   }
 
   @Override
   public IConfigTask visitShowCluster(
-      ShowClusterStatement showClusterStatement, TaskContext context) {
+      ShowClusterStatement showClusterStatement, MPPQueryContext context) {
     if (showClusterStatement.isDetails()) {
       return new ShowClusterDetailsTask(showClusterStatement);
     } else {
@@ -221,335 +222,312 @@ public class ConfigTaskVisitor
   }
 
   @Override
-  public IConfigTask visitAuthor(AuthorStatement statement, TaskContext 
context) {
+  public IConfigTask visitAuthor(AuthorStatement statement, MPPQueryContext 
context) {
     return new AuthorizerTask(statement);
   }
 
   @Override
-  public IConfigTask visitMerge(MergeStatement mergeStatement, TaskContext 
context) {
+  public IConfigTask visitMerge(MergeStatement mergeStatement, MPPQueryContext 
context) {
     return new MergeTask(mergeStatement);
   }
 
   @Override
-  public IConfigTask visitFlush(FlushStatement flushStatement, TaskContext 
context) {
+  public IConfigTask visitFlush(FlushStatement flushStatement, MPPQueryContext 
context) {
     return new FlushTask(flushStatement);
   }
 
   @Override
-  public IConfigTask visitClearCache(ClearCacheStatement clearCacheStatement, 
TaskContext context) {
+  public IConfigTask visitClearCache(
+      ClearCacheStatement clearCacheStatement, MPPQueryContext context) {
     return new ClearCacheTask(clearCacheStatement);
   }
 
   @Override
   public IConfigTask visitLoadConfiguration(
-      LoadConfigurationStatement loadConfigurationStatement, TaskContext 
context) {
+      LoadConfigurationStatement loadConfigurationStatement, MPPQueryContext 
context) {
     return new LoadConfigurationTask(loadConfigurationStatement);
   }
 
   @Override
   public IConfigTask visitSetSystemStatus(
-      SetSystemStatusStatement setSystemStatusStatement, TaskContext context) {
+      SetSystemStatusStatement setSystemStatusStatement, MPPQueryContext 
context) {
     return new SetSystemStatusTask(setSystemStatusStatement);
   }
 
   @Override
-  public IConfigTask visitKillQuery(KillQueryStatement killQueryStatement, 
TaskContext context) {
+  public IConfigTask visitKillQuery(
+      KillQueryStatement killQueryStatement, MPPQueryContext context) {
     return new KillQueryTask(killQueryStatement);
   }
 
   @Override
   public IConfigTask visitCreateFunction(
-      CreateFunctionStatement createFunctionStatement, TaskContext context) {
+      CreateFunctionStatement createFunctionStatement, MPPQueryContext 
context) {
     return new CreateFunctionTask(createFunctionStatement);
   }
 
   @Override
   public IConfigTask visitDropFunction(
-      DropFunctionStatement dropFunctionStatement, TaskContext context) {
+      DropFunctionStatement dropFunctionStatement, MPPQueryContext context) {
     return new DropFunctionTask(dropFunctionStatement);
   }
 
   @Override
   public IConfigTask visitShowFunctions(
-      ShowFunctionsStatement showFunctionsStatement, TaskContext context) {
+      ShowFunctionsStatement showFunctionsStatement, MPPQueryContext context) {
     return new ShowFunctionsTask();
   }
 
   @Override
   public IConfigTask visitCreateTrigger(
-      CreateTriggerStatement createTriggerStatement, TaskContext context) {
+      CreateTriggerStatement createTriggerStatement, MPPQueryContext context) {
     return new CreateTriggerTask(createTriggerStatement);
   }
 
   @Override
   public IConfigTask visitDropTrigger(
-      DropTriggerStatement dropTriggerStatement, TaskContext context) {
+      DropTriggerStatement dropTriggerStatement, MPPQueryContext context) {
     return new DropTriggerTask(dropTriggerStatement);
   }
 
   @Override
   public IConfigTask visitShowTriggers(
-      ShowTriggersStatement showTriggersStatement, TaskContext context) {
+      ShowTriggersStatement showTriggersStatement, MPPQueryContext context) {
     return new ShowTriggersTask();
   }
 
   @Override
   public IConfigTask visitCreatePipePlugin(
-      CreatePipePluginStatement createPipePluginStatement, TaskContext 
context) {
+      CreatePipePluginStatement createPipePluginStatement, MPPQueryContext 
context) {
     return new CreatePipePluginTask(createPipePluginStatement);
   }
 
   @Override
   public IConfigTask visitDropPipePlugin(
-      DropPipePluginStatement dropPipePluginStatement, TaskContext context) {
+      DropPipePluginStatement dropPipePluginStatement, MPPQueryContext 
context) {
     return new DropPipePluginTask(dropPipePluginStatement);
   }
 
   @Override
   public IConfigTask visitShowPipePlugins(
-      ShowPipePluginsStatement showPipePluginStatement, TaskContext context) {
+      ShowPipePluginsStatement showPipePluginStatement, MPPQueryContext 
context) {
     return new ShowPipePluginsTask();
   }
 
   @Override
-  public IConfigTask visitShowRegion(ShowRegionStatement showRegionStatement, 
TaskContext context) {
+  public IConfigTask visitShowRegion(
+      ShowRegionStatement showRegionStatement, MPPQueryContext context) {
     return new ShowRegionTask(showRegionStatement);
   }
 
   @Override
   public IConfigTask visitCreateSchemaTemplate(
-      CreateSchemaTemplateStatement createSchemaTemplateStatement, TaskContext 
context) {
+      CreateSchemaTemplateStatement createSchemaTemplateStatement, 
MPPQueryContext context) {
     return new CreateSchemaTemplateTask(createSchemaTemplateStatement);
   }
 
   @Override
   public IConfigTask visitShowNodesInSchemaTemplate(
-      ShowNodesInSchemaTemplateStatement showNodesInSchemaTemplateStatement, 
TaskContext context) {
+      ShowNodesInSchemaTemplateStatement showNodesInSchemaTemplateStatement,
+      MPPQueryContext context) {
     return new 
ShowNodesInSchemaTemplateTask(showNodesInSchemaTemplateStatement);
   }
 
   @Override
   public IConfigTask visitShowSchemaTemplate(
-      ShowSchemaTemplateStatement showSchemaTemplateStatement, TaskContext 
context) {
+      ShowSchemaTemplateStatement showSchemaTemplateStatement, MPPQueryContext 
context) {
     return new ShowSchemaTemplateTask(showSchemaTemplateStatement);
   }
 
   @Override
   public IConfigTask visitSetSchemaTemplate(
-      SetSchemaTemplateStatement setSchemaTemplateStatement, TaskContext 
context) {
-    return new SetSchemaTemplateTask(context.getQueryId(), 
setSchemaTemplateStatement);
+      SetSchemaTemplateStatement setSchemaTemplateStatement, MPPQueryContext 
context) {
+    return new SetSchemaTemplateTask(context.getQueryId().getId(), 
setSchemaTemplateStatement);
   }
 
   @Override
   public IConfigTask visitShowPathSetTemplate(
-      ShowPathSetTemplateStatement showPathSetTemplateStatement, TaskContext 
context) {
+      ShowPathSetTemplateStatement showPathSetTemplateStatement, 
MPPQueryContext context) {
     return new ShowPathSetTemplateTask(showPathSetTemplateStatement);
   }
 
   @Override
   public IConfigTask visitDeactivateTemplate(
-      DeactivateTemplateStatement deactivateTemplateStatement, TaskContext 
context) {
-    return new DeactivateSchemaTemplateTask(context.getQueryId(), 
deactivateTemplateStatement);
+      DeactivateTemplateStatement deactivateTemplateStatement, MPPQueryContext 
context) {
+    return new DeactivateSchemaTemplateTask(
+        context.getQueryId().getId(), deactivateTemplateStatement);
   }
 
   @Override
   public IConfigTask visitUnsetSchemaTemplate(
-      UnsetSchemaTemplateStatement unsetSchemaTemplateStatement, TaskContext 
context) {
-    return new UnsetSchemaTemplateTask(context.getQueryId(), 
unsetSchemaTemplateStatement);
+      UnsetSchemaTemplateStatement unsetSchemaTemplateStatement, 
MPPQueryContext context) {
+    return new UnsetSchemaTemplateTask(context.getQueryId().getId(), 
unsetSchemaTemplateStatement);
   }
 
   @Override
   public IConfigTask visitDropSchemaTemplate(
-      DropSchemaTemplateStatement dropSchemaTemplateStatement, TaskContext 
context) {
+      DropSchemaTemplateStatement dropSchemaTemplateStatement, MPPQueryContext 
context) {
     return new DropSchemaTemplateTask(dropSchemaTemplateStatement);
   }
 
   @Override
   public IConfigTask visitAlterSchemaTemplate(
-      AlterSchemaTemplateStatement alterSchemaTemplateStatement, TaskContext 
context) {
-    return new AlterSchemaTemplateTask(alterSchemaTemplateStatement, 
context.getQueryId());
+      AlterSchemaTemplateStatement alterSchemaTemplateStatement, 
MPPQueryContext context) {
+    return new AlterSchemaTemplateTask(alterSchemaTemplateStatement, 
context.getQueryId().getId());
   }
 
   @Override
   public IConfigTask visitShowDataNodes(
-      ShowDataNodesStatement showDataNodesStatement, TaskContext context) {
+      ShowDataNodesStatement showDataNodesStatement, MPPQueryContext context) {
     return new ShowDataNodesTask(showDataNodesStatement);
   }
 
   @Override
   public IConfigTask visitShowConfigNodes(
-      ShowConfigNodesStatement showConfigNodesStatement, TaskContext context) {
+      ShowConfigNodesStatement showConfigNodesStatement, MPPQueryContext 
context) {
     return new ShowConfigNodesTask();
   }
 
   @Override
-  public IConfigTask visitShowPipes(ShowPipesStatement showPipesStatement, 
TaskContext context) {
+  public IConfigTask visitShowPipes(
+      ShowPipesStatement showPipesStatement, MPPQueryContext context) {
     return new ShowPipeTask(showPipesStatement);
   }
 
   @Override
-  public IConfigTask visitDropPipe(DropPipeStatement dropPipeStatement, 
TaskContext context) {
+  public IConfigTask visitDropPipe(DropPipeStatement dropPipeStatement, 
MPPQueryContext context) {
     return new DropPipeTask(dropPipeStatement);
   }
 
   @Override
-  public IConfigTask visitCreatePipe(CreatePipeStatement createPipeStatement, 
TaskContext context) {
+  public IConfigTask visitCreatePipe(
+      CreatePipeStatement createPipeStatement, MPPQueryContext context) {
     return new CreatePipeTask(createPipeStatement);
   }
 
   @Override
-  public IConfigTask visitStartPipe(StartPipeStatement startPipeStatement, 
TaskContext context) {
+  public IConfigTask visitStartPipe(
+      StartPipeStatement startPipeStatement, MPPQueryContext context) {
     return new StartPipeTask(startPipeStatement);
   }
 
   @Override
-  public IConfigTask visitStopPipe(StopPipeStatement stopPipeStatement, 
TaskContext context) {
+  public IConfigTask visitStopPipe(StopPipeStatement stopPipeStatement, 
MPPQueryContext context) {
     return new StopPipeTask(stopPipeStatement);
   }
 
   @Override
   public IConfigTask visitDeleteTimeseries(
-      DeleteTimeSeriesStatement deleteTimeSeriesStatement, TaskContext 
context) {
-    return new DeleteTimeSeriesTask(context.getQueryId(), 
deleteTimeSeriesStatement);
+      DeleteTimeSeriesStatement deleteTimeSeriesStatement, MPPQueryContext 
context) {
+    return new DeleteTimeSeriesTask(context.getQueryId().getId(), 
deleteTimeSeriesStatement);
   }
 
   @Override
   public IConfigTask visitDeleteLogicalView(
-      DeleteLogicalViewStatement deleteLogicalViewStatement, TaskContext 
context) {
-    return new DeleteLogicalViewTask(context.getQueryId(), 
deleteLogicalViewStatement);
+      DeleteLogicalViewStatement deleteLogicalViewStatement, MPPQueryContext 
context) {
+    return new DeleteLogicalViewTask(context.getQueryId().getId(), 
deleteLogicalViewStatement);
   }
 
   @Override
   public IConfigTask visitRenameLogicalView(
-      RenameLogicalViewStatement renameLogicalViewStatement, TaskContext 
context) {
-    return new RenameLogicalViewTask(context.queryId, 
renameLogicalViewStatement);
+      RenameLogicalViewStatement renameLogicalViewStatement, MPPQueryContext 
context) {
+    return new RenameLogicalViewTask(context.getQueryId().getId(), 
renameLogicalViewStatement);
   }
 
   @Override
   public IConfigTask visitAlterLogicalView(
-      AlterLogicalViewStatement alterLogicalViewStatement, TaskContext 
context) {
-    return new AlterLogicalViewTask(context.queryId, 
alterLogicalViewStatement);
+      AlterLogicalViewStatement alterLogicalViewStatement, MPPQueryContext 
context) {
+    return new AlterLogicalViewTask(alterLogicalViewStatement, context);
   }
 
   @Override
   public IConfigTask visitGetRegionId(
-      GetRegionIdStatement getRegionIdStatement, TaskContext context) {
+      GetRegionIdStatement getRegionIdStatement, MPPQueryContext context) {
     return new GetRegionIdTask(getRegionIdStatement);
   }
 
   @Override
   public IConfigTask visitGetSeriesSlotList(
-      GetSeriesSlotListStatement getSeriesSlotListStatement, TaskContext 
context) {
+      GetSeriesSlotListStatement getSeriesSlotListStatement, MPPQueryContext 
context) {
     return new GetSeriesSlotListTask(getSeriesSlotListStatement);
   }
 
   @Override
   public IConfigTask visitGetTimeSlotList(
-      GetTimeSlotListStatement getTimeSlotListStatement, TaskContext context) {
+      GetTimeSlotListStatement getTimeSlotListStatement, MPPQueryContext 
context) {
     return new GetTimeSlotListTask(getTimeSlotListStatement);
   }
 
   @Override
   public IConfigTask visitCountTimeSlotList(
-      CountTimeSlotListStatement countTimeSlotListStatement, TaskContext 
context) {
+      CountTimeSlotListStatement countTimeSlotListStatement, MPPQueryContext 
context) {
     return new CountTimeSlotListTask(countTimeSlotListStatement);
   }
 
   @Override
   public IConfigTask visitMigrateRegion(
-      MigrateRegionStatement migrateRegionStatement, TaskContext context) {
+      MigrateRegionStatement migrateRegionStatement, MPPQueryContext context) {
     return new MigrateRegionTask(migrateRegionStatement);
   }
 
   @Override
   public IConfigTask visitCreateContinuousQuery(
-      CreateContinuousQueryStatement createContinuousQueryStatement, 
TaskContext context) {
-    return new CreateContinuousQueryTask(
-        createContinuousQueryStatement, context.sql, context.username);
+      CreateContinuousQueryStatement createContinuousQueryStatement, 
MPPQueryContext context) {
+    return new CreateContinuousQueryTask(createContinuousQueryStatement, 
context);
   }
 
   @Override
   public IConfigTask visitDropContinuousQuery(
-      DropContinuousQueryStatement dropContinuousQueryStatement, TaskContext 
context) {
+      DropContinuousQueryStatement dropContinuousQueryStatement, 
MPPQueryContext context) {
     return new DropContinuousQueryTask(dropContinuousQueryStatement);
   }
 
   @Override
   public IConfigTask visitShowContinuousQueries(
-      ShowContinuousQueriesStatement showContinuousQueriesStatement, 
TaskContext context) {
+      ShowContinuousQueriesStatement showContinuousQueriesStatement, 
MPPQueryContext context) {
     return new ShowContinuousQueriesTask();
   }
 
   @Override
   public IConfigTask visitSetSpaceQuota(
-      SetSpaceQuotaStatement setSpaceQuotaStatement, TaskContext context) {
+      SetSpaceQuotaStatement setSpaceQuotaStatement, MPPQueryContext context) {
     return new SetSpaceQuotaTask(setSpaceQuotaStatement);
   }
 
   @Override
   public IConfigTask visitShowSpaceQuota(
-      ShowSpaceQuotaStatement showSpaceQuotaStatement, TaskContext context) {
+      ShowSpaceQuotaStatement showSpaceQuotaStatement, MPPQueryContext 
context) {
     return new ShowSpaceQuotaTask(showSpaceQuotaStatement);
   }
 
   @Override
   public IConfigTask visitSetThrottleQuota(
-      SetThrottleQuotaStatement setThrottleQuotaStatement, TaskContext 
context) {
+      SetThrottleQuotaStatement setThrottleQuotaStatement, MPPQueryContext 
context) {
     return new SetThrottleQuotaTask(setThrottleQuotaStatement);
   }
 
   @Override
   public IConfigTask visitShowThrottleQuota(
-      ShowThrottleQuotaStatement showThrottleQuotaStatement, TaskContext 
context) {
+      ShowThrottleQuotaStatement showThrottleQuotaStatement, MPPQueryContext 
context) {
     return new ShowThrottleQuotaTask(showThrottleQuotaStatement);
   }
 
   /** ML Model Management */
   @Override
   public IConfigTask visitCreateModel(
-      CreateModelStatement createModelStatement, TaskContext context) {
-    return new CreateModelTask(createModelStatement);
+      CreateModelStatement createModelStatement, MPPQueryContext context) {
+    return new CreateModelTask(createModelStatement, context);
   }
 
   @Override
-  public IConfigTask visitDropModel(DropModelStatement dropModelStatement, 
TaskContext context) {
+  public IConfigTask visitDropModel(
+      DropModelStatement dropModelStatement, MPPQueryContext context) {
     return new DropModelTask(dropModelStatement.getModelId());
   }
 
   @Override
-  public IConfigTask visitShowModels(ShowModelsStatement showModelsStatement, 
TaskContext context) {
+  public IConfigTask visitShowModels(
+      ShowModelsStatement showModelsStatement, MPPQueryContext context) {
     return new ShowModelsTask();
   }
-
-  @Override
-  public IConfigTask visitShowTrails(ShowTrailsStatement showTrailsStatement, 
TaskContext context) {
-    return new ShowTrailsTask(showTrailsStatement.getModelId());
-  }
-
-  public static class TaskContext {
-
-    private final String queryId;
-
-    private final String sql;
-
-    private final String username;
-
-    public TaskContext(String queryId, String sql, String username) {
-      this.queryId = queryId;
-      this.sql = sql;
-      this.username = username;
-    }
-
-    public String getQueryId() {
-      return queryId;
-    }
-
-    public String getSql() {
-      return sql;
-    }
-
-    public String getUsername() {
-      return username;
-    }
-  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 1f25a869d04..4db84eeee04 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -105,6 +105,7 @@ import org.apache.iotdb.db.protocol.client.ConfigNodeClient;
 import org.apache.iotdb.db.protocol.client.ConfigNodeClientManager;
 import org.apache.iotdb.db.protocol.client.ConfigNodeInfo;
 import org.apache.iotdb.db.protocol.client.DataNodeClientPoolFactory;
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.queryengine.plan.Coordinator;
 import org.apache.iotdb.db.queryengine.plan.analyze.Analysis;
@@ -1792,14 +1793,20 @@ public class ClusterConfigTaskExecutor implements 
IConfigTaskExecutor {
 
   @Override
   public SettableFuture<ConfigTaskResult> alterLogicalView(
-      String queryId, AlterLogicalViewStatement alterLogicalViewStatement) {
+      AlterLogicalViewStatement alterLogicalViewStatement, MPPQueryContext 
context) {
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     CreateLogicalViewStatement createLogicalViewStatement = new 
CreateLogicalViewStatement();
     
createLogicalViewStatement.setTargetPaths(alterLogicalViewStatement.getTargetPaths());
     
createLogicalViewStatement.setSourcePaths(alterLogicalViewStatement.getSourcePaths());
     
createLogicalViewStatement.setQueryStatement(alterLogicalViewStatement.getQueryStatement());
 
-    Analyzer.validate(createLogicalViewStatement);
+    Analysis analysis = Analyzer.analyze(createLogicalViewStatement, context);
+    if (analysis.isFailed()) {
+      future.setException(
+          new IoTDBException(
+              analysis.getFailStatus().getMessage(), 
analysis.getFailStatus().getCode()));
+      return future;
+    }
 
     // Transform all Expressions into ViewExpressions.
     TransformToViewExpressionVisitor transformToViewExpressionVisitor =
@@ -1824,7 +1831,8 @@ public class ClusterConfigTaskExecutor implements 
IConfigTaskExecutor {
     }
 
     TAlterLogicalViewReq req =
-        new TAlterLogicalViewReq(queryId, 
ByteBuffer.wrap(stream.toByteArray()));
+        new TAlterLogicalViewReq(
+            context.getQueryId().getId(), 
ByteBuffer.wrap(stream.toByteArray()));
     try (ConfigNodeClient client =
         
CLUSTER_DELETION_CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID))
 {
       TSStatus tsStatus;
@@ -2007,12 +2015,12 @@ public class ClusterConfigTaskExecutor implements 
IConfigTaskExecutor {
 
   @Override
   public SettableFuture<ConfigTaskResult> createContinuousQuery(
-      CreateContinuousQueryStatement createContinuousQueryStatement, String 
sql, String username) {
+      CreateContinuousQueryStatement createContinuousQueryStatement, 
MPPQueryContext context) {
     createContinuousQueryStatement.semanticCheck();
 
     String queryBody = createContinuousQueryStatement.getQueryBody();
     // TODO Do not modify Statement in Analyzer
-    Analyzer.validate(createContinuousQueryStatement.getQueryBodyStatement());
+    Analyzer.analyze(createContinuousQueryStatement.getQueryBodyStatement(), 
context);
 
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     try (ConfigNodeClient client =
@@ -2026,9 +2034,9 @@ public class ClusterConfigTaskExecutor implements 
IConfigTaskExecutor {
               createContinuousQueryStatement.getEndTimeOffset(),
               createContinuousQueryStatement.getTimeoutPolicy().getType(),
               queryBody,
-              sql,
+              context.getSql(),
               createContinuousQueryStatement.getZoneId(),
-              username);
+              context.getSession() == null ? null : 
context.getSession().getUserName());
       final TSStatus executionStatus = client.createCQ(tCreateCQReq);
       if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != 
executionStatus.getCode()) {
         LOGGER.warn(
@@ -2112,11 +2120,10 @@ public class ClusterConfigTaskExecutor implements 
IConfigTaskExecutor {
   }
 
   @Override
-  public SettableFuture<ConfigTaskResult> createModel(CreateModelStatement 
createModelStatement) {
+  public SettableFuture<ConfigTaskResult> createModel(
+      CreateModelStatement createModelStatement, MPPQueryContext context) {
     createModelStatement.semanticCheck();
-
-    Analyzer analyzer = Analyzer.getAnalyzer();
-    Analysis analysis = 
analyzer.analyze(createModelStatement.getQueryStatement());
+    Analysis analysis = 
Analyzer.analyze(createModelStatement.getQueryStatement(), context);
 
     List<String> queryExpressions = new ArrayList<>();
     for (Expression expression : analysis.getSelectExpressions()) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
index 895f81cd9be..6af15690cf3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/IConfigTaskExecutor.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TFlushReq;
 import org.apache.iotdb.commons.cluster.NodeStatus;
 import org.apache.iotdb.confignode.rpc.thrift.TSpaceQuotaResp;
 import org.apache.iotdb.confignode.rpc.thrift.TThrottleQuotaResp;
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.CountDatabaseStatement;
 import 
org.apache.iotdb.db.queryengine.plan.statement.metadata.CountTimeSlotListStatement;
@@ -172,7 +173,7 @@ public interface IConfigTaskExecutor {
       String queryId, RenameLogicalViewStatement renameLogicalViewStatement);
 
   SettableFuture<ConfigTaskResult> alterLogicalView(
-      String queryId, AlterLogicalViewStatement alterLogicalViewStatement);
+      AlterLogicalViewStatement alterLogicalViewStatement, MPPQueryContext 
context);
 
   SettableFuture<ConfigTaskResult> getRegionId(GetRegionIdStatement 
getRegionIdStatement);
 
@@ -188,7 +189,7 @@ public interface IConfigTaskExecutor {
   SettableFuture<ConfigTaskResult> migrateRegion(MigrateRegionStatement 
migrateRegionStatement);
 
   SettableFuture<ConfigTaskResult> createContinuousQuery(
-      CreateContinuousQueryStatement createContinuousQueryStatement, String 
sql, String username);
+      CreateContinuousQueryStatement createContinuousQueryStatement, 
MPPQueryContext context);
 
   SettableFuture<ConfigTaskResult> dropContinuousQuery(String cqId);
 
@@ -208,7 +209,8 @@ public interface IConfigTaskExecutor {
 
   TThrottleQuotaResp getThrottleQuota();
 
-  SettableFuture<ConfigTaskResult> createModel(CreateModelStatement 
createModelStatement);
+  SettableFuture<ConfigTaskResult> createModel(
+      CreateModelStatement createModelStatement, MPPQueryContext context);
 
   SettableFuture<ConfigTaskResult> dropModel(String modelId);
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CreateContinuousQueryTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CreateContinuousQueryTask.java
index f0e08bcc745..619ebf55e78 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CreateContinuousQueryTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CreateContinuousQueryTask.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.plan.execution.config.metadata;
 
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
@@ -29,21 +30,17 @@ import com.google.common.util.concurrent.ListenableFuture;
 public class CreateContinuousQueryTask implements IConfigTask {
 
   private final CreateContinuousQueryStatement createContinuousQueryStatement;
-
-  private final String sql;
-
-  private final String username;
+  private final MPPQueryContext context;
 
   public CreateContinuousQueryTask(
-      CreateContinuousQueryStatement createContinuousQueryStatement, String 
sql, String username) {
+      CreateContinuousQueryStatement createContinuousQueryStatement, 
MPPQueryContext context) {
     this.createContinuousQueryStatement = createContinuousQueryStatement;
-    this.sql = sql;
-    this.username = username;
+    this.context = context;
   }
 
   @Override
   public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor 
configTaskExecutor)
       throws InterruptedException {
-    return 
configTaskExecutor.createContinuousQuery(createContinuousQueryStatement, sql, 
username);
+    return 
configTaskExecutor.createContinuousQuery(createContinuousQueryStatement, 
context);
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/model/CreateModelTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/model/CreateModelTask.java
index ec31fed9574..842b558fd8a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/model/CreateModelTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/model/CreateModelTask.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.plan.execution.config.metadata.model;
 
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
@@ -29,14 +30,16 @@ import com.google.common.util.concurrent.ListenableFuture;
 public class CreateModelTask implements IConfigTask {
 
   private final CreateModelStatement createModelStatement;
+  private final MPPQueryContext context;
 
-  public CreateModelTask(CreateModelStatement createModelStatement) {
+  public CreateModelTask(CreateModelStatement createModelStatement, 
MPPQueryContext context) {
     this.createModelStatement = createModelStatement;
+    this.context = context;
   }
 
   @Override
   public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor 
configTaskExecutor)
       throws InterruptedException {
-    return configTaskExecutor.createModel(createModelStatement);
+    return configTaskExecutor.createModel(createModelStatement, context);
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/view/AlterLogicalViewTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/view/AlterLogicalViewTask.java
index 4258f55aeb1..516478e5809 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/view/AlterLogicalViewTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/view/AlterLogicalViewTask.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.plan.execution.config.metadata.view;
 
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult;
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
@@ -28,17 +29,18 @@ import com.google.common.util.concurrent.ListenableFuture;
 
 public class AlterLogicalViewTask implements IConfigTask {
 
-  private final String queryId;
+  private final MPPQueryContext context;
   private final AlterLogicalViewStatement alterLogicalViewStatement;
 
-  public AlterLogicalViewTask(String queryId, AlterLogicalViewStatement 
alterLogicalViewStatement) {
-    this.queryId = queryId;
+  public AlterLogicalViewTask(
+      AlterLogicalViewStatement alterLogicalViewStatement, MPPQueryContext 
context) {
     this.alterLogicalViewStatement = alterLogicalViewStatement;
+    this.context = context;
   }
 
   @Override
   public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor 
configTaskExecutor)
       throws InterruptedException {
-    return configTaskExecutor.alterLogicalView(queryId, 
alterLogicalViewStatement);
+    return configTaskExecutor.alterLogicalView(alterLogicalViewStatement, 
context);
   }
 }


Reply via email to