This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch vector-index-dev
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/vector-index-dev by this push:
     new 033bfb63a7f [fix](vector) plan conflict with topn lazy materialization
033bfb63a7f is described below

commit 033bfb63a7fa8022f21313c99b1468ccf09babd3
Author: morrySnow <zhangwen...@selectdb.com>
AuthorDate: Mon Jun 16 23:04:10 2025 +0800

    [fix](vector) plan conflict with topn lazy materialization
---
 .../doris/analysis/AnnIndexPropertiesChecker.java  |  3 +-
 .../java/org/apache/doris/analysis/IndexDef.java   |  7 ++--
 .../doris/catalog/BuiltinScalarFunctions.java      |  2 +-
 .../glue/translator/PhysicalPlanTranslator.java    | 47 ++++++++++------------
 .../glue/translator/PlanTranslatorContext.java     |  2 -
 .../LogicalOlapScanToPhysicalOlapScan.java         |  3 +-
 .../rules/rewrite/OperativeColumnDerive.java       |  8 ++++
 .../expressions/visitor/ScalarFunctionVisitor.java |  4 +-
 .../trees/plans/commands/info/IndexDefinition.java |  2 +-
 .../trees/plans/logical/LogicalFileScan.java       | 14 +++----
 .../trees/plans/logical/LogicalHudiScan.java       |  6 +--
 .../physical/PhysicalLazyMaterializeOlapScan.java  | 19 ++++-----
 .../org/apache/doris/planner/OlapScanNode.java     |  1 -
 .../java/org/apache/doris/qe/SessionVariable.java  |  6 +--
 14 files changed, 62 insertions(+), 62 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnnIndexPropertiesChecker.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnnIndexPropertiesChecker.java
