diff --git a/core/trino-main/src/main/java/io/trino/sql/planner/planprinter/PlanPrinter.java b/core/trino-main/src/main/java/io/trino/sql/planner/planprinter/PlanPrinter.java index f3a73f0942a0..3ea3fa025fdf 100644 --- a/core/trino-main/src/main/java/io/trino/sql/planner/planprinter/PlanPrinter.java +++ b/core/trino-main/src/main/java/io/trino/sql/planner/planprinter/PlanPrinter.java @@ -1141,11 +1141,18 @@ else if (!node.getReplicateSymbols().isEmpty()) { .map(UnnestNode.Mapping::getInput) .collect(toImmutableList()); + Optional replicate = node.getReplicateSymbols().isEmpty() + ? Optional.empty() + : Optional.of("replicate=" + formatOutputs(types, node.getReplicateSymbols())); + Optional unnest = Optional.of("unnest=" + formatOutputs(types, unnestInputs)); + Optional filter = node.getFilter().map(filterExpression -> "filter=" + filterExpression); addNode( node, name, - format("[replicate=%s, unnest=%s", formatOutputs(types, node.getReplicateSymbols()), formatOutputs(types, unnestInputs)) - + (node.getFilter().isPresent() ? format(", filter=%s]", node.getFilter().get()) : "]")); + Stream.of(replicate, unnest, filter) + .filter(Optional::isPresent) + .map(Optional::get) + .collect(joining(", ", "[", "]"))); return processChildren(node, context); }