diff options
author | unknown <tnurnberg@white.intern.koehntopp.de> | 2008-03-27 03:16:35 +0100 |
---|---|---|
committer | unknown <tnurnberg@white.intern.koehntopp.de> | 2008-03-27 03:16:35 +0100 |
commit | fd1616311d7fa2b64a3911ae8e79cd05fa2c8782 (patch) | |
tree | 01e325edb526b25c63501addcdc0821b87a28d48 /mysql-test | |
parent | f20fe94b55727fbc69b1cb86af5dc96f216bdd87 (diff) | |
parent | ec62aba3f054b6fd3eabe774fac0da825a8baf33 (diff) | |
download | mariadb-git-fd1616311d7fa2b64a3911ae8e79cd05fa2c8782.tar.gz |
Merge mysql.com:/misc/mysql/34731_/50-34731
into mysql.com:/misc/mysql/34731/50-34731
sql/opt_range.cc:
Auto merged
mysql-test/r/range.result:
manual merge
mysql-test/t/range.test:
manual merge
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/range.result | 39 | ||||
-rw-r--r-- | mysql-test/t/range.test | 46 |
2 files changed, 85 insertions, 0 deletions
diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index 9b1da4ffc48..0c4c332395a 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -1166,3 +1166,42 @@ EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B'; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range a a 35 NULL 3 Using where; Using index DROP TABLE t1; +CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1)); +INSERT INTO t1 VALUES (127),(254),(0),(1),(255); +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256; +COUNT(*) +5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256.0; +COUNT(*) +5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255; +COUNT(*) +4 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1; +COUNT(*) +0 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1; +COUNT(*) +5 +DROP TABLE t1; +CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1)); +INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127); +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128; +COUNT(*) +5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128.0; +COUNT(*) +5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127; +COUNT(*) +4 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129; +COUNT(*) +5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129.0; +COUNT(*) +5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128; +COUNT(*) +4 +DROP TABLE t1; diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 1352b366508..cdbedb1f848 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -972,4 +972,50 @@ EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B'; DROP TABLE t1; +# +# Bug #34731: highest possible value for INT erroneously filtered by WHERE +# + +# test UNSIGNED. only occurs when indexed. +CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1)); + +INSERT INTO t1 VALUES (127),(254),(0),(1),(255); + +# test upper bound +# count 5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256; +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256.0; +# count 4 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255; + +# show we don't fiddle with lower bound on UNSIGNED +# count 0 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1; +# count 5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1; + +DROP TABLE t1; + + +# test signed. only occurs when index. +CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1)); + +INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127); + +# test upper bound +# count 5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128; +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128.0; +# count 4 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127; + +# test lower bound +# count 5 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129; +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129.0; +# count 4 +SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128; + +DROP TABLE t1; + # End of 5.0 tests |