index d0d5648a0a9..44218f6941c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnnIndexPropertiesChecker.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnnIndexPropertiesChecker.java
@@ -38,7 +38,8 @@ public class AnnIndexPropertiesChecker {
                 case "metric_type":
                     metric = properties.get(key);
                     if (!metric.equals("l2_distance") && 
!metric.equals("inner_product")) {
-                        throw new AnalysisException("only support ann index 
with metric l2_distance or inner_product, got: " + metric);
+                        throw new AnalysisException(
+                                "only support ann index with metric 
l2_distance or inner_product, got: " + metric);
                     }
                     break;
                 case "dim":
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
index ecc385d0266..e0c63aecab7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
@@ -24,7 +24,6 @@ import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Config;
-import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.thrift.TInvertedIndexFileStorageFormat;
 
 import com.google.common.base.Strings;
@@ -242,7 +241,8 @@ public class IndexDef {
             TInvertedIndexFileStorageFormat invertedIndexFileStorageFormat) 
throws AnalysisException {
         if (indexType == IndexType.ANN) {
             if (column.isAllowNull()) {
-                throw new 
org.apache.doris.nereids.exceptions.AnalysisException("ANN index must be built 
on a column that is not nullable");
+                throw new 
org.apache.doris.nereids.exceptions.AnalysisException(
+                        "ANN index must be built on a column that is not 
nullable");
             }
 
             String indexColName = column.getName();
@@ -254,7 +254,8 @@ public class IndexDef {
             Type columnType = column.getType();
             Type itemType = ((ArrayType) columnType).getItemType();
             if (!itemType.isFloatingPointType()) {
-                throw new 
org.apache.doris.nereids.exceptions.AnalysisException("ANN index column item 
type must be float type");
+                throw new 
org.apache.doris.nereids.exceptions.AnalysisException(
+                        "ANN index column item type must be float type");
             }
             return;
         }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
index 24bf05c2ec5..5b62fd2db33 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
@@ -278,8 +278,8 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.JsonbParseNul
 import org.apache.doris.nereids.trees.expressions.functions.scalar.JsonbType;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.JsonbValid;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.L1Distance;
-import 
org.apache.doris.nereids.trees.expressions.functions.scalar.L2DistanceApproximate;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.L2Distance;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.L2DistanceApproximate;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.LastDay;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.LastQueryId;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Least;
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 8370d5ca7dc..0d3d64938a9 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
@@ -809,11 +809,10 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
 
     @Override
     public PlanFragment visitPhysicalOlapScan(PhysicalOlapScan olapScan, 
PlanTranslatorContext context) {
-        return computePhysicalOlapScan(olapScan, false, context);
+        return computePhysicalOlapScan(olapScan, context);
     }
 
-    private PlanFragment computePhysicalOlapScan(PhysicalOlapScan olapScan,
-            boolean lazyMaterialize, PlanTranslatorContext context) {
+    private PlanFragment computePhysicalOlapScan(PhysicalOlapScan olapScan, 
PlanTranslatorContext context) {
         List<Slot> slots = olapScan.getOutput();
         OlapTable olapTable = olapScan.getTable();
         // generate real output tuple
@@ -905,17 +904,15 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
         Utils.execWithUncheckedException(olapScanNode::init);
         // TODO: process collect scan node in one place
         context.addScanNode(olapScanNode, olapScan);
-        if (!lazyMaterialize) {
-            // TODO: process translate runtime filter in one place
-            //   use real plan node to present rf apply and rf generator
-            context.getRuntimeTranslator().ifPresent(
-                    runtimeFilterTranslator -> 
runtimeFilterTranslator.getContext().getTargetListByScan(olapScan)
-                            .forEach(expr -> 
runtimeFilterTranslator.translateRuntimeFilterTarget(
-                                    expr, olapScanNode, context)
-                            )
-            );
-            context.getTopnFilterContext().translateTarget(olapScan, 
olapScanNode, context);
-        }
+        // TODO: process translate runtime filter in one place
+        //   use real plan node to present rf apply and rf generator
+        context.getRuntimeTranslator().ifPresent(
+                runtimeFilterTranslator -> 
runtimeFilterTranslator.getContext().getTargetListByScan(olapScan)
+                        .forEach(expr -> 
runtimeFilterTranslator.translateRuntimeFilterTarget(
+                                expr, olapScanNode, context)
+                        )
+        );
+        context.getTopnFilterContext().translateTarget(olapScan, olapScanNode, 
context);
         
olapScanNode.setPushDownAggNoGrouping(context.getRelationPushAggOp(olapScan.getRelationId()));
         // Create PlanFragment
         // TODO: use a util function to convert distribution to DataPartition
@@ -2628,25 +2625,25 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
     @Override
     public PlanFragment 
visitPhysicalLazyMaterializeOlapScan(PhysicalLazyMaterializeOlapScan lazyScan,
             PlanTranslatorContext context) {
-        PlanFragment planFragment = 
computePhysicalOlapScan(lazyScan.getScan(), true, context);
-        TupleDescriptor outputTuple = generateTupleDesc(lazyScan.getOutput(), 
lazyScan.getScan().getTable(), context);
+        PlanFragment planFragment = 
computePhysicalOlapScan(lazyScan.getScan(), context);
         OlapScanNode olapScanNode = (OlapScanNode) planFragment.getPlanRoot();
-        olapScanNode.setDesc(outputTuple);
+        // set lazy materialized context
         olapScanNode.setIsTopnLazyMaterialize(true);
         
olapScanNode.setGlobalRowIdColumn(lazyScan.getRowId().getOriginalColumn().get());
+        Set<SlotId> scanIds = 
lazyScan.getOutput().stream().map(NamedExpression::getExprId)
+                
.map(context::findSlotRef).filter(Objects::nonNull).map(SlotRef::getSlotId)
+                .collect(Collectors.toSet());
+        context.createSlotDesc(olapScanNode.getTupleDesc(), 
lazyScan.getRowId(), lazyScan.getTable());
+        for (SlotDescriptor slot : olapScanNode.getTupleDesc().getSlots()) {
+            if (!scanIds.contains(slot.getId())) {
+                slot.setIsMaterialized(false);
+            }
+        }
         for (Slot slot : lazyScan.getOutput()) {
             if (((SlotReference) slot).getOriginalColumn().isPresent()) {
                 
olapScanNode.addTopnLazyMaterializeOutputColumns(((SlotReference) 
slot).getOriginalColumn().get());
             }
         }
-        
planFragment.getPlanRoot().resetTupleIds(Lists.newArrayList(outputTuple.getId()));
-        // translate rf on outputTuple
-        context.getRuntimeTranslator().ifPresent(
-                runtimeFilterTranslator -> 
runtimeFilterTranslator.getContext().getTargetListByScan(lazyScan)
-                        .forEach(expr -> 
runtimeFilterTranslator.translateRuntimeFilterTarget(
-                                expr, olapScanNode, context)
-                        )
-        );
         context.getTopnFilterContext().translateTarget(lazyScan, olapScanNode, 
context);
 
         return planFragment;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java
index 5fc0bdb9210..07566c5c48c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java
@@ -120,7 +120,6 @@ public class PlanTranslatorContext {
 
     private final Set<SlotId> virtualColumnIds = Sets.newHashSet();
 
-
     public PlanTranslatorContext(CascadesContext ctx) {
         this.connectContext = ctx.getConnectContext();
         this.translator = new 
RuntimeFilterTranslator(ctx.getRuntimeFilterContext());
@@ -349,7 +348,6 @@ public class PlanTranslatorContext {
         return tablePushAggOp.getOrDefault(relationId, TPushAggOp.NONE);
     }
 
-
     public boolean isTopMaterializeNode() {
         return isTopMaterializeNode;
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalOlapScanToPhysicalOlapScan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalOlapScanToPhysicalOlapScan.java
index dd59136b1ae..c0474d36cce 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalOlapScanToPhysicalOlapScan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalOlapScanToPhysicalOlapScan.java
@@ -120,7 +120,8 @@ public class LogicalOlapScanToPhysicalOlapScan extends 
OneImplementationRuleFact
                         // determined. As a result, some bucket fields are 
lost in the query execution plan.
                         // So here we use the column name to avoid this problem
                         if (((SlotReference) 
slot).getOriginalColumn().isPresent()
-                            && ((SlotReference) 
slot).getOriginalColumn().get().getName().equalsIgnoreCase(column.getName())) {
+                                && ((SlotReference) 
slot).getOriginalColumn().get().getName()
+                                .equalsIgnoreCase(column.getName())) {
                             hashColumns.add(slot.getExprId());
                         }
                     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OperativeColumnDerive.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OperativeColumnDerive.java
index 7af4c2428c1..6e55411e42b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OperativeColumnDerive.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/OperativeColumnDerive.java
@@ -137,6 +137,10 @@ public class OperativeColumnDerive extends 
DefaultPlanRewriter<DeriveContext> im
                 }
             }
         }
+        for (NamedExpression virtualColumn : olapScan.getVirtualColumns()) {
+            intersectSlots.add(virtualColumn.toSlot());
+            intersectSlots.addAll(virtualColumn.getInputSlots());
+        }
         return (Plan) olapScan.withOperativeSlots(intersectSlots);
     }
 
@@ -144,6 +148,10 @@ public class OperativeColumnDerive extends 
DefaultPlanRewriter<DeriveContext> im
     public Plan visitLogicalCatalogRelation(LogicalCatalogRelation relation, 
DeriveContext context) {
         Set<Slot> intersectSlots = new HashSet<>(relation.getOutput());
         intersectSlots.retainAll(context.operativeSlots);
+        for (NamedExpression virtualColumn : relation.getVirtualColumns()) {
+            intersectSlots.add(virtualColumn.toSlot());
+            intersectSlots.addAll(virtualColumn.getInputSlots());
+        }
         return (Plan) relation.withOperativeSlots(intersectSlots);
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
index b0d3694f5ea..65c78b73b2e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
@@ -225,8 +225,8 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.HoursSub;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.If;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Ignore;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Initcap;
-import 
org.apache.doris.nereids.trees.expressions.functions.scalar.InnerProductApproximate;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.InnerProduct;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.InnerProductApproximate;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Instr;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.InttoUuid;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.Ipv4CIDRToRange;
@@ -282,8 +282,8 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.JsonbParseNul
 import org.apache.doris.nereids.trees.expressions.functions.scalar.JsonbType;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.JsonbValid;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.L1Distance;
-import 
org.apache.doris.nereids.trees.expressions.functions.scalar.L2DistanceApproximate;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.L2Distance;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.L2DistanceApproximate;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.LastDay;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.LastQueryId;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Least;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
index c7b0ad0aecb..4970034ee9d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
@@ -153,7 +153,7 @@ public class IndexDefinition {
             }
             return;
         }
-                    
+
         if (indexType == IndexType.BITMAP || indexType == IndexType.INVERTED
                 || indexType == IndexType.BLOOMFILTER || indexType == 
IndexType.NGRAM_BF) {
             String indexColName = column.getName();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
index 74566551223..80aa180015e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
@@ -25,8 +25,8 @@ import org.apache.doris.datasource.mvcc.MvccUtil;
 import org.apache.doris.nereids.memo.GroupExpression;
 import org.apache.doris.nereids.properties.LogicalProperties;
 import org.apache.doris.nereids.trees.TableSample;
-import org.apache.doris.nereids.trees.expressions.Slot;
 import org.apache.doris.nereids.trees.expressions.NamedExpression;
+import org.apache.doris.nereids.trees.expressions.Slot;
 import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.RelationId;
@@ -57,10 +57,10 @@ public class LogicalFileScan extends LogicalCatalogRelation 
{
                            Optional<TableSample> tableSample, 
Optional<TableSnapshot> tableSnapshot,
                            Optional<TableScanParams> scanParams) {
         this(id, table, qualifier,
-            
table.initSelectedPartitions(MvccUtil.getSnapshotFromContext(table)),
-            operativeSlots, ImmutableList.of(),
-            tableSample, tableSnapshot,
-            scanParams, Optional.empty(), Optional.empty());
+                
table.initSelectedPartitions(MvccUtil.getSnapshotFromContext(table)),
+                operativeSlots, ImmutableList.of(),
+                tableSample, tableSnapshot,
+                scanParams, Optional.empty(), Optional.empty());
     }
 
     /**
@@ -205,8 +205,8 @@ public class LogicalFileScan extends LogicalCatalogRelation 
{
     @Override
     public LogicalFileScan withOperativeSlots(Collection<Slot> operativeSlots) 
{
         return new LogicalFileScan(relationId, (ExternalTable) table, 
qualifier,
-                selectedPartitions, operativeSlots, 
virtualColumns,tableSample, tableSnapshot,
-            scanParams, groupExpression, Optional.of(getLogicalProperties()));
+                selectedPartitions, operativeSlots, virtualColumns, 
tableSample, tableSnapshot,
+                scanParams, groupExpression, 
Optional.of(getLogicalProperties()));
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java
index 7f72a897585..4de01efb91f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java
@@ -79,7 +79,7 @@ public class LogicalHudiScan extends LogicalFileScan {
             Optional<GroupExpression> groupExpression,
             Optional<LogicalProperties> logicalProperties) {
         super(id, table, qualifier, selectedPartitions, operativeSlots, 
virtualColumns,
-            tableSample, tableSnapshot, scanParams, groupExpression, 
logicalProperties);
+                tableSample, tableSnapshot, scanParams, groupExpression, 
logicalProperties);
         Objects.requireNonNull(scanParams, "scanParams should not null");
         Objects.requireNonNull(incrementalRelation, "incrementalRelation 
should not null");
         this.incrementalRelation = incrementalRelation;
@@ -89,8 +89,8 @@ public class LogicalHudiScan extends LogicalFileScan {
             Collection<Slot> operativeSlots, Optional<TableScanParams> 
scanParams,
             Optional<TableSample> tableSample, Optional<TableSnapshot> 
tableSnapshot) {
         this(id, table, qualifier, ((HMSExternalTable) 
table).initHudiSelectedPartitions(tableSnapshot),
-            tableSample, tableSnapshot, scanParams, Optional.empty(), 
operativeSlots, ImmutableList.of(),
-            Optional.empty(), Optional.empty());
+                tableSample, tableSnapshot, scanParams, Optional.empty(), 
operativeSlots, ImmutableList.of(),
+                Optional.empty(), Optional.empty());
     }
 
     public Optional<TableScanParams> getScanParams() {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLazyMaterializeOlapScan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLazyMaterializeOlapScan.java
index f7857069dc9..6dbe79da96c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLazyMaterializeOlapScan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLazyMaterializeOlapScan.java
@@ -33,10 +33,9 @@ import java.util.List;
  */
 public class PhysicalLazyMaterializeOlapScan extends PhysicalOlapScan {
 
-    private PhysicalOlapScan scan;
-    private SlotReference rowId;
+    private final PhysicalOlapScan scan;
+    private final SlotReference rowId;
     private final List<Slot> lazySlots;
-    private List<Slot> output;
 
     /**
      * constr
@@ -60,7 +59,7 @@ public class PhysicalLazyMaterializeOlapScan extends 
PhysicalOlapScan {
                 physicalOlapScan.getVirtualColumns(),
                 physicalOlapScan.getAnnOrderKeys(),
                 physicalOlapScan.getAnnLimit()
-            );
+        );
         this.scan = physicalOlapScan;
         this.rowId = rowId;
         this.lazySlots = ImmutableList.copyOf(lazySlots);
@@ -73,12 +72,9 @@ public class PhysicalLazyMaterializeOlapScan extends 
PhysicalOlapScan {
 
     @Override
     public List<Slot> computeOutput() {
-        if (output == null) {
-            output = ImmutableList.<Slot>builder()
-                    .addAll(scan.getOperativeSlots())
-                    .add(rowId).build();
-        }
-        return output;
+        return ImmutableList.<Slot>builder()
+                .addAll(scan.getOperativeSlots())
+                .add(rowId).build();
     }
 
     public PhysicalOlapScan getScan() {
@@ -107,8 +103,7 @@ public class PhysicalLazyMaterializeOlapScan extends 
PhysicalOlapScan {
                 .append("]");
         if (!getAppliedRuntimeFilters().isEmpty()) {
             shapeBuilder.append(" apply RFs:");
-            getAppliedRuntimeFilters()
-                    .stream().forEach(rf -> shapeBuilder.append(" 
RF").append(rf.getId().asInt()));
+            getAppliedRuntimeFilters().forEach(rf -> shapeBuilder.append(" 
RF").append(rf.getId().asInt()));
         }
         return shapeBuilder.toString();
     }
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 a897631964f..628b9e83a00 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
@@ -1444,7 +1444,6 @@ public class OlapScanNode extends ScanNode {
             output.append(prefix).append("rewrittenProjectList: ").append(
                     getExplainString(rewrittenProjectList)).append("\n");
         }
-        output.append(prefix).append("desc: 
").append(desc.getId().asInt()).append("\n");
         return output.toString();
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index e19bcded587..6b96defdc41 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -2656,17 +2656,17 @@ public class SessionVariable implements Serializable, 
Writable {
 
     @VariableMgr.VarAttr(name = HNSW_EF_SEARCH, needForward = true,
             description = {"HNSW索引的EF搜索参数,控制搜索的精度和速度",
-                    "HNSW index EF search parameter, controls the precision 
and speed of the search"})  
+                    "HNSW index EF search parameter, controls the precision 
and speed of the search"})
     public int hnswEFSearch = 16;
 
     @VariableMgr.VarAttr(name = HNSW_CHECK_RELATIVE_DISTANCE, needForward = 
true,
             description = {"是否启用相对距离检查机制,以提升HNSW搜索的准确性",
-                       "Enable relative distance checking to improve HNSW 
search accuracy"})
+                    "Enable relative distance checking to improve HNSW search 
accuracy"})
     public boolean hnswCheckRelativeDistance = true;
 
     @VariableMgr.VarAttr(name = HNSW_BOUNDED_QUEUE, needForward = true,
             description = {"是否使用有界优先队列来优化HNSW的搜索性能",
-                       "Whether to use a bounded priority queue to optimize 
HNSW search performance"})
+                    "Whether to use a bounded priority queue to optimize HNSW 
search performance"})
     public boolean hnswBoundedQueue = true;
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to