Skip to content

Commit 417f8fe

Browse files
committed
Verify that TableScanNode's assignments match the output symbols
Before this change, only one-way match was verified: that each output symbol is backed by an assignment.
1 parent b17fa4e commit 417f8fe

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

core/trino-main/src/main/java/io/trino/sql/planner/plan/TableScanNode.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.base.VerifyException;
2020
import com.google.common.collect.ImmutableList;
2121
import com.google.common.collect.ImmutableMap;
22+
import com.google.common.collect.ImmutableSet;
2223
import com.google.errorprone.annotations.DoNotCall;
2324
import com.google.errorprone.annotations.Immutable;
2425
import io.trino.cost.PlanNodeStatsEstimate;
@@ -89,7 +90,7 @@ private TableScanNode(
8990
this.table = requireNonNull(table, "table is null");
9091
this.outputSymbols = ImmutableList.copyOf(requireNonNull(outputs, "outputs is null"));
9192
this.assignments = ImmutableMap.copyOf(requireNonNull(assignments, "assignments is null"));
92-
checkArgument(assignments.keySet().containsAll(outputs), "assignments does not cover all of outputs");
93+
checkArgument(ImmutableSet.copyOf(outputs).equals(assignments.keySet()), "assignments and outputs do not match");
9394
this.enforcedConstraint = null;
9495
this.statistics = null;
9596
this.updateTarget = updateTarget;
@@ -110,7 +111,7 @@ public TableScanNode(
110111
this.table = requireNonNull(table, "table is null");
111112
this.outputSymbols = ImmutableList.copyOf(requireNonNull(outputs, "outputs is null"));
112113
this.assignments = ImmutableMap.copyOf(requireNonNull(assignments, "assignments is null"));
113-
checkArgument(assignments.keySet().containsAll(outputs), "assignments does not cover all of outputs");
114+
checkArgument(ImmutableSet.copyOf(outputs).equals(assignments.keySet()), "assignments and outputs do not match");
114115
requireNonNull(enforcedConstraint, "enforcedConstraint is null");
115116
validateEnforcedConstraint(enforcedConstraint, outputs, assignments);
116117
this.enforcedConstraint = enforcedConstraint;

core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestMultipleDistinctAggregationsToSubqueries.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -925,7 +925,7 @@ public void testGroupByWithDistinctToSubqueries()
925925
.source(
926926
p.tableScan(
927927
testTableHandle(ruleTester),
928-
ImmutableList.of(input1Symbol, input2Symbol),
928+
ImmutableList.of(input1Symbol, input2Symbol, groupingKey),
929929
ImmutableMap.of(
930930
input1Symbol, COLUMN_1_HANDLE,
931931
input2Symbol, COLUMN_2_HANDLE,

0 commit comments

Comments
 (0)