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]

Reply via email to