This is an automated email from the ASF dual-hosted git repository.
eldenmoon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 1b3d1678c23 [Refactor](ShortCircuit) Conjuncts outof key columns's
order should be handled (#37900)
1b3d1678c23 is described below
commit 1b3d1678c23af03fcdd5ee78614a4bffbeec2dad
Author: lihangyu <[email protected]>
AuthorDate: Thu Jul 25 15:14:10 2024 +0800
[Refactor](ShortCircuit) Conjuncts outof key columns's order should be
handled (#37900)
…e handled
---
.../main/java/org/apache/doris/qe/PointQueryExecutor.java | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExecutor.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExecutor.java
index 2ce047c9ddc..5aa07246570 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExecutor.java
@@ -47,6 +47,7 @@ import org.apache.doris.thrift.TStatusCode;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.thrift.TDeserializer;
@@ -57,6 +58,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -177,16 +179,18 @@ public class PointQueryExecutor implements CoordInterface
{
void addKeyTuples(
InternalService.PTabletKeyLookupRequest.Builder requestBuilder) {
// TODO handle IN predicates
+ Map<String, Expr> columnExpr = Maps.newHashMap();
KeyTuple.Builder kBuilder = KeyTuple.newBuilder();
for (Expr expr : shortCircuitQueryContext.scanNode.getConjuncts()) {
BinaryPredicate predicate = (BinaryPredicate) expr;
Expr left = predicate.getChild(0);
Expr right = predicate.getChild(1);
- // ignore delete sign conjuncts only collect key conjuncts
- if (left instanceof SlotRef && ((SlotRef)
left).getColumnName().equalsIgnoreCase(Column.DELETE_SIGN)) {
- continue;
- }
- kBuilder.addKeyColumnRep(right.getStringValue());
+ SlotRef columnSlot = left.unwrapSlotRef();
+ columnExpr.put(columnSlot.getColumnName(), right);
+ }
+ // add key tuple in keys order
+ for (Column column :
shortCircuitQueryContext.scanNode.getOlapTable().getBaseSchemaKeyColumns()) {
+
kBuilder.addKeyColumnRep(columnExpr.get(column.getName()).getStringValue());
}
requestBuilder.addKeyTuples(kBuilder);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]