diff --git a/dbcon/mysql/ha_mcs_execplan.cpp b/dbcon/mysql/ha_mcs_execplan.cpp index 3ad93a9e8..8bfd72dba 100755 --- a/dbcon/mysql/ha_mcs_execplan.cpp +++ b/dbcon/mysql/ha_mcs_execplan.cpp @@ -4427,7 +4427,7 @@ FunctionColumn* buildCaseFunction(Item_func* item, gp_walk_info& gwi, bool& nonS gwi.inCaseStmt = true; sptp.reset(buildParseTree((Item_func*)(item->arguments()[i]), gwi, nonSupport)); gwi.inCaseStmt = false; - if (!gwi.ptWorkStack.empty() && *gwi.ptWorkStack.top()->data() == sptp->data()) + if (!gwi.ptWorkStack.empty() && gwi.ptWorkStack.top()->data() == sptp->data()) { gwi.ptWorkStack.pop(); } diff --git a/mysql-test/columnstore/bugfixes/mcol-4786.result b/mysql-test/columnstore/bugfixes/mcol-4786.result new file mode 100644 index 000000000..1b374402a --- /dev/null +++ b/mysql-test/columnstore/bugfixes/mcol-4786.result @@ -0,0 +1,11 @@ +DROP DATABASE IF EXISTS mcol4786; +CREATE DATABASE mcol4786; +USE mcol4786; +CREATE TABLE `bd_dwhs_private_ex_pub_services_ins` (`age` int(11) DEFAULT NULL) ENGINE=Columnstore DEFAULT CHARSET=latin1; +insert into bd_dwhs_private_ex_pub_services_ins select * from seq_1_to_120; +CREATE OR REPLACE VIEW `dwhs_ins_call_detail_vw` AS select age, case when `bd_dwhs_private_ex_pub_services_ins`.`age` between 16 and 24 then '16-24' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 25 and 34 then '25-34' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 35 and 44 then '35-44' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 45 and 54 then '45-54' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 55 and 64 then '55-64' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 65 and 74 then '65-74' when `bd_dwhs_private_ex_pub_services_ins`.`age` >= 75 then '75+' end AS `age_group` from `bd_dwhs_private_ex_pub_services_ins`; +select age_group, age, count(*) from dwhs_ins_call_detail_vw where age between 16 and 24 and age_group IN ('35-44') group by age_group,age order by age_group, age; +age_group age count(*) +DROP VIEW `dwhs_ins_call_detail_vw`; +DROP TABLE `bd_dwhs_private_ex_pub_services_ins`; +DROP DATABASE mcol4786; diff --git a/mysql-test/columnstore/bugfixes/mcol-4786.test b/mysql-test/columnstore/bugfixes/mcol-4786.test new file mode 100644 index 000000000..22bb857fc --- /dev/null +++ b/mysql-test/columnstore/bugfixes/mcol-4786.test @@ -0,0 +1,22 @@ + +-- source ../include/have_columnstore.inc + +--disable_warnings +DROP DATABASE IF EXISTS mcol4786; +--enable_warnings + +CREATE DATABASE mcol4786; + +USE mcol4786; + +CREATE TABLE `bd_dwhs_private_ex_pub_services_ins` (`age` int(11) DEFAULT NULL) ENGINE=Columnstore DEFAULT CHARSET=latin1; + +insert into bd_dwhs_private_ex_pub_services_ins select * from seq_1_to_120; + +CREATE OR REPLACE VIEW `dwhs_ins_call_detail_vw` AS select age, case when `bd_dwhs_private_ex_pub_services_ins`.`age` between 16 and 24 then '16-24' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 25 and 34 then '25-34' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 35 and 44 then '35-44' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 45 and 54 then '45-54' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 55 and 64 then '55-64' when `bd_dwhs_private_ex_pub_services_ins`.`age` between 65 and 74 then '65-74' when `bd_dwhs_private_ex_pub_services_ins`.`age` >= 75 then '75+' end AS `age_group` from `bd_dwhs_private_ex_pub_services_ins`; + +select age_group, age, count(*) from dwhs_ins_call_detail_vw where age between 16 and 24 and age_group IN ('35-44') group by age_group,age order by age_group, age; + +DROP VIEW `dwhs_ins_call_detail_vw`; +DROP TABLE `bd_dwhs_private_ex_pub_services_ins`; +DROP DATABASE mcol4786;