[Bug](planner) fix unassigned conjunct assigned on wrong node (#19672)
* fix unassigned conjunct assigned on wrong node
This commit is contained in:
@ -1421,10 +1421,10 @@ public class Analyzer {
|
||||
}
|
||||
if (e.isBoundByTupleIds(tupleIds)
|
||||
&& !e.isAuxExpr()
|
||||
&& !globalState.assignedConjuncts.contains(e.getId())
|
||||
&& (!globalState.assignedConjuncts.contains(e.getId()) || e.isConstant())
|
||||
&& ((inclOjConjuncts && !e.isConstant())
|
||||
|| (!globalState.ojClauseByConjunct.containsKey(e.getId())
|
||||
&& !globalState.sjClauseByConjunct.containsKey(e.getId())))) {
|
||||
|| (!globalState.ojClauseByConjunct.containsKey(e.getId())
|
||||
&& !globalState.sjClauseByConjunct.containsKey(e.getId())))) {
|
||||
result.add(e);
|
||||
}
|
||||
}
|
||||
@ -2451,7 +2451,14 @@ public class Analyzer {
|
||||
* Wrapper around getUnassignedConjuncts(List<TupleId> tupleIds).
|
||||
*/
|
||||
public List<Expr> getUnassignedConjuncts(PlanNode node) {
|
||||
return getUnassignedConjuncts(node.getTblRefIds());
|
||||
// constant conjuncts should be push down to all leaf node.
|
||||
// so we need remove constant conjuncts when expr is not a leaf node.
|
||||
List<Expr> unassigned = getUnassignedConjuncts(node.getTblRefIds());
|
||||
if (!node.getChildren().isEmpty()) {
|
||||
unassigned = unassigned.stream()
|
||||
.filter(e -> !e.isConstant()).collect(Collectors.toList());
|
||||
}
|
||||
return unassigned;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -2885,3 +2885,5 @@ false true true false false
|
||||
14
|
||||
15
|
||||
|
||||
-- !test --
|
||||
|
||||
|
||||
@ -1241,8 +1241,6 @@ suite("test_join", "query,p0") {
|
||||
qt_sql """select k1 from test right anti join baseall on false order by k1;"""
|
||||
|
||||
// test bucket shuffle join, github issue #6171
|
||||
sql"""create database if not exists test_issue_6171"""
|
||||
sql"""use test_issue_6171"""
|
||||
List table_list = ["T_DORIS_A", "T_DORIS_B", "T_DORIS_C", "T_DORIS_D", "T_DORIS_E"]
|
||||
List column_list = [",APPLY_CRCL bigint(19)",
|
||||
",FACTOR_FIN_VALUE decimal(19,2),PRJT_ID bigint(19)",
|
||||
@ -1261,5 +1259,17 @@ suite("test_join", "query,p0") {
|
||||
B.FACTOR_FIN_VALUE, D.limit_id desc;"""
|
||||
logger.info(ret.toString())
|
||||
assertTrue(ret.toString().contains(" | join op: INNER JOIN(BROADCAST)"))
|
||||
sql"""drop database test_issue_6171"""
|
||||
|
||||
sql """
|
||||
CREATE TABLE t0(c0 BOOLEAN NOT NULL) DISTRIBUTED BY HASH (c0) BUCKETS 8 PROPERTIES ("replication_num" = "1");
|
||||
"""
|
||||
sql """
|
||||
CREATE TABLE t1(c0 DATETIME NOT NULL) DISTRIBUTED BY HASH (c0) BUCKETS 9 PROPERTIES ("replication_num" = "1");
|
||||
"""
|
||||
sql """INSERT INTO t1 (c0) VALUES (DATE '1970-02-15'), (DATE '1970-11-05'), (DATE '1970-07-10');"""
|
||||
sql """INSERT INTO t1 (c0) VALUES (DATE '1970-04-04');"""
|
||||
sql """INSERT INTO t1 (c0) VALUES (DATE '1970-09-06');"""
|
||||
sql """INSERT INTO t0 (c0) VALUES (true);"""
|
||||
sql """INSERT INTO t0 (c0) VALUES (false);"""
|
||||
qt_test """SELECT t1.c0 FROM t1 RIGHT JOIN t0 ON true WHERE (abs(1)=0) GROUP BY t1.c0;"""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user