1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

merge of MDEV-5356 5.1->5.3 (with more fixes and test suite).

THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario:
  1) func1 saves current arena and activates copy1 of statement arena
  2) func2 saves copy1 of statement arena setup by func1 and activates copy2
  3) some changes made for copy 2
  4) func2 stores changed copy2 back to statenet arena and activates copy1
  5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
This commit is contained in:
unknown
2014-01-23 12:05:10 +02:00
8 changed files with 65 additions and 39 deletions

View File

@ -479,5 +479,27 @@ SELECT * FROM
WHERE tmp.a;
a b
100 200
#
# MDEV-5356: Server crashes in Item_equal::contains on 2nd
# execution of a PS
#
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,2),(3,4);
CREATE TABLE t2 (c INT);
INSERT INTO t2 VALUES (5),(6);
CREATE TABLE t3 (d INT);
INSERT INTO t3 VALUES (7),(8);
CREATE PROCEDURE pr()
UPDATE t3,
(SELECT c FROM
(SELECT 1 FROM t1 WHERE a=72 AND NOT b) sq,
t2
) sq2
SET d=sq2.c;
CALL pr();
CALL pr();
CALL pr();
drop procedure pr;
drop table t1,t2,t3;
# End of 5.3 tests
set optimizer_switch=@save_derived_optimizer_switch;

View File

@ -394,6 +394,35 @@ WHERE tmp.b;
SELECT * FROM
( SELECT 100 a, subsel.b FROM ( SELECT 200 b ) subsel ) tmp
WHERE tmp.a;
--echo #
--echo # MDEV-5356: Server crashes in Item_equal::contains on 2nd
--echo # execution of a PS
--echo #
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,2),(3,4);
CREATE TABLE t2 (c INT);
INSERT INTO t2 VALUES (5),(6);
CREATE TABLE t3 (d INT);
INSERT INTO t3 VALUES (7),(8);
CREATE PROCEDURE pr()
UPDATE t3,
(SELECT c FROM
(SELECT 1 FROM t1 WHERE a=72 AND NOT b) sq,
t2
) sq2
SET d=sq2.c;
CALL pr();
CALL pr();
CALL pr();
drop procedure pr;
drop table t1,t2,t3;
--echo # End of 5.3 tests
set optimizer_switch=@save_derived_optimizer_switch;