# Tests for the performance schema # --source ../include/stage_setup.inc connect (con1, localhost, user1, , ); --disable_warnings drop function if exists test.f1; --enable_warnings create function test.f1() returns int return 1; begin; select test.f1(); connect (con2, localhost, user2, , ); # Will wait on con1, "Waiting for stored function metadata lock" --send drop function test.f1; --connection default # user1: Wait for the statement to complete let $wait_condition= select count(*) = 1 from performance_schema.threads where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user1' and PROCESSLIST_COMMAND = 'Sleep'; --source include/wait_condition.inc # user2: Wait for the drop function to block let $wait_condition= select count(*) = 1 from performance_schema.threads where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user2' and PROCESSLIST_STATE = 'Waiting for stored function metadata lock'; --source include/wait_condition.inc call dump_one_thread('user1'); call dump_one_thread('user2'); --connection con1 select f1(); commit; --disconnect con1 --connection con2 --reap --disconnect con2 --connection default # Wait for the disconnect to complete let $wait_condition= select count(*) = 0 from performance_schema.threads where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user%'; --source include/wait_condition.inc --source ../include/stage_cleanup.inc