This is an automated email from the ASF dual-hosted git repository. cambyzju 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 09ba4ac8ff5 [fix](colocate) fix colocate join while multi tables (#37729) 09ba4ac8ff5 is described below commit 09ba4ac8ff54da4150c762e3fcf2292dad991da2 Author: camby <camby...@tencent.com> AuthorDate: Mon Jul 15 15:01:04 2024 +0800 [fix](colocate) fix colocate join while multi tables (#37729) --- .../org/apache/doris/nereids/util/JoinUtils.java | 9 +++---- .../test_colocate_join_of_column_order.groovy | 29 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java index 5062bedc67c..770905bf199 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java @@ -325,12 +325,9 @@ public class JoinUtils { SlotReference leftSlot = (SlotReference) leftChild; SlotReference rightSlot = (SlotReference) rightChild; - Integer leftIndex = null; - Integer rightIndex = null; - if (leftSlot.getTable().isPresent() && leftSlot.getTable().get().getId() == leftHashSpec.getTableId()) { - leftIndex = leftHashSpec.getExprIdToEquivalenceSet().get(leftSlot.getExprId()); - rightIndex = rightHashSpec.getExprIdToEquivalenceSet().get(rightSlot.getExprId()); - } else { + Integer leftIndex = leftHashSpec.getExprIdToEquivalenceSet().get(leftSlot.getExprId()); + Integer rightIndex = rightHashSpec.getExprIdToEquivalenceSet().get(rightSlot.getExprId()); + if (leftIndex == null) { leftIndex = rightHashSpec.getExprIdToEquivalenceSet().get(leftSlot.getExprId()); rightIndex = leftHashSpec.getExprIdToEquivalenceSet().get(rightSlot.getExprId()); } diff --git a/regression-test/suites/correctness_p0/test_colocate_join_of_column_order.groovy b/regression-test/suites/correctness_p0/test_colocate_join_of_column_order.groovy index 663b7da02d6..efef9969506 100644 --- a/regression-test/suites/correctness_p0/test_colocate_join_of_column_order.groovy +++ b/regression-test/suites/correctness_p0/test_colocate_join_of_column_order.groovy @@ -79,4 +79,33 @@ suite("test_colocate_join_of_column_order") { sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_t1`; """ sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_t2`; """ + + // multi tables + sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_ta`; """ + sql """ + CREATE TABLE IF NOT EXISTS `test_colocate_join_of_column_order_ta` ( `c1` bigint NULL, `c2` bigint NULL) + DISTRIBUTED BY HASH(c1) PROPERTIES ( "replication_num" = "1", "colocate_with" = "group_column_order3"); + """ + sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_tb`; """ + sql """ + CREATE TABLE IF NOT EXISTS `test_colocate_join_of_column_order_tb` ( `c1` bigint NULL, `c2` bigint NULL) + DISTRIBUTED BY HASH(c1) PROPERTIES ( "replication_num" = "1", "colocate_with" = "group_column_order3"); + """ + sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_tc`; """ + sql """ + CREATE TABLE IF NOT EXISTS `test_colocate_join_of_column_order_tc` ( `c1` bigint NULL, `c2` bigint NULL) + DISTRIBUTED BY HASH(c1) PROPERTIES ( "replication_num" = "1", "colocate_with" = "group_column_order3"); + """ + sql """insert into test_colocate_join_of_column_order_ta values(1,1);""" + sql """insert into test_colocate_join_of_column_order_tb values(1,1);""" + sql """insert into test_colocate_join_of_column_order_tc values(1,1);""" + + explain { + sql("""select /*+ set_var(disable_join_reorder=true) */ * from test_colocate_join_of_column_order_ta join [shuffle] (select cast((c2 + 1) as bigint) c2 from test_colocate_join_of_column_order_tb) test_colocate_join_of_column_order_tb on test_colocate_join_of_column_order_ta.c1 = test_colocate_join_of_column_order_tb.c2 join [shuffle] test_colocate_join_of_column_order_tc on test_colocate_join_of_column_order_tb.c2 = test_colocate_join_of_column_order_tc.c1;"""); + contains "COLOCATE" + } + + sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_ta`; """ + sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_tb`; """ + sql """ DROP TABLE IF EXISTS `test_colocate_join_of_column_order_tc`; """ } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org