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