From e537ca8e34f983b59f3cec19de76b600040f041e Mon Sep 17 00:00:00 2001 From: BePPPower Date: Thu, 18 Jul 2024 16:32:08 +0800 Subject: [PATCH] fix 4 --- .../translator/PhysicalPlanTranslator.java | 1 + .../apache/doris/planner/OlapScanNode.java | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) 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 a2973426cdd6b3..a390dbe5e89240 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 @@ -1990,6 +1990,7 @@ public PlanFragment visitPhysicalProject(PhysicalProject project } requiredSlotIdSet.add(lastSlot.getId()); } + ((OlapScanNode) inputPlanNode).updateRequiredSlots(context, requiredByProjectSlotIdSet); } updateScanSlotsMaterialization((ScanNode) inputPlanNode, requiredSlotIdSet, requiredByProjectSlotIdSet, slotIdsByOrder, context); diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java index 7faec3e775b3f6..753b76290d8a70 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java @@ -31,6 +31,7 @@ import org.apache.doris.analysis.PartitionNames; import org.apache.doris.analysis.PrepareStmt; import org.apache.doris.analysis.SlotDescriptor; +import org.apache.doris.analysis.SlotId; import org.apache.doris.analysis.SlotRef; import org.apache.doris.analysis.SortInfo; import org.apache.doris.analysis.TableSample; @@ -63,6 +64,7 @@ import org.apache.doris.common.UserException; import org.apache.doris.common.util.DebugUtil; import org.apache.doris.common.util.Util; +import org.apache.doris.nereids.glue.translator.PlanTranslatorContext; import org.apache.doris.qe.ConnectContext; import org.apache.doris.resource.Tag; import org.apache.doris.statistics.StatisticalType; @@ -1736,14 +1738,6 @@ public void finalizeForNereids() { computeStatsForNereids(); // NOTICE: must call here to get selected tablet row count to let block rules work well. mockRowCountInStatistic(); - - outputColumnUniqueIds.clear(); - for (SlotDescriptor slot : desc.getSlots()) { - if (!slot.isMaterialized()) { - continue; - } - outputColumnUniqueIds.add(slot.getColumn().getUniqueId()); - } } private void computeStatsForNereids() { @@ -1756,6 +1750,16 @@ private void computeStatsForNereids() { cardinality = cardinality == -1 ? 0 : cardinality; } + public void updateRequiredSlots(PlanTranslatorContext context, + Set requiredByProjectSlotIdSet) { + outputColumnUniqueIds.clear(); + for (SlotDescriptor slot : context.getTupleDesc(this.getTupleId()).getSlots()) { + if (requiredByProjectSlotIdSet.contains(slot.getId()) && slot.getColumn() != null) { + outputColumnUniqueIds.add(slot.getColumn().getUniqueId()); + } + } + } + Set getDistributionColumnNames() { return olapTable != null ? olapTable.getDistributionColumnNames()