diff --git a/core/trino-main/src/main/java/io/trino/sql/analyzer/Analysis.java b/core/trino-main/src/main/java/io/trino/sql/analyzer/Analysis.java index c834c6e4bfe9..8b74f7441db4 100644 --- a/core/trino-main/src/main/java/io/trino/sql/analyzer/Analysis.java +++ b/core/trino-main/src/main/java/io/trino/sql/analyzer/Analysis.java @@ -97,6 +97,7 @@ import static com.google.common.collect.ImmutableMap.toImmutableMap; import static com.google.common.collect.ImmutableSet.toImmutableSet; import static io.trino.sql.analyzer.QueryType.DESCRIBE; +import static io.trino.sql.analyzer.QueryType.EXPLAIN; import static java.lang.String.format; import static java.util.Collections.emptyList; import static java.util.Collections.unmodifiableMap; @@ -240,14 +241,10 @@ public Optional getTarget() public void setUpdateType(String updateType, QualifiedObjectName targetName, Optional targetTable, Optional> targetColumns) { - this.updateType = updateType; - this.target = Optional.of(new UpdateTarget(targetName, targetTable, targetColumns)); - } - - public void resetUpdateType() - { - this.updateType = null; - this.target = Optional.empty(); + if (queryType != EXPLAIN) { + this.updateType = updateType; + this.target = Optional.of(new UpdateTarget(targetName, targetTable, targetColumns)); + } } public boolean isUpdateTarget(Table table) diff --git a/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryExplainer.java b/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryExplainer.java index bb44b769e289..693739f41220 100644 --- a/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryExplainer.java +++ b/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryExplainer.java @@ -47,6 +47,7 @@ import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; import static io.trino.sql.ParameterUtils.parameterExtractor; +import static io.trino.sql.analyzer.QueryType.EXPLAIN; import static io.trino.sql.planner.LogicalPlanner.Stage.OPTIMIZED_AND_VALIDATED; import static io.trino.sql.planner.planprinter.IoPlanPrinter.textIoPlan; import static java.lang.String.format; @@ -118,7 +119,7 @@ public QueryExplainer( public Analysis analyze(Session session, Statement statement, List parameters, WarningCollector warningCollector) { Analyzer analyzer = new Analyzer(session, metadata, sqlParser, groupProvider, accessControl, Optional.of(this), parameters, parameterExtractor(statement, parameters), warningCollector, statsCalculator); - return analyzer.analyze(statement); + return analyzer.analyze(statement, EXPLAIN); } public String getPlan(Session session, Statement statement, Type planType, List parameters, WarningCollector warningCollector) diff --git a/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryType.java b/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryType.java index 753c4f969bdb..e840cbfa4fb7 100644 --- a/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryType.java +++ b/core/trino-main/src/main/java/io/trino/sql/analyzer/QueryType.java @@ -16,6 +16,7 @@ public enum QueryType { DESCRIBE, + EXPLAIN, OTHERS, /**/; } diff --git a/core/trino-main/src/main/java/io/trino/sql/analyzer/StatementAnalyzer.java b/core/trino-main/src/main/java/io/trino/sql/analyzer/StatementAnalyzer.java index fb66dfe0293b..2f6d516a5ab8 100644 --- a/core/trino-main/src/main/java/io/trino/sql/analyzer/StatementAnalyzer.java +++ b/core/trino-main/src/main/java/io/trino/sql/analyzer/StatementAnalyzer.java @@ -1157,7 +1157,6 @@ private void validateColumnAliasesCount(List columnAliases, int sour protected Scope visitExplain(Explain node, Optional scope) { process(node.getStatement(), scope); - analysis.resetUpdateType(); return createAndAssignScope(node, scope, Field.newUnqualified("Query Plan", VARCHAR)); } @@ -1165,7 +1164,6 @@ protected Scope visitExplain(Explain node, Optional scope) protected Scope visitExplainAnalyze(ExplainAnalyze node, Optional scope) { process(node.getStatement(), scope); - analysis.resetUpdateType(); return createAndAssignScope(node, scope, Field.newUnqualified("Query Plan", VARCHAR)); }