diff options
Diffstat (limited to 'mysql-test/t/sp_sync.test')
-rw-r--r-- | mysql-test/t/sp_sync.test | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/mysql-test/t/sp_sync.test b/mysql-test/t/sp_sync.test deleted file mode 100644 index a5682fc572f..00000000000 --- a/mysql-test/t/sp_sync.test +++ /dev/null @@ -1,170 +0,0 @@ -# This test should work in embedded server after mysqltest is fixed --- source include/not_embedded.inc - ---echo Tests of synchronization of stored procedure execution. - ---source include/have_debug_sync.inc - -# Save the initial number of concurrent sessions. ---source include/count_sessions.inc - -# Clean up resources used in this test case. ---disable_warnings -SET DEBUG_SYNC= 'RESET'; ---enable_warnings - ---echo # ---echo # Bug #30977 Concurrent statement using stored function and ---echo # DROP FUNCTION breaks SBR ---echo # ---echo # A stored routine could change after dispatch_command() ---echo # but before a MDL lock is taken. This must be noticed and the ---echo # sp cache flushed so the correct version can be loaded. ---echo # - -connect (con2, localhost, root); - -connection default; -CREATE FUNCTION f1() RETURNS INT RETURN 1; ---echo # Get f1 cached -SELECT f1(); ---echo # Then start executing it again... -SET DEBUG_SYNC= 'before_execute_sql_command SIGNAL before WAIT_FOR changed'; ---echo # Sending: ---send SELECT f1() - -connection con2; -SET DEBUG_SYNC= 'now WAIT_FOR before'; ---echo # ... but before f1 is locked, change it. -DROP FUNCTION f1; -CREATE FUNCTION f1() RETURNS INT RETURN 2; -SET DEBUG_SYNC= 'now SIGNAL changed'; - ---echo # We should now get '2' and not '1'. -connection default; ---echo # Reaping: SELECT f1() ---reap - -disconnect con2; -DROP FUNCTION f1; -SET DEBUG_SYNC= 'RESET'; - ---echo # ---echo # Field translation items must be cleared in case of back-offs ---echo # for queries that use Information Schema tables. Otherwise ---echo # memory allocated in fix_fields() for views may end up referring ---echo # to freed memory. ---echo # - ---disable_warnings -DROP FUNCTION IF EXISTS f1; ---enable_warnings - -connect (con2, localhost, root); -connect (con3, localhost, root); - -connection default; -CREATE FUNCTION f1() RETURNS INT RETURN 0; - -connection con2; -SET DEBUG_SYNC= 'after_wait_locked_pname SIGNAL locked WAIT_FOR issued'; ---echo # con2 will now have an x-lock on f1 ---echo # Sending: ---send ALTER FUNCTION f1 COMMENT 'comment' - -connection default; -SET DEBUG_SYNC= 'now WAIT_FOR locked'; ---disable_result_log ---echo # This query will block due to the x-lock on f1 and back-off ---send SHOW OPEN TABLES WHERE f1()=0 - -connection con3; -let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist - WHERE state= 'Waiting for stored function metadata lock' - AND info='SHOW OPEN TABLES WHERE f1()=0'; ---source include/wait_condition.inc ---echo # Check that the IS query is blocked before releasing the x-lock -SET DEBUG_SYNC= 'now SIGNAL issued'; - -connection default; ---echo # Reaping: ALTER FUNCTION f1 COMMENT 'comment' ---reap ---enable_result_log -DROP FUNCTION f1; -SET DEBUG_SYNC= 'RESET'; -disconnect con2; -disconnect con3; - - ---echo # ---echo # Bug #48246 assert in close_thread_table ---echo # - -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); - -connect (con2, localhost, root); -CALL p1(); - -SET DEBUG_SYNC= 'after_open_table_mdl_shared SIGNAL locked_t1 WAIT_FOR go_for_t0'; ---echo # This call used to cause an assertion. MDL deadlock with upcoming ---echo # LOCK TABLES statement will cause back-off and retry. ---echo # A variable indicating if a prelocking list exists, used to be not ---echo # reset properly causing an eventual assert. ---echo # Sending: ---send CALL p1() - -connection default; -SET DEBUG_SYNC= 'now WAIT_FOR locked_t1'; ---echo # Issue LOCK TABLES statement which will enter in MDL deadlock ---echo # with CALL statement and as result will cause it to perform ---echo # back-off and retry. -SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL go_for_t0'; -LOCK TABLES t0 WRITE, t1 WRITE; -UNLOCK TABLES; - -connection con2; ---echo # Reaping: CALL p1() ---reap; - -connection default; -disconnect con2; -DROP PROCEDURE p1; -DROP FUNCTION f1; -DROP TABLES t0, t1; - - ---echo # ---echo # test for bug#11756013 ---echo # ---disable_warnings -DROP SCHEMA IF EXISTS s1; ---enable_warnings -CREATE SCHEMA s1; -CREATE PROCEDURE s1.p1() BEGIN END; - -connect (con3, localhost, root); -SET DEBUG_SYNC='before_db_dir_check SIGNAL check_db WAIT_FOR dropped_schema'; ---send CALL s1.p1 - -connection default; -SET DEBUG_SYNC='now WAIT_FOR check_db'; -DROP SCHEMA s1; -SET DEBUG_SYNC='now SIGNAL dropped_schema'; - -connection con3; ---error ER_BAD_DB_ERROR ---reap -connection default; -disconnect con3; - -SET DEBUG_SYNC = 'RESET'; - -# Check that all connections opened by test cases in this file are really -# gone so execution of other tests won't be affected by their presence. ---source include/wait_until_count_sessions.inc |