*** Bug #138 *** DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1_default; DROP TABLE IF EXISTS t1_conn1; DROP PROCEDURE IF EXISTS p1; # Establish connection conn1 (user = root) SET @@autocommit = 1; # Switch to connection default SET @@autocommit = 1; CREATE TABLE t1 (a int(11), KEY a (a)) ENGINE = Falcon; CREATE TABLE t1_default (id INTEGER AUTO_INCREMENT, event_time TIME, event VARCHAR(50), PRIMARY KEY(id)) ENGINE = MyISAM; CREATE TABLE t1_conn1 LIKE t1_default; CREATE PROCEDURE p1 (my_connection VARCHAR(18)) begin declare v1 int default 0; declare v2 int; declare continue handler for 1020 begin IF my_connection = 'default' THEN INSERT INTO t1_default SET event = ' got error 1020', event_time = CURTIME(); END IF; IF my_connection = 'conn1' THEN INSERT INTO t1_conn1 SET event = ' got error 1020', event_time = CURTIME(); END IF; end; declare continue handler for 1213 begin IF my_connection = 'default' THEN INSERT INTO t1_default SET event = ' got error 1213', event_time = CURTIME(); END IF; IF my_connection = 'conn1' THEN INSERT INTO t1_conn1 SET event = ' got error 1213', event_time = CURTIME(); END IF; end; while v1 < do /* SELECT 'insert', v1; */ INSERT INTO t1 VALUES (v1); IF my_connection = 'default' THEN INSERT INTO t1_default SET event = CONCAT(CAST(v1 AS CHAR),' inserted'), event_time = CURTIME(); END IF; IF my_connection = 'conn1' THEN INSERT INTO t1_conn1 SET event = CONCAT(CAST(v1 AS CHAR),' inserted'), event_time = CURTIME(); END IF; SET v2 = rand() * ; UPDATE t1 SET a = v2 WHERE a = v1; IF my_connection = 'default' THEN INSERT INTO t1_default SET event = CONCAT(CAST(v1 AS CHAR),' updated to ', CAST(v2 AS CHAR)), event_time = CURTIME(); END IF; IF my_connection = 'conn1' THEN INSERT INTO t1_conn1 SET event = CONCAT(CAST(v1 AS CHAR),' updated to ', CAST(v2 AS CHAR)), event_time = CURTIME(); END IF; /* SELECT ' update', v1; */ SET v1 = v1 + 1; if v1 mod 50 = 0 then /* SELECT ' delete'; */ DELETE FROM t1; IF my_connection = 'default' THEN INSERT INTO t1_default SET event = 'delete all', event_time = CURTIME(); END IF; IF my_connection = 'conn1' THEN INSERT INTO t1_conn1 SET event = 'delete all', event_time = CURTIME(); END IF; end if; end while; IF my_connection = 'default' THEN INSERT INTO t1_default SET event = 'end of while loop', event_time = CURTIME(); END IF; IF my_connection = 'conn1' THEN INSERT INTO t1_conn1 SET event = 'end of while loop', event_time = CURTIME(); END IF; end// # default: Sent call p1() to the server but do not pull the results call p1('default'); # Switch to connection conn1 call p1('conn1'); # Switch to connection default # default: Pull the results of the preceeding call p1() # default: Sent call p1() to the server but do not pull the results call p1('default'); # Switch to connection conn1 call p1('conn1'); # Switch to connection default # default: Pull the results of the preceeding call p1() SELECT * FROM t1_default WHERE event like ' got error 1%'; id event_time event SELECT * FROM t1_conn1 WHERE event like ' got error 1%'; id event_time event # Disconnect conn1 DROP TABLE t1; DROP PROCEDURE p1;