diff --git a/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java b/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java index b612dd926e7d..0b6056306680 100644 --- a/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java +++ b/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java @@ -663,6 +663,7 @@ public LocalExecutionPlan plan( outputTypes, pagePreprocessor, createExchangePagesSerdeFactory(plannerContext.getBlockEncodingSerde(), session)), + ImmutableMap.of(), physicalOperation), context); @@ -2560,8 +2561,7 @@ public PhysicalOperation visitJoin(JoinNode node, LocalExecutionPlanContext cont List rightSymbols = Lists.transform(clauses, JoinNode.EquiJoinClause::getRight); return switch (node.getType()) { - case INNER, LEFT, RIGHT, FULL -> - createLookupJoin(node, node.getLeft(), leftSymbols, node.getRight(), rightSymbols, localDynamicFilters, context); + case INNER, LEFT, RIGHT, FULL -> createLookupJoin(node, node.getLeft(), leftSymbols, node.getRight(), rightSymbols, localDynamicFilters, context); }; } @@ -2737,7 +2737,7 @@ private PhysicalOperation createNestedLoopJoin(JoinNode node, Set layout; private final List types; - public PhysicalOperation(OperatorFactory operatorFactory, Map layout) + PhysicalOperation(OperatorFactory operatorFactory, Map layout) { - this(operatorFactory, layout, Optional.empty()); + this(ImmutableList.of(operatorFactory), layout); } - public PhysicalOperation(OperatorFactory operatorFactory, Map layout, PhysicalOperation source) + PhysicalOperation(OperatorFactory operatorFactory, Map layout, PhysicalOperation source) { - this(operatorFactory, layout, Optional.of(requireNonNull(source, "source is null"))); - } - - public PhysicalOperation(OperatorFactory outputOperatorFactory, PhysicalOperation source) - { - this(outputOperatorFactory, ImmutableMap.of(), Optional.of(requireNonNull(source, "source is null"))); + this( + ImmutableList.builder() + .addAll(source.getOperatorFactories()) + .add(operatorFactory) + .build(), + layout); } - private PhysicalOperation( - OperatorFactory operatorFactory, - Map layout, - Optional source) + PhysicalOperation(List operatorFactories, Map layout) { - requireNonNull(operatorFactory, "operatorFactory is null"); - requireNonNull(layout, "layout is null"); - requireNonNull(source, "source is null"); - + this.operatorFactories = ImmutableList.copyOf(requireNonNull(operatorFactories, "operatorFactories is null")); + this.layout = ImmutableMap.copyOf(requireNonNull(layout, "layout is null")); this.types = toTypes(layout); - this.operatorFactories = ImmutableList.builder() - .addAll(source.map(PhysicalOperation::getOperatorFactories).orElse(ImmutableList.of())) - .add(operatorFactory) - .build(); - this.layout = ImmutableMap.copyOf(layout); } private static List toTypes(Map layout)