Current Path : /home/usr.opt/mysql57/mysql-test/r/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //home/usr.opt/mysql57/mysql-test/r/sp_sync.result |
Tests of synchronization of stored procedure execution. SET DEBUG_SYNC= 'RESET'; # # Bug #30977 Concurrent statement using stored function and # DROP FUNCTION breaks SBR # # A stored routine could change after dispatch_command() # but before a MDL lock is taken. This must be noticed and the # sp cache flushed so the correct version can be loaded. # # Connection default CREATE FUNCTION f1() RETURNS INT RETURN 1; # Get f1 cached SELECT f1(); f1() 1 # Then start executing it again... SET DEBUG_SYNC= 'before_execute_sql_command SIGNAL before WAIT_FOR changed'; # Sending: SELECT f1(); # Connection 2 SET DEBUG_SYNC= 'now WAIT_FOR before'; # ... but before f1 is locked, change it. DROP FUNCTION f1; CREATE FUNCTION f1() RETURNS INT RETURN 2; SET DEBUG_SYNC= 'now SIGNAL changed'; # Connection default # We should now get '2' and not '1'. # Reaping: SELECT f1() f1() 2 DROP FUNCTION f1; SET DEBUG_SYNC= 'RESET'; # # Field translation items must be cleared in case of back-offs # for queries that use Information Schema tables. Otherwise # memory allocated in fix_fields() for views may end up referring # to freed memory. # DROP FUNCTION IF EXISTS f1; # Connection default CREATE FUNCTION f1() RETURNS INT RETURN 0; # Connection con2 SET DEBUG_SYNC= 'after_wait_locked_pname SIGNAL locked WAIT_FOR issued'; # con2 will now have an x-lock on f1 # Sending: ALTER FUNCTION f1 COMMENT 'comment'; # Connection default SET DEBUG_SYNC= 'now WAIT_FOR locked'; # This query will block due to the x-lock on f1 and back-off SHOW OPEN TABLES WHERE f1()=0; # Connection con3 # Check that the IS query is blocked before releasing the x-lock SET DEBUG_SYNC= 'now SIGNAL issued'; # Connection default # Reaping: ALTER FUNCTION f1 COMMENT 'comment' DROP FUNCTION f1; SET DEBUG_SYNC= 'RESET'; # # Bug #48246 assert in close_thread_table # CREATE TABLE t0 (b INTEGER); CREATE TABLE t1 (a INTEGER); CREATE FUNCTION f1(b INTEGER) RETURNS INTEGER RETURN 1; CREATE PROCEDURE p1() SELECT COUNT(f1(a)) FROM t1, t0; INSERT INTO t0 VALUES(1); INSERT INTO t1 VALUES(1), (2); # Connection 2 CALL p1(); COUNT(f1(a)) 2 SET DEBUG_SYNC= 'after_open_table_mdl_shared SIGNAL locked_t1 WAIT_FOR go_for_t0'; # This call used to cause an assertion. MDL deadlock with upcoming # LOCK TABLES statement will cause back-off and retry. # A variable indicating if a prelocking list exists, used to be not # reset properly causing an eventual assert. # Sending: CALL p1(); # Connection default SET DEBUG_SYNC= 'now WAIT_FOR locked_t1'; # Issue LOCK TABLES statement which will enter in MDL deadlock # with CALL statement and as result will cause it to perform # back-off and retry. SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL go_for_t0'; LOCK TABLES t0 WRITE, t1 WRITE; UNLOCK TABLES; # Connection 2 # Reaping: CALL p1() COUNT(f1(a)) 2 # Connection default DROP PROCEDURE p1; DROP FUNCTION f1; DROP TABLES t0, t1; # # test for bug#11756013 # DROP SCHEMA IF EXISTS s1; CREATE SCHEMA s1; CREATE PROCEDURE s1.p1() BEGIN END; SET DEBUG_SYNC='before_db_dir_check SIGNAL check_db WAIT_FOR dropped_schema'; CALL s1.p1; SET DEBUG_SYNC='now WAIT_FOR check_db'; DROP SCHEMA s1; SET DEBUG_SYNC='now SIGNAL dropped_schema'; ERROR 42000: Unknown database 's1' SET DEBUG_SYNC = 'RESET';