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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]