From 4486659c8b664ffac8bf4011de084a49be93189a Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 23 Oct 2004 03:30:27 +0300 Subject: Fixed wrong range test code for HEAP tables. This caused a crash when doing a range test with a key that didn't have lower or upper bound (Bug #6082) More test cases mysql-test/r/heap.result: Test for bug #6082 (delete with NOT NULL) mysql-test/r/key.result: More tests for BUG#6151 - myisam index corruption mysql-test/r/ps.result: Test of bug #6047 "Permission problem when executing mysql_stmt_execute with derived table" mysql-test/t/heap.test: Test for bug #6082 (delete with NOT NULL) mysql-test/t/key.test: More tests for BUG#6151 - myisam index corruption mysql-test/t/ps.test: Test of bug #6047 "Permission problem when executing mysql_stmt_execute with derived table" sql/ha_heap.cc: Fixed wrong range test code for HEAP tables. This caused a crash when doing a range test with a key that didn't have lower or upper bound --- mysql-test/r/heap.result | 6 ++++++ mysql-test/r/key.result | 8 ++++++++ mysql-test/r/ps.result | 6 ++++++ mysql-test/t/heap.test | 10 ++++++++++ mysql-test/t/key.test | 11 +++++++++++ mysql-test/t/ps.test | 13 +++++++++++++ 6 files changed, 54 insertions(+) (limited to 'mysql-test') diff --git a/mysql-test/r/heap.result b/mysql-test/r/heap.result index c49c9abb368..92b694b5117 100644 --- a/mysql-test/r/heap.result +++ b/mysql-test/r/heap.result @@ -227,3 +227,9 @@ SELECT MAX(job_title_id) FROM job_titles; MAX(job_title_id) NULL DROP TABLE job_titles; +CREATE TABLE t1 (a INT NOT NULL, B INT, KEY(B)) ENGINE=HEAP; +INSERT INTO t1 VALUES(1,1), (1,NULL); +SELECT * FROM t1 WHERE B is not null; +a B +1 1 +DROP TABLE t1; diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result index 89307cf7080..e3b341fcaf8 100644 --- a/mysql-test/r/key.result +++ b/mysql-test/r/key.result @@ -296,4 +296,12 @@ Table Op Msg_type Msg_text test.t1 check status OK select c1 from t1 where c2='\Z\Z\Z\Z'; c1 +truncate table t1; +insert into t1 values(1,"aaaa"),(2,"aaab"),(3,"aaac"),(4,"aaccc"); +delete from t1 where c1=3; +delete from t1 where c1=1; +delete from t1 where c1=4; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK drop table t1; diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index e1391a496c6..6cad58282a2 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -450,3 +450,9 @@ found_rows() 10 deallocate prepare stmt; drop table t1; +CREATE TABLE t1 (N int, M tinyint); +INSERT INTO t1 VALUES (1,0),(1,0),(2,0),(2,0),(3,0); +PREPARE stmt FROM 'UPDATE t1 AS P1 INNER JOIN (SELECT N FROM t1 GROUP BY N HAVING COUNT(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2'; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +DROP TABLE t1; diff --git a/mysql-test/t/heap.test b/mysql-test/t/heap.test index 37fc5a43227..e1776245d9e 100644 --- a/mysql-test/t/heap.test +++ b/mysql-test/t/heap.test @@ -164,3 +164,13 @@ CREATE TABLE `job_titles` ( SELECT MAX(job_title_id) FROM job_titles; DROP TABLE job_titles; + +# +# Test of delete with NOT NULL +# (Bug #6082) +# + +CREATE TABLE t1 (a INT NOT NULL, B INT, KEY(B)) ENGINE=HEAP; +INSERT INTO t1 VALUES(1,1), (1,NULL); +SELECT * FROM t1 WHERE B is not null; +DROP TABLE t1; diff --git a/mysql-test/t/key.test b/mysql-test/t/key.test index 620b8e415b8..662baa5ea9d 100644 --- a/mysql-test/t/key.test +++ b/mysql-test/t/key.test @@ -272,5 +272,16 @@ select c1 from t1 where c2='\Z\Z\Z\Z'; DELETE FROM t1 WHERE (c1 = 3); check table t1; select c1 from t1 where c2='\Z\Z\Z\Z'; + +# +# test delete of keys in a different order +# +truncate table t1; +insert into t1 values(1,"aaaa"),(2,"aaab"),(3,"aaac"),(4,"aaccc"); +delete from t1 where c1=3; +delete from t1 where c1=1; +delete from t1 where c1=4; +check table t1; + drop table t1; diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index 76da86dc6df..978ce2bc2c3 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -449,3 +449,16 @@ execute stmt; select found_rows(); deallocate prepare stmt; drop table t1; + +# +# Bug#6047 "permission problem when executing mysql_stmt_execute with derived +# table" +# + +CREATE TABLE t1 (N int, M tinyint); +INSERT INTO t1 VALUES (1,0),(1,0),(2,0),(2,0),(3,0); +PREPARE stmt FROM 'UPDATE t1 AS P1 INNER JOIN (SELECT N FROM t1 GROUP BY N HAVING COUNT(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2'; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +DROP TABLE t1; + -- cgit v1.2.1