This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit fe51e6ffdb99a08a5f70a72bfe4cc2a8cdc26f6c Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Sun Jun 25 22:34:43 2023 +0800 [fix](nereids)scan node's smap should use materiazlied slots and project list as left and right expr list (#21142) --- .../java/org/apache/doris/planner/ScanNode.java | 7 ++- .../test_inlineview_with_project.groovy | 61 ++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java index 7dc0a7b3de..84b95c5a06 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java @@ -533,8 +533,11 @@ public abstract class ScanNode extends PlanNode { // this happens if the olap table is in the most inner sub-query block in the cascades sub-queries // create a tmpSmap for the later setOutputSmap call ExprSubstitutionMap tmpSmap = new ExprSubstitutionMap( - Lists.newArrayList(outputTupleDesc.getSlots().stream().map(slot -> new SlotRef(slot)).collect( - Collectors.toList())), Lists.newArrayList(projectList)); + Lists.newArrayList(outputTupleDesc.getSlots().stream() + .filter(slot -> slot.isMaterialized()) + .map(slot -> new SlotRef(slot)) + .collect(Collectors.toList())), + Lists.newArrayList(projectList)); Set<SlotId> allOutputSlotIds = outputTupleDesc.getSlots().stream().map(slot -> slot.getId()) .collect(Collectors.toSet()); List<Expr> newRhs = Lists.newArrayList(); 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 6eb09cf047..a155514041 100644 --- a/regression-test/suites/correctness_p0/test_inlineview_with_project.groovy +++ b/regression-test/suites/correctness_p0/test_inlineview_with_project.groovy @@ -16,6 +16,7 @@ // under the License. suite("test_inlineview_with_project") { + sql "set enable_nereids_planner=false" sql """ drop table if exists cir_1756_t1; """ @@ -321,4 +322,64 @@ suite("test_inlineview_with_project") { sql """ drop table if exists ods_table4; """ + + sql """ + drop table if exists cir2824_table; + """ + + sql """ + CREATE TABLE `cir2824_table` ( + `id` BIGINT(20) NULL, + `create_user` BIGINT(20) NULL, + `event_content` TEXT NULL, + `dest_farm_id` BIGINT(20) NULL, + `weight` DOUBLE NULL + ) ENGINE=OLAP + UNIQUE KEY(`id`) + COMMENT 'OLAP' + DISTRIBUTED BY HASH(`id`) BUCKETS 48 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "in_memory" = "false", + "storage_format" = "V2", + "function_column.sequence_type" = "BIGINT", + "disable_auto_compaction" = "false" + ); + """ + + sql """ + drop view if exists cir2824_view; + """ + + sql """ + CREATE VIEW `cir2824_view` COMMENT 'VIEW' AS + select `ev`.`id` AS `id`, + CAST(`ev`.`create_user` AS BIGINT) AS `create_user`, + `ev`.`event_content` AS `event_content`, + `ev`.`dest_farm_id` AS `dest_farm_id` + FROM `cir2824_table` ev; + """ + + explain { + sql(""" + WITH cir2824_temp1 AS( SELECT + CASE + WHEN dest_farm_id IS NULL + AND get_json_string(t.event_content,'\$.destFarmId') != '' THEN + 0 + ELSE 1 + END AS is_trans + FROM cir2824_view t ) + SELECT 1 + FROM cir2824_temp1; + """) + } + + sql """ + drop view if exists cir2824_view; + """ + + sql """ + drop table if exists cir2824_table; + """ } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org