diff options
author | unknown <monty@donna.mysql.fi> | 2001-04-10 11:32:28 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.fi> | 2001-04-10 11:32:28 +0300 |
commit | 92de72694b78d41980c48b8a6fedf10f153bb56e (patch) | |
tree | 95bbcccc6e046548f22eead9222fdd1cce980d1e /mysql-test/t/null_key.test | |
parent | c7105d8008aa42e90e830ede25e7cbf0c22893c0 (diff) | |
download | mariadb-git-92de72694b78d41980c48b8a6fedf10f153bb56e.tar.gz |
Fixed bug with UPDATE/DELETE on UNIQUE key which could be NULL
Docs/manual.texi:
Updated replication section
mysql-test/r/null_key.result:
Added test UPDATE/DELETE with IS NULL on unique key
mysql-test/t/null_key.test:
Added test UPDATE/DELETE with IS NULL on unique key
mysys/Makefile.am:
Removed -f from $CP as this is not portable
Fixed rule for testhash
sql/field.cc:
Safety fix
sql/opt_range.cc:
Fixed bug with UPDATE/DELETE on UNIQUE key which could be NULL
sql/opt_range.h:
Fixed bug with UPDATE/DELETE on UNIQUE key which could be NULL
Diffstat (limited to 'mysql-test/t/null_key.test')
-rw-r--r-- | mysql-test/t/null_key.test | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mysql-test/t/null_key.test b/mysql-test/t/null_key.test index 759f4a432da..e5d8fc59e4f 100644 --- a/mysql-test/t/null_key.test +++ b/mysql-test/t/null_key.test @@ -45,3 +45,49 @@ select * from t1 where (a is null or a = 7) and b=7 and c=0; select * from t1 where a is null and b=9 or a is null and b=7 limit 3; select * from t1 where b like "6%"; drop table t1; + + +# +# The following failed for Matt Loschert +# + +DROP TABLE IF EXISTS t1,t2; +CREATE TABLE t1 ( + id int(10) unsigned NOT NULL auto_increment, + uniq_id int(10) unsigned default NULL, + PRIMARY KEY (id), + UNIQUE KEY idx1 (uniq_id) +) TYPE=MyISAM; + +CREATE TABLE t2 ( + id int(10) unsigned NOT NULL auto_increment, + uniq_id int(10) unsigned default NULL, + PRIMARY KEY (id) +) TYPE=MyISAM; + +INSERT INTO t1 VALUES (1,NULL),(2,NULL),(3,1),(4,2),(5,NULL),(6,NULL),(7,3),(8,4),(9,NULL),(10,NULL); +INSERT INTO t2 VALUES (1,NULL),(2,NULL),(3,1),(4,2),(5,NULL),(6,NULL),(7,3),(8,4),(9,NULL),(10,NULL); + +# +# Check IS NULL optimization +# +explain select id from t1 where uniq_id is null; +explain select id from t1 where uniq_id =1; +# +# Check updates +# +UPDATE t1 SET id=id+100 where uniq_id is null; +UPDATE t2 SET id=id+100 where uniq_id is null; +select id from t1 where uniq_id is null; +select id from t2 where uniq_id is null; +# +# Delete all records from each table where the uniq_id field is null +# +DELETE FROM t1 WHERE uniq_id IS NULL; +DELETE FROM t2 WHERE uniq_id IS NULL; +# +# Select what is left -- notice the difference +# +SELECT * FROM t1 ORDER BY uniq_id, id; +SELECT * FROM t2 ORDER BY uniq_id, id; +DROP table t1,t2; |