1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

Merge pull request #1962 from tntnatbry/MCOL-4642

MCOL-4642 NOT IN subquery containing an isnull in the OR predicate crashes server.
This commit is contained in:
Gagan Goel
2021-06-04 07:18:46 -04:00
committed by GitHub
3 changed files with 97 additions and 27 deletions

View File

@ -0,0 +1,49 @@
#
# MCOL-4642 NOT IN subquery containing an isnull in the OR predicate crashes server
#
DROP DATABASE IF EXISTS mcol4642;
CREATE DATABASE mcol4642;
USE mcol4642;
CREATE TABLE cs1 (a int);
INSERT INTO cs1 VALUES (1), (2), (3), (4), (null);
CREATE TABLE cs2 (b int, c int);
INSERT INTO cs2 VALUES (1, 100), (1, 101), (2, 200),(3, 300), (3, 301), (3, 302), (null, null);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is not null OR b is null);
a
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is null OR b is not null);
a
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is not null OR b is null);
a
1
2
3
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is null OR b is not null);
a
1
2
3
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b=123 OR b is null);
a
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is null OR b=123);
a
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b=123 OR b is null);
a
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is null OR b=123);
a
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b=123 OR b is not null);
a
4
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is not null OR b=123);
a
4
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b=123 OR b is not null);
a
1
2
3
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is not null OR b=123);
a
1
2
3
DROP DATABASE mcol4642;

View File

@ -0,0 +1,35 @@
--source ../include/have_columnstore.inc
--source ctype_cmp_combinations.inc
--echo #
--echo # MCOL-4642 NOT IN subquery containing an isnull in the OR predicate crashes server
--echo #
--disable_warnings
DROP DATABASE IF EXISTS mcol4642;
--enable_warnings
CREATE DATABASE mcol4642;
USE mcol4642;
CREATE TABLE cs1 (a int);
INSERT INTO cs1 VALUES (1), (2), (3), (4), (null);
CREATE TABLE cs2 (b int, c int);
INSERT INTO cs2 VALUES (1, 100), (1, 101), (2, 200),(3, 300), (3, 301), (3, 302), (null, null);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is not null OR b is null);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is null OR b is not null);
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is not null OR b is null);
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is null OR b is not null);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b=123 OR b is null);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is null OR b=123);
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b=123 OR b is null);
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is null OR b=123);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b=123 OR b is not null);
SELECT * FROM cs1 WHERE a NOT IN (SELECT b FROM cs2 WHERE b is not null OR b=123);
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b=123 OR b is not null);
SELECT * FROM cs1 WHERE a IN (SELECT b FROM cs2 WHERE b is not null OR b=123);
DROP DATABASE mcol4642;