mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
6660c072ad
as well as
MDEV-19500 Update with join stopped worked if there is a call to a procedure in a trigger
MDEV-19521 Update Table Fails with Trigger and Stored Function
MDEV-19497 Replication stops because table not found
MDEV-19527 UPDATE + JOIN + TRIGGERS = table doesn't exists error
Reimplement the fix for (5d510fdbf0
)
MDEV-18507 can't update temporary table when joined with table with triggers on read-only
instead of calling open_tables() twice, put multi-update
prepare code inside open_tables() loop.
Add a test for a MDL backoff-and-retry loop inside open_tables()
across multi-update prepare code.
27 lines
1,007 B
Text
27 lines
1,007 B
Text
#
|
|
# test MDL backoff-and-retry during multi-update
|
|
#
|
|
source include/have_debug_sync.inc;
|
|
create table t1 (a int, b int);
|
|
create table t2 (c int, d int);
|
|
insert t1 values (1,2),(3,4);
|
|
insert t2 values (5,6),(7,8);
|
|
create table t0 (x int);
|
|
insert t0 values (11), (22);
|
|
create trigger tr1 before update on t1 for each row insert t0 values (new.b);
|
|
|
|
set debug_sync='open_tables_after_open_and_process_table WAIT_FOR cont';
|
|
send update t1 join t2 on (a=c+4) set b=d;
|
|
|
|
connect con1, localhost, root;
|
|
let $wait_condition= select count(*) from information_schema.processlist where state = ' debug sync point: open_tables_after_open_and_process_table'
|
|
source include/wait_condition.inc;
|
|
set debug_sync='mdl_acquire_lock_wait SIGNAL cont';
|
|
lock table t1 write, t0 write;
|
|
let $wait_condition= select count(*) from information_schema.processlist where state = 'Waiting for table metadata lock'
|
|
source include/wait_condition.inc;
|
|
disconnect con1;
|
|
connection default;
|
|
reap;
|
|
drop table t1, t2, t0;
|
|
set debug_sync='reset';
|