From b01be6ae2dccd81fd81186d2ee9556c4037a283b Mon Sep 17 00:00:00 2001 From: mariadb-KristinaPavlova Date: Wed, 24 Sep 2025 10:58:17 +0300 Subject: [PATCH] fix: MCOL-5778 sum return null value due to nullif function --- dbcon/mysql/ha_mcs_execplan_helpers.cpp | 2 ++ .../columnstore/bugfixes/mcol-5778.result | 16 ++++++++++++++ .../columnstore/bugfixes/mcol-5778.test | 21 +++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 mysql-test/columnstore/bugfixes/mcol-5778.result create mode 100644 mysql-test/columnstore/bugfixes/mcol-5778.test diff --git a/dbcon/mysql/ha_mcs_execplan_helpers.cpp b/dbcon/mysql/ha_mcs_execplan_helpers.cpp index 66ffa35be..90331ab02 100644 --- a/dbcon/mysql/ha_mcs_execplan_helpers.cpp +++ b/dbcon/mysql/ha_mcs_execplan_helpers.cpp @@ -30,6 +30,8 @@ bool nonConstFunc(Item_func* ifp) { if (ifp->arguments()[i]->type() == Item::FUNC_ITEM && nonConstFunc(((Item_func*)ifp->arguments()[i]))) return true; + if (ifp->arguments()[i]->type() == Item::CACHE_ITEM) + return true; } return false; diff --git a/mysql-test/columnstore/bugfixes/mcol-5778.result b/mysql-test/columnstore/bugfixes/mcol-5778.result new file mode 100644 index 000000000..8f346f5e4 --- /dev/null +++ b/mysql-test/columnstore/bugfixes/mcol-5778.result @@ -0,0 +1,16 @@ +DROP DATABASE IF EXISTS mcol5778; +CREATE DATABASE mcol5778; +USE mcol5778; +create table test ( a double, b double ) engine=columnstore; +insert into test values (100,100); +select sum(a)/NULLIF(sum(b),0) from test; +sum(a)/NULLIF(sum(b),0) +1 +select sum(a)/NULLIF(b,0) from test; +sum(a)/NULLIF(b,0) +1 +select sum(a)/NULLIF(100,0) from test; +sum(a)/NULLIF(100,0) +1 +drop table test; +DROP DATABASE mcol5778; diff --git a/mysql-test/columnstore/bugfixes/mcol-5778.test b/mysql-test/columnstore/bugfixes/mcol-5778.test new file mode 100644 index 000000000..0c5003df9 --- /dev/null +++ b/mysql-test/columnstore/bugfixes/mcol-5778.test @@ -0,0 +1,21 @@ +-- source ../include/have_columnstore.inc + +--disable_warnings +DROP DATABASE IF EXISTS mcol5778; +--enable_warnings + +CREATE DATABASE mcol5778; + +USE mcol5778; + +create table test ( a double, b double ) engine=columnstore; +insert into test values (100,100); + +select sum(a)/NULLIF(sum(b),0) from test; + +select sum(a)/NULLIF(b,0) from test; + +select sum(a)/NULLIF(100,0) from test; + +drop table test; +DROP DATABASE mcol5778; \ No newline at end of file