mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Bug#47762: Incorrect result from MIN() when WHERE tests NOT
NULL column for NULL The optimization to read MIN() and MAX() values from an index did not properly handle comparisons with NULL values. Fixed by giving up the particular optimization step if there are non-NULL safe comparisons with NULL values, as the result is NULL anyway. Also, Oracle copyright notice was added to all files.
This commit is contained in:
parent
7dca134c47
commit
7cb796717e
5 changed files with 369 additions and 34 deletions
49
mysql-test/include/min_null_cond.inc
Normal file
49
mysql-test/include/min_null_cond.inc
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a = NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a <> NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a > NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a < NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a <=> NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a <=> NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
||||
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND 10;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a BETWEEN NULL AND NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a BETWEEN 10 AND NULL;
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
||||
SELECT MIN( a ) FROM t1 WHERE a = (SELECT a FROM t1 WHERE a < 0);
|
||||
|
||||
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
|
||||
EXPLAIN
|
||||
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
||||
SELECT MIN( a ) FROM t1 WHERE a IS NULL;
|
||||
Loading…
Add table
Add a link
Reference in a new issue