You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
fix(dbcon): MCOL-4756: having not() provokes an ERROR 2013
The `NOT()` function in the HAVING clause was handled incorrectly, which caused the server to crash.
This commit is contained in:
committed by
Leonid Fedorov
parent
13b23e8510
commit
221ccfd5b6
@ -2247,7 +2247,8 @@ bool buildPredicateItem(Item_func* ifp, gp_walk_info* gwip)
|
|||||||
|
|
||||||
idbassert(ifp->argument_count() == 1);
|
idbassert(ifp->argument_count() == 1);
|
||||||
ParseTree* ptp = 0;
|
ParseTree* ptp = 0;
|
||||||
if (((Item_func*)(ifp->arguments()[0]))->functype() == Item_func::EQUAL_FUNC)
|
Item_func* argfp = dynamic_cast<Item_func*>(ifp->arguments()[0]);
|
||||||
|
if (argfp && argfp->functype() == Item_func::EQUAL_FUNC)
|
||||||
{
|
{
|
||||||
// negate it in place
|
// negate it in place
|
||||||
// Note that an EQUAL_FUNC ( a <=> b) was converted to
|
// Note that an EQUAL_FUNC ( a <=> b) was converted to
|
||||||
|
9
mysql-test/columnstore/bugfixes/mcol-4756.result
Normal file
9
mysql-test/columnstore/bugfixes/mcol-4756.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
DROP DATABASE IF EXISTS `mcol_4756`;
|
||||||
|
CREATE DATABASE `mcol_4756`;
|
||||||
|
USE `mcol_4756`;
|
||||||
|
CREATE TABLE `manu_test` (id tinyint unsigned NOT NULL, test tinyint default null) ENGINE=Columnstore DEFAULT CHARSET=utf8;
|
||||||
|
INSERT INTO `manu_test` (`id`, `test`) VALUES (1,0), (2,1), (3,null);
|
||||||
|
SELECT id, test FROM manu_test HAVING NOT(test);
|
||||||
|
id test
|
||||||
|
1 0
|
||||||
|
DROP DATABASE `mcol_4756`;
|
15
mysql-test/columnstore/bugfixes/mcol-4756.test
Normal file
15
mysql-test/columnstore/bugfixes/mcol-4756.test
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
--source ../include/have_columnstore.inc
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS `mcol_4756`;
|
||||||
|
--enable_warnings
|
||||||
|
CREATE DATABASE `mcol_4756`;
|
||||||
|
USE `mcol_4756`;
|
||||||
|
|
||||||
|
CREATE TABLE `manu_test` (id tinyint unsigned NOT NULL, test tinyint default null) ENGINE=Columnstore DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
INSERT INTO `manu_test` (`id`, `test`) VALUES (1,0), (2,1), (3,null);
|
||||||
|
|
||||||
|
SELECT id, test FROM manu_test HAVING NOT(test);
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
DROP DATABASE `mcol_4756`;
|
Reference in New Issue
Block a user