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 ef7b1f7f957 [opt](vector) add score function push down
ef7b1f7f957 is described below
commit ef7b1f7f957385ece4fb81a62a5d7a5c0ee95c70
Author: morrySnow <[email protected]>
AuthorDate: Thu Jun 26 12:19:11 2025 +0800
[opt](vector) add score function push down
---
.../rules/rewrite/PushDownVirtualColumnsIntoOlapScan.java | 13 +++++++------
.../functions/scalar/InnerProductApproximate.java | 1 -
.../nereids/trees/expressions/functions/scalar/Score.java | 2 +-
.../nereids/trees/plans/commands/info/BuildIndexOp.java | 2 +-
.../nereids/trees/plans/commands/info/CreateIndexOp.java | 4 ++--
.../main/java/org/apache/doris/planner/OlapScanNode.java | 10 +++++-----
6 files changed, 16 insertions(+), 16 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownVirtualColumnsIntoOlapScan.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownVirtualColumnsIntoOlapScan.java
index 0d25d8ba508..47dc7108d91 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownVirtualColumnsIntoOlapScan.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownVirtualColumnsIntoOlapScan.java
@@ -24,6 +24,7 @@ import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.NamedExpression;
import
org.apache.doris.nereids.trees.expressions.functions.scalar.InnerProductApproximate;
import
org.apache.doris.nereids.trees.expressions.functions.scalar.L2DistanceApproximate;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.Score;
import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.logical.LogicalFilter;
import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
@@ -72,14 +73,14 @@ public class PushDownVirtualColumnsIntoOlapScan implements
RewriteRuleFactory {
Map<Expression, Expression> replaceMap = Maps.newHashMap();
ImmutableList.Builder<NamedExpression> virtualColumnsBuilder =
ImmutableList.builder();
for (Expression conjunct : filter.getConjuncts()) {
- Set<Expression> distanceFunctions = conjunct.collect(
- e -> e instanceof L2DistanceApproximate || e instanceof
InnerProductApproximate);
- for (Expression distanceFunction : distanceFunctions) {
- if (replaceMap.containsKey(distanceFunction)) {
+ Set<Expression> needPushDownFunctions = conjunct.collect(e -> e
instanceof L2DistanceApproximate
+ || e instanceof InnerProductApproximate || e
instanceof Score);
+ for (Expression needPushDownFunction : needPushDownFunctions) {
+ if (replaceMap.containsKey(needPushDownFunction)) {
continue;
}
- Alias alias = new Alias(distanceFunction);
- replaceMap.put(distanceFunction, alias.toSlot());
+ Alias alias = new Alias(needPushDownFunction);
+ replaceMap.put(needPushDownFunction, alias.toSlot());
virtualColumnsBuilder.add(alias);
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/InnerProductApproximate.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/InnerProductApproximate.java
index 8c66e396538..6c854550197 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/InnerProductApproximate.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/InnerProductApproximate.java
@@ -23,7 +23,6 @@ import
org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
import
org.apache.doris.nereids.trees.expressions.functions.ComputePrecisionForArrayItemAgg;
import
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
-import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.ArrayType;
import org.apache.doris.nereids.types.DoubleType;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Score.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Score.java
index e80e95a344f..b414d53135c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Score.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Score.java
@@ -64,4 +64,4 @@ public class Score extends ScalarFunction
public boolean isDeterministic() {
return false;
}
-}
\ No newline at end of file
+}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BuildIndexOp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BuildIndexOp.java
index 295093688ae..c55f1d9d893 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BuildIndexOp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BuildIndexOp.java
@@ -128,7 +128,7 @@ public class BuildIndexOp extends AlterTableOp {
}
}
if (indexDef.getIndexType() == IndexDef.IndexType.ANN
- && ((OlapTable) table).getKeysType() != KeysType.DUP_KEYS) {
+ && ((OlapTable) table).getKeysType() != KeysType.DUP_KEYS) {
throw new AnalysisException("ANN index can only be built on DUP
KEYS tables");
}
indexDef.validate();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateIndexOp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateIndexOp.java
index f0b4999b3cb..2da6d0570fd 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateIndexOp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateIndexOp.java
@@ -87,7 +87,7 @@ public class CreateIndexOp extends AlterTableOp {
tableName.analyze(ctx);
}
DatabaseIf<Table> db =
Env.getCurrentEnv().getCatalogMgr().getInternalCatalog()
- .getDb(tableName.getDb()).orElse(null);
+ .getDb(tableName.getDb()).orElse(null);
if (db == null) {
throw new AnalysisException("Database[" + tableName.getDb() + "]
is not exist");
}
@@ -100,7 +100,7 @@ public class CreateIndexOp extends AlterTableOp {
throw new AnalysisException("Only olap table support create
index");
}
if (indexDef.getIndexType() == IndexDef.IndexType.ANN
- && ((OlapTable) table).getKeysType() != KeysType.DUP_KEYS) {
+ && ((OlapTable) table).getKeysType() != KeysType.DUP_KEYS) {
throw new AnalysisException("ANN index can only be built on DUP
KEYS tables");
}
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 843df2f8e24..8f5c031089e 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
@@ -1567,7 +1567,7 @@ public class OlapScanNode extends ScanNode {
columnsDesc.add(tColumn);
}
}
-
+
// Add virtual column to ColumnsDesc so that backend could
// get correct table_schema.
for (SlotDescriptor slot : desc.getSlots()) {
@@ -1912,15 +1912,15 @@ public class OlapScanNode extends ScanNode {
computeNumNodes();
computeStatsForNereids();
// Update SlotDescriptor before construction of thrift message.
- int virtual_column_idx = 0;
+ int virtualColumnIdx = 0;
for (SlotDescriptor slot : desc.getSlots()) {
if (slot.getVirtualColumn() != null) {
- virtual_column_idx++;
+ virtualColumnIdx++;
Column column = new Column();
// Set the name of virtual column to be unique.
- column.setName("__DORIS_VIRTUAL_COL__" + virtual_column_idx);
+ column.setName("__DORIS_VIRTUAL_COL__" + virtualColumnIdx);
// Just make sure the unique id is not conflict with other
columns.
- column.setUniqueId(Integer.MAX_VALUE - virtual_column_idx);
+ column.setUniqueId(Integer.MAX_VALUE - virtualColumnIdx);
column.setType(slot.getType());
column.setIsAllowNull(slot.getIsNullable());
slot.setColumn(column);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]