diff options
author | konstantin@mysql.com <> | 2004-08-24 20:17:11 +0400 |
---|---|---|
committer | konstantin@mysql.com <> | 2004-08-24 20:17:11 +0400 |
commit | ae18dc3ec82e607f041878c4760ba7526999ae86 (patch) | |
tree | abcc02d1c616c2795f2ca78dd7032b01d865d0ce /mysql-test | |
parent | f0fffbe21b6ab3fb9303acaad99872e3844ddef5 (diff) | |
download | mariadb-git-ae18dc3ec82e607f041878c4760ba7526999ae86.tar.gz |
Fix for Bug#5034 "prepared "select 1 into @arg15", second
execute crashes server": we were deleting lex->result
after each execute, but prepared statements assumed that
it's left intact.
The fix adds cleanup() method to select_result hierarchy,
so that result objects can be reused.
Plus we now need to delete result objects more wisely.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/ps.result | 15 | ||||
-rw-r--r-- | mysql-test/t/ps.test | 24 |
2 files changed, 38 insertions, 1 deletions
diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index 0523143f91d..98095930669 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -226,3 +226,18 @@ a b execute stmt1; a b deallocate prepare stmt1; +drop table t1; +prepare stmt1 from "select 1 into @var"; +execute stmt1; +execute stmt1; +prepare stmt1 from "create table t1 select 1 as i"; +execute stmt1; +drop table t1; +execute stmt1; +prepare stmt1 from "insert into t1 select i from t1"; +execute stmt1; +execute stmt1; +prepare stmt1 from "select * from t1 into outfile 'f1.txt'"; +execute stmt1; +deallocate prepare stmt1; +drop table t1; diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index 9d23c795e05..8b9704f2a06 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -209,7 +209,7 @@ drop table t1; # # Bug#4912 "mysqld crashs in case a statement is executed a second time": -# negation elimination should and prepared statemens +# negation elimination should work once and not break prepared statements # create table t1(a varchar(2), b varchar(3)); @@ -217,4 +217,26 @@ prepare stmt1 from "select a, b from t1 where (not (a='aa' and b < 'zzz'))"; execute stmt1; execute stmt1; deallocate prepare stmt1; +drop table t1; + +# +# Bug#5034 "prepared "select 1 into @arg15", second execute crashes +# server". +# Check that descendands of select_result can be reused in prepared +# statements or are correctly created and deleted on each execute +# +prepare stmt1 from "select 1 into @var"; +execute stmt1; +execute stmt1; +prepare stmt1 from "create table t1 select 1 as i"; +execute stmt1; +drop table t1; +execute stmt1; +prepare stmt1 from "insert into t1 select i from t1"; +execute stmt1; +execute stmt1; +prepare stmt1 from "select * from t1 into outfile 'f1.txt'"; +execute stmt1; +deallocate prepare stmt1; +drop table t1; |