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

yangzhg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new fae5c62  Fix delete_sign predicate assigned to join node (#4770)
fae5c62 is described below

commit fae5c624eabe2c0f4a568d4d240e9a94ca3b1baf
Author: Zhengguo Yang <yangz...@gmail.com>
AuthorDate: Thu Oct 22 14:29:16 2020 +0800

    Fix delete_sign predicate assigned to join node (#4770)
---
 .../java/org/apache/doris/planner/OlapScanNode.java  | 11 +++++++++++
 .../org/apache/doris/planner/SingleNodePlanner.java  | 11 -----------
 .../org/apache/doris/analysis/SelectStmtTest.java    | 20 ++++++++++++++++----
 3 files changed, 27 insertions(+), 15 deletions(-)

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 36ad52c..e7e6213 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
@@ -23,6 +23,7 @@ import org.apache.doris.analysis.BinaryPredicate;
 import org.apache.doris.analysis.CastExpr;
 import org.apache.doris.analysis.Expr;
 import org.apache.doris.analysis.InPredicate;
+import org.apache.doris.analysis.IntLiteral;
 import org.apache.doris.analysis.PartitionNames;
 import org.apache.doris.analysis.SlotDescriptor;
 import org.apache.doris.analysis.SlotRef;
@@ -48,6 +49,7 @@ import org.apache.doris.common.Config;
 import org.apache.doris.common.ErrorCode;
 import org.apache.doris.common.ErrorReport;
 import org.apache.doris.common.UserException;
+import org.apache.doris.common.util.Util;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.SessionVariable;
 import org.apache.doris.service.FrontendOptions;
@@ -278,6 +280,15 @@ public class OlapScanNode extends ScanNode {
     @Override
     public void init(Analyzer analyzer) throws UserException {
         super.init(analyzer);
+        if (!Util.showHiddenColumns() && olapTable.hasDeleteSign()) {
+            SlotRef deleteSignSlot = new SlotRef(desc.getAliasAsName(), 
Column.DELETE_SIGN);
+            deleteSignSlot.analyze(analyzer);
+            deleteSignSlot.getDesc().setIsMaterialized(true);
+            Expr conjunct = new BinaryPredicate(BinaryPredicate.Operator.EQ, 
deleteSignSlot, new IntLiteral(0));
+            conjunct.analyze(analyzer);
+            conjuncts.add(conjunct);
+        }
+
         computePartitionInfo();
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
index a8452f3..8123c3f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
@@ -33,7 +33,6 @@ import org.apache.doris.analysis.GroupByClause;
 import org.apache.doris.analysis.GroupingInfo;
 import org.apache.doris.analysis.InPredicate;
 import org.apache.doris.analysis.InlineViewRef;
-import org.apache.doris.analysis.IntLiteral;
 import org.apache.doris.analysis.IsNullPredicate;
 import org.apache.doris.analysis.JoinOperator;
 import org.apache.doris.analysis.LiteralExpr;
@@ -54,13 +53,11 @@ import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.catalog.MysqlTable;
 import org.apache.doris.catalog.OdbcTable;
-import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.Reference;
 import org.apache.doris.common.UserException;
-import org.apache.doris.common.util.Util;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
@@ -1365,14 +1362,6 @@ public class SingleNodePlanner {
         switch (tblRef.getTable().getType()) {
             case OLAP:
                 OlapScanNode olapNode = new OlapScanNode(ctx_.getNextNodeId(), 
tblRef.getDesc(), "OlapScanNode");
-                if (!Util.showHiddenColumns() && ((OlapTable) 
tblRef.getTable()).hasDeleteSign()) {
-                    SlotRef deleteSignSlot = new 
SlotRef(tblRef.getAliasAsName(), Column.DELETE_SIGN);
-                    deleteSignSlot.analyze(analyzer);
-                    deleteSignSlot.getDesc().setIsMaterialized(true);
-                    Expr conjunct = new 
BinaryPredicate(BinaryPredicate.Operator.EQ, deleteSignSlot, new IntLiteral(0));
-                    conjunct.analyze(analyzer);
-                    analyzer.registerConjunct(conjunct, 
tblRef.getDesc().getId());
-                }
 
                 olapNode.setForceOpenPreAgg(tblRef.isForcePreAggOpened());
                 scanNode = olapNode;
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
index d2dc199..bb2e288 100755
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
@@ -476,13 +476,25 @@ public class SelectStmtTest {
     @Test
     public void testDeleteSign() throws Exception {
         String sql1 = "SELECT * FROM db1.table1  LEFT ANTI JOIN db1.table2 ON 
db1.table1.siteid = db1.table2.siteid;";
-        
Assert.assertTrue(dorisAssert.query(sql1).explainQuery().contains("`table1`.`__DORIS_DELETE_SIGN__`
 = 0"));
+        String explain = dorisAssert.query(sql1).explainQuery();
+        Assert.assertTrue(explain
+                .contains("PREDICATES: 
`default_cluster:db1.table1`.`__DORIS_DELETE_SIGN__` = 0"));
+        Assert.assertTrue(explain
+                .contains("PREDICATES: 
`default_cluster:db1.table2`.`__DORIS_DELETE_SIGN__` = 0"));
+        Assert.assertFalse(explain.contains("other predicates:"));
         String sql2 = "SELECT * FROM db1.table1 JOIN db1.table2 ON 
db1.table1.siteid = db1.table2.siteid;";
-        
Assert.assertTrue(dorisAssert.query(sql2).explainQuery().contains("`table1`.`__DORIS_DELETE_SIGN__`
 = 0"));
+        explain = dorisAssert.query(sql2).explainQuery();
+        Assert.assertTrue(explain
+                .contains("PREDICATES: 
`default_cluster:db1.table1`.`__DORIS_DELETE_SIGN__` = 0"));
+        Assert.assertTrue(explain
+                .contains("PREDICATES: 
`default_cluster:db1.table2`.`__DORIS_DELETE_SIGN__` = 0"));
+        Assert.assertFalse(explain.contains("other predicates:"));
         String sql3 = "SELECT * FROM db1.table1";
-        
Assert.assertTrue(dorisAssert.query(sql3).explainQuery().contains("`table1`.`__DORIS_DELETE_SIGN__`
 = 0"));
+        Assert.assertTrue(dorisAssert.query(sql3).explainQuery()
+                .contains("PREDICATES: 
`default_cluster:db1.table1`.`__DORIS_DELETE_SIGN__` = 0"));
         String sql4 = " SELECT * FROM db1.table1 table2";
-        
Assert.assertTrue(dorisAssert.query(sql4).explainQuery().contains("`table2`.`__DORIS_DELETE_SIGN__`
 = 0"));
+        Assert.assertTrue(dorisAssert.query(sql4).explainQuery()
+                .contains("PREDICATES: `table2`.`__DORIS_DELETE_SIGN__` = 0"));
         new MockUp<Util>() {
             @Mock
             public boolean showHiddenColumns() {


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

Reply via email to