diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index 1003991f46..2d5bc41d07 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -1193,6 +1193,23 @@ public class SingleNodePlanner { // create left-deep sequence of binary hash joins; assign node ids as we go along TableRef tblRef = selectStmt.getTableRefs().get(0); materializeTableResultForCrossJoinOrCountStar(tblRef, analyzer); + if (selectStmt.getSelectList().getItems().size() == 1) { + final List slotIds = Lists.newArrayList(); + final List tupleIds = Lists.newArrayList(); + Expr resultExprSelected = selectStmt.getSelectList().getItems().get(0).getExpr(); + if (resultExprSelected != null && resultExprSelected instanceof SlotRef) { + resultExprSelected.getIds(tupleIds, slotIds); + for (SlotId id : slotIds) { + final SlotDescriptor slot = analyzer.getDescTbl().getSlotDesc(id); + slot.setIsMaterialized(true); + slot.materializeSrcExpr(); + } + for (TupleId id : tupleIds) { + final TupleDescriptor tuple = analyzer.getDescTbl().getTupleDesc(id); + tuple.setIsMaterialized(true); + } + } + } root = createTableRefNode(analyzer, tblRef, selectStmt); // to change the inner contains analytic function // selectStmt.seondSubstituteInlineViewExprs(analyzer.getChangeResSmap());