mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
fc42cbaca3
tmptable needed The function DEFAULT() works by modifying the the data buffer pointers (often referred to as 'record' or 'table record') of its argument. This modification is done during name resolution (fix_fields().) Unfortunately, the same modification is done when creating a temporary table, because default values need to propagate to the new table. Fixed by skipping the pointer modification for fields that are arguments to the DEFAULT function.
152 lines
4.5 KiB
Text
152 lines
4.5 KiB
Text
# General purpose bug fix tests go here : subselect.test too large
|
|
|
|
|
|
--echo #
|
|
--echo # Bug #46791: Assertion failed:(table->key_read==0),function unknown
|
|
--echo # function,file sql_base.cc
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
|
INSERT INTO t1 VALUES (1,1),(2,2);
|
|
CREATE TABLE t2 LIKE t1;
|
|
INSERT INTO t2 VALUES (1,1),(2,2);
|
|
CREATE TABLE t3 LIKE t1;
|
|
|
|
--echo # should have 1 impossible where and 2 dependent subqueries
|
|
EXPLAIN
|
|
SELECT 1 FROM t1
|
|
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
|
ORDER BY count(*);
|
|
|
|
--echo # should not crash the next statement
|
|
SELECT 1 FROM t1
|
|
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
|
ORDER BY count(*);
|
|
|
|
--echo # should not crash: the crash is caused by the previous statement
|
|
SELECT 1;
|
|
|
|
DROP TABLE t1,t2,t3;
|
|
|
|
--echo #
|
|
--echo # Bug #47106: Crash / segfault on adding EXPLAIN to a non-crashing
|
|
--echo # query
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (
|
|
a INT,
|
|
b INT,
|
|
PRIMARY KEY (a),
|
|
KEY b (b)
|
|
);
|
|
INSERT INTO t1 VALUES (1, 1), (2, 1);
|
|
|
|
CREATE TABLE t2 LIKE t1;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
|
|
CREATE TABLE t3 LIKE t1;
|
|
INSERT INTO t3 SELECT * FROM t1;
|
|
|
|
--echo # Should not crash.
|
|
--echo # Should have 1 impossible where and 2 dependent subqs.
|
|
EXPLAIN
|
|
SELECT
|
|
(SELECT 1 FROM t1,t2 WHERE t2.b > t3.b)
|
|
FROM t3 WHERE 1 = 0 GROUP BY 1;
|
|
|
|
--echo # should return 0 rows
|
|
SELECT
|
|
(SELECT 1 FROM t1,t2 WHERE t2.b > t3.b)
|
|
FROM t3 WHERE 1 = 0 GROUP BY 1;
|
|
|
|
DROP TABLE t1,t2,t3;
|
|
|
|
--echo End of 5.0 tests.
|
|
|
|
--echo #
|
|
--echo # Bug#54568: create view cause Assertion failed: 0,
|
|
--echo # file .\item_subselect.cc, line 836
|
|
--echo #
|
|
EXPLAIN SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
|
|
DESCRIBE SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
|
|
--echo # None of the below should crash
|
|
CREATE VIEW v1 AS SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
|
|
CREATE VIEW v2 AS SELECT 1 LIKE '%' ESCAPE ( 1 IN ( SELECT 1 ) );
|
|
DROP VIEW v1, v2;
|
|
|
|
--echo #
|
|
--echo # Bug#51070: Query with a NOT IN subquery predicate returns a wrong
|
|
--echo # result set
|
|
--echo #
|
|
CREATE TABLE t1 ( a INT, b INT );
|
|
INSERT INTO t1 VALUES ( 1, NULL ), ( 2, NULL );
|
|
|
|
CREATE TABLE t2 ( c INT, d INT );
|
|
INSERT INTO t2 VALUES ( NULL, 3 ), ( NULL, 4 );
|
|
|
|
CREATE TABLE t3 ( e INT, f INT );
|
|
INSERT INTO t3 VALUES ( NULL, NULL ), ( NULL, NULL );
|
|
|
|
CREATE TABLE t4 ( a INT );
|
|
INSERT INTO t4 VALUES (1), (2), (3);
|
|
|
|
CREATE TABLE t5 ( a INT );
|
|
INSERT INTO t5 VALUES (NULL), (2);
|
|
|
|
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
|
EXPLAIN
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
|
|
|
EXPLAIN
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS NULL;
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS NULL;
|
|
SELECT * FROM t1 WHERE ( a, b ) IN ( SELECT c, d FROM t2 ) IS NULL;
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS UNKNOWN;
|
|
SELECT * FROM t1 WHERE (( a, b ) NOT IN ( SELECT c, d FROM t2 )) IS UNKNOWN;
|
|
|
|
SELECT * FROM t1 WHERE 1 = 1 AND ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
|
|
|
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
|
EXPLAIN
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT e, f FROM t3 );
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT e, f FROM t3 );
|
|
|
|
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
|
EXPLAIN
|
|
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT a, b FROM t1 );
|
|
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT a, b FROM t1 );
|
|
|
|
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
|
EXPLAIN
|
|
SELECT * FROM t3 WHERE ( e, f ) NOT IN ( SELECT c, d FROM t2 );
|
|
SELECT * FROM t3 WHERE ( e, f ) NOT IN ( SELECT c, d FROM t2 );
|
|
|
|
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
|
EXPLAIN
|
|
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT e, f FROM t3 );
|
|
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT e, f FROM t3 );
|
|
|
|
SELECT * FROM t1 WHERE ( a, b ) NOT IN
|
|
( SELECT c, d FROM t2 WHERE c = 1 AND c <> 1 );
|
|
|
|
SELECT * FROM t1 WHERE b NOT IN ( SELECT c FROM t2 WHERE c = 1 );
|
|
|
|
SELECT * FROM t1 WHERE NULL NOT IN ( SELECT c FROM t2 WHERE c = 1 AND c <> 1 );
|
|
|
|
DROP TABLE t1, t2, t3, t4, t5;
|
|
|
|
--echo #
|
|
--echo # Bug#58207: invalid memory reads when using default column value and
|
|
--echo # tmptable needed
|
|
--echo #
|
|
CREATE TABLE t(a VARCHAR(245) DEFAULT
|
|
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
INSERT INTO t VALUES (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),('');
|
|
SELECT * FROM (SELECT default(a) FROM t GROUP BY a) d;
|
|
DROP TABLE t;
|
|
|
|
|
|
--echo #
|
|
--echo # End of 5.1 tests.
|
|
--echo #
|