[SQLancer] Unexpected abort in NoREC
The unoptimized query SELECT COUNT(*) FROM (SELECT (NOT (NOT TRUE)) AS flag FROM t0, t71) AS res WHERE flag=TRUE;
works fine and computes 55 as result. However, the optimized query SELECT t0.c0, t71.c0, t71.c1 FROM t0, t71 WHERE (NOT (NOT TRUE));
causes the system to crash. Both queries use the same condition (NOT (NOT TRUE))
and should fetch the same number of rows.
Database state:
CREATE DATABASE database0;
USE database0;
CREATE TABLE t71 (c0 VARCHAR(313) PRIMARY KEY, c1 DATE NOT NULL UNIQUE);
CREATE TABLE t0 (c0 DOUBLE);
INSERT INTO t71 VALUES ("hG2R", d'1969-12-29');
INSERT INTO t0 VALUES (0.8941507497701235), (0.30581757998664527);
INSERT INTO t0 VALUES (0.5886497897217331);
INSERT INTO t0 VALUES (-2.46408137E8);
INSERT INTO t71 VALUES ("0.8941507497701235", d'1969-12-29');
INSERT INTO t0 VALUES (0.29749907005458565);
INSERT INTO t0 VALUES (0.7805349069419613), (NULL);
INSERT INTO t0 VALUES (0.3509667471169733);
INSERT INTO t71 VALUES ("Nah~Nt", d'1969-12-14');
INSERT INTO t0 VALUES (0.2408929290102998);
INSERT INTO t71 VALUES (DEFAULT, d'1969-12-14'), (DEFAULT, d'1970-01-19');
INSERT INTO t0 VALUES (0.7636040999764753);
INSERT INTO t0 VALUES (0.7232672746677322);
Random condition: (NOT (NOT TRUE))
unoptimizedQueryString: SELECT COUNT(*) FROM (SELECT (NOT (NOT TRUE)) AS flag FROM t0, t71) AS res WHERE flag=TRUE;
optimizedQueryString: SELECT t0.c0, t71.c0, t71.c1 FROM t0, t71 WHERE (NOT (NOT TRUE));
Command to reprodruce:
echo 'CREATE DATABASE database0; USE database0; CREATE TABLE t71 (c0 VARCHAR(313) PRIMARY KEY, c1 DATE NOT NULL UNIQUE); CREATE TABLE t0 (c0 DOUBLE); INSERT INTO t71 VALUES ("hG2R", d'"'"'1969-12-29'"'"'); INSERT INTO t0 VALUES (0.8941507497701235), (0.30581757998664527); INSERT INTO t0 VALUES (0.5886497897217331); INSERT INTO t0 VALUES (-2.46408137E8); INSERT INTO t71 VALUES ("0.8941507497701235", d'"'"'1969-12-29'"'"'); INSERT INTO t0 VALUES (0.29749907005458565); INSERT INTO t0 VALUES (0.7805349069419613), (NULL); INSERT INTO t0 VALUES (0.3509667471169733); INSERT INTO t71 VALUES ("Nah~Nt", d'"'"'1969-12-14'"'"'); INSERT INTO t0 VALUES (0.2408929290102998); INSERT INTO t71 VALUES (DEFAULT, d'"'"'1969-12-14'"'"'), (DEFAULT, d'"'"'1970-01-19'"'"'); INSERT INTO t0 VALUES (0.7636040999764753); INSERT INTO t0 VALUES (0.7232672746677322); SELECT COUNT(*) FROM (SELECT (NOT (NOT TRUE)) AS flag FROM t0, t71) AS res WHERE flag=TRUE; SELECT t0.c0, t71.c0, t71.c1 FROM t0, t71 WHERE (NOT (NOT TRUE));' | build/debug_shared/bin/shell --plan-enumerator PEall
Edited by Tobias Kopp