This is an automated email from the ASF dual-hosted git repository.
nextdreamblue 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 cf1c8e27ba4 [fix](planner) fix unrequired slot bug when join node
introduced by #25204 (#34923)
cf1c8e27ba4 is described below
commit cf1c8e27ba43f0f0dea1291a742023fef803eb79
Author: xueweizhang <[email protected]>
AuthorDate: Fri May 17 18:07:31 2024 +0800
[fix](planner) fix unrequired slot bug when join node introduced by #25204
(#34923)
before fix, join node will retain some slots, which are not materialized
and unrequired.
join node need remove these slots and not make them be output slots.
Signed-off-by: nextdreamblue <[email protected]>
---
.../org/apache/doris/planner/JoinNodeBase.java | 6 ++
.../test_inlineview_with_project.out | 9 ++-
.../test_inlineview_with_project.groovy | 84 ++++++++++++++++++++++
3 files changed, 96 insertions(+), 3 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java
index fbe12b3d6a0..91a3c26e770 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java
@@ -171,6 +171,9 @@ public abstract class JoinNodeBase extends PlanNode {
boolean needSetToNullable =
getChild(0) instanceof JoinNodeBase &&
analyzer.isOuterJoined(leftTupleDesc.getId());
for (SlotDescriptor leftSlotDesc : leftTupleDesc.getSlots()) {
+ if (!isMaterializedByChild(leftSlotDesc,
getChild(0).getOutputSmap())) {
+ continue;
+ }
SlotDescriptor outputSlotDesc =
analyzer.getDescTbl().copySlotDescriptor(outputTupleDesc, leftSlotDesc);
if (leftNullable) {
@@ -191,6 +194,9 @@ public abstract class JoinNodeBase extends PlanNode {
boolean needSetToNullable =
getChild(1) instanceof JoinNodeBase &&
analyzer.isOuterJoined(rightTupleDesc.getId());
for (SlotDescriptor rightSlotDesc : rightTupleDesc.getSlots())
{
+ if (!isMaterializedByChild(rightSlotDesc,
getChild(1).getOutputSmap())) {
+ continue;
+ }
SlotDescriptor outputSlotDesc =
analyzer.getDescTbl().copySlotDescriptor(outputTupleDesc, rightSlotDesc);
if (rightNullable) {
diff --git
a/regression-test/data/correctness_p0/test_inlineview_with_project.out
b/regression-test/data/correctness_p0/test_inlineview_with_project.out
index e6ed3ee5706..1f85a6dff31 100644
--- a/regression-test/data/correctness_p0/test_inlineview_with_project.out
+++ b/regression-test/data/correctness_p0/test_inlineview_with_project.out
@@ -14,9 +14,9 @@
3
-- !select5 --
-1
-2
-3
+1.0
+2.0
+3.0
-- !select5 --
1
@@ -29,3 +29,6 @@
-- !select5 --
3
+-- !select6 --
+2020-01-01
+
diff --git
a/regression-test/suites/correctness_p0/test_inlineview_with_project.groovy
b/regression-test/suites/correctness_p0/test_inlineview_with_project.groovy
index f13c45a5328..e769aa8c8ea 100644
--- a/regression-test/suites/correctness_p0/test_inlineview_with_project.groovy
+++ b/regression-test/suites/correctness_p0/test_inlineview_with_project.groovy
@@ -665,4 +665,88 @@ suite("test_inlineview_with_project") {
sql """DROP TABLE IF EXISTS `dr_user_test_t1`;"""
sql """DROP TABLE IF EXISTS `dr_user_test_t2`;"""
+
+ sql """
+ drop table if exists dws_mf_wms_join_t1;
+ """
+
+ sql """
+ drop table if exists dws_mf_wms_join_t2;
+ """
+
+
+ sql """CREATE TABLE `dws_mf_wms_join_t1` (
+ `ddate` DATE NULL COMMENT '日期字段',
+ `game_id` VARCHAR(65533) NULL,
+ `main_currency_stock` BIGINT NULL
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`ddate`)
+ DISTRIBUTED BY HASH(`ddate`) BUCKETS 10
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );"""
+
+ sql """CREATE TABLE `dws_mf_wms_join_t2` (
+ `game_id` VARCHAR(65533) NULL,
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`game_id`)
+ DISTRIBUTED BY HASH(`game_id`) BUCKETS 10
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );"""
+
+ sql """insert into dws_mf_wms_join_t1 values('2020-01-01','12345',100);"""
+ sql """insert into dws_mf_wms_join_t2 values('12345');"""
+
+ qt_select6 """SELECT
+ a1.ddate
+ FROM
+ (
+ SELECT
+ aaa.ddate
+ FROM
+ (
+ SELECT
+ aa.ddate,
+ CONCAT('main', aa.main_currency_stock) AS arr,
+ ROW_NUMBER() OVER (
+ PARTITION BY aa.ddate
+ ) AS rn
+ FROM
+ (
+ SELECT
+ ddate,
+ main_currency_stock,
+ game_id
+ FROM
+ dws_mf_wms_join_t1 a
+ ) aa
+ LEFT JOIN (
+ SELECT
+ game_id
+ FROM
+ dws_mf_wms_join_t2
+ ) b ON aa.game_id = b.game_id
+ ) aaa
+ CROSS JOIN (
+ select
+ 1 as newarr
+ ) b
+ WHERE
+ rn = 1
+ ) a1
+ GROUP BY
+ GROUPING SETS (
+ (
+ a1.ddate
+ )
+ );"""
+
+ sql """
+ drop table if exists dws_mf_wms_join_join_t1;
+ """
+
+ sql """
+ drop table if exists dws_mf_wms_join_join_t2;
+ """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]