mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fixed LP bug #910083.
The patch for bug 685411 erroneously removed a call of engine->set_thd() from Item_subselect::fix_fields().
This commit is contained in:
@ -2134,3 +2134,47 @@ i
|
|||||||
2
|
2
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
End of 5.2 tests.
|
End of 5.2 tests.
|
||||||
|
#
|
||||||
|
# BUG #910083: materialized subquery in a trigger
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=on';
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
CREATE TABLE t2 (b int);
|
||||||
|
CREATE TRIGGER tr AFTER UPDATE ON t1 FOR EACH ROW
|
||||||
|
UPDATE t2 SET b = (SELECT COUNT(a) FROM t1);
|
||||||
|
INSERT INTO t1
|
||||||
|
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
INSERT INTO t2
|
||||||
|
VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0);
|
||||||
|
UPDATE t1 SET a = 3;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
9
|
||||||
|
SELECT * FROM t2;
|
||||||
|
b
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
UPDATE t1 SET a = 2;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
b
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
9
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TRIGGER tr;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
End of 5.3 tests.
|
||||||
|
@ -2434,3 +2434,43 @@ select * from t2;
|
|||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
--echo End of 5.2 tests.
|
--echo End of 5.2 tests.
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG #910083: materialized subquery in a trigger
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=on';
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
CREATE TABLE t2 (b int);
|
||||||
|
|
||||||
|
CREATE TRIGGER tr AFTER UPDATE ON t1 FOR EACH ROW
|
||||||
|
UPDATE t2 SET b = (SELECT COUNT(a) FROM t1);
|
||||||
|
|
||||||
|
INSERT INTO t1
|
||||||
|
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
INSERT INTO t2
|
||||||
|
VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0);
|
||||||
|
|
||||||
|
send
|
||||||
|
UPDATE t1 SET a = 3;
|
||||||
|
|
||||||
|
connect(con1,localhost,root,,);
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
disconnect con1;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
reap;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
UPDATE t1 SET a = 2;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
|
||||||
|
DROP TRIGGER tr;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo End of 5.3 tests.
|
||||||
|
|
||||||
|
@ -211,8 +211,7 @@ bool Item_subselect::fix_fields(THD *thd_param, Item **ref)
|
|||||||
bool res;
|
bool res;
|
||||||
|
|
||||||
DBUG_ASSERT(fixed == 0);
|
DBUG_ASSERT(fixed == 0);
|
||||||
/* There is no reason to get a different THD. */
|
engine->set_thd((thd= thd_param));
|
||||||
DBUG_ASSERT(thd == thd_param);
|
|
||||||
if (!done_first_fix_fields)
|
if (!done_first_fix_fields)
|
||||||
{
|
{
|
||||||
done_first_fix_fields= TRUE;
|
done_first_fix_fields= TRUE;
|
||||||
|
Reference in New Issue
Block a user