diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java index 13ba9ef10f..b2f59fdb55 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java @@ -287,6 +287,23 @@ public class PhysicalPlanTranslator extends DefaultPlanVisitor projectionExprs = new ArrayList<>(); + PhysicalCTEConsumer consumer = getCTEConsumerChild(distribute); + Preconditions.checkState(consumer != null, "consumer not found"); + for (Slot slot : distribute.getOutput()) { + projectionExprs.add(ExpressionTranslator.translate(consumer.getProducerSlot(slot), context)); + } + TupleDescriptor projectionTuple = generateTupleDesc(distribute.getOutput(), null, context); + dataStreamSink.setProjections(projectionExprs); + dataStreamSink.setOutputTupleDesc(projectionTuple); + } + } DataPartition dataPartition = toDataPartition(distribute.getDistributionSpec(), validOutputIds, context); PlanFragment parentFragment = new PlanFragment(context.nextFragmentId(), exchangeNode, dataPartition); exchangeNode.setNumInstances(inputFragment.getPlanRoot().getNumInstances()); @@ -2332,4 +2349,16 @@ public class PhysicalPlanTranslator extends DefaultPlanVisitor