Loading mysql-test/extra/rpl_tests/rpl_insert_id.test +17 −0 Original line number Diff line number Diff line Loading @@ -337,6 +337,7 @@ DROP TABLE t1, t2; DROP PROCEDURE IF EXISTS p1; DROP FUNCTION IF EXISTS f1; DROP FUNCTION IF EXISTS f2; DROP FUNCTION IF EXISTS f3; DROP TABLE IF EXISTS t1, t2; --enable_warnings Loading Loading @@ -366,6 +367,12 @@ END | CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC RETURN LAST_INSERT_ID() | CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA BEGIN INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); RETURN 0; END | delimiter ;| INSERT INTO t1 VALUES (NULL, -1); Loading @@ -380,6 +387,15 @@ INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)), INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); UPDATE t1 SET j= -1 WHERE i IS NULL; # Test statement-based replication of function calls. INSERT INTO t1 (i) VALUES (NULL); connection master1; INSERT INTO t1 (i) VALUES (NULL); connection master; SELECT f3(); SELECT * FROM t1; SELECT * FROM t2; Loading @@ -391,6 +407,7 @@ connection master; DROP PROCEDURE p1; DROP FUNCTION f1; DROP FUNCTION f2; DROP FUNCTION f3; DROP TABLE t1, t2; Loading mysql-test/r/rpl_insert_id.result +18 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,7 @@ DROP TABLE t1, t2; DROP PROCEDURE IF EXISTS p1; DROP FUNCTION IF EXISTS f1; DROP FUNCTION IF EXISTS f2; DROP FUNCTION IF EXISTS f3; DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Loading @@ -324,6 +325,11 @@ RETURN 0; END | CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC RETURN LAST_INSERT_ID() | CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA BEGIN INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); RETURN 0; END | INSERT INTO t1 VALUES (NULL, -1); CALL p1(); SELECT f1(); Loading @@ -336,6 +342,11 @@ INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)), (NULL, @@LAST_INSERT_ID); INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); UPDATE t1 SET j= -1 WHERE i IS NULL; INSERT INTO t1 (i) VALUES (NULL); INSERT INTO t1 (i) VALUES (NULL); SELECT f3(); f3() 0 SELECT * FROM t1; i j 1 -1 Loading @@ -356,12 +367,15 @@ i j 16 13 17 -1 18 14 19 0 20 0 SELECT * FROM t2; i 2 3 5 6 19 SELECT * FROM t1; i j 1 -1 Loading @@ -382,15 +396,19 @@ i j 16 13 17 -1 18 14 19 0 20 0 SELECT * FROM t2; i 2 3 5 6 19 DROP PROCEDURE p1; DROP FUNCTION f1; DROP FUNCTION f2; DROP FUNCTION f3; DROP TABLE t1, t2; # # End of 5.0 tests Loading sql/sql_class.cc +3 −1 Original line number Diff line number Diff line Loading @@ -637,7 +637,7 @@ bool THD::store_globals() THD::cleanup_after_query() DESCRIPTION This function is used to reset thread data to it's default state. This function is used to reset thread data to its default state. NOTE This function is not suitable for setting thread data to some Loading @@ -645,6 +645,7 @@ bool THD::store_globals() different master threads may overwrite data of each other on slave. */ void THD::cleanup_after_query() { if (!in_sub_stmt) /* stored functions and triggers are a special case */ Loading @@ -668,6 +669,7 @@ void THD::cleanup_after_query() where= THD::DEFAULT_WHERE; } /* Convert a string to another character set Loading Loading
mysql-test/extra/rpl_tests/rpl_insert_id.test +17 −0 Original line number Diff line number Diff line Loading @@ -337,6 +337,7 @@ DROP TABLE t1, t2; DROP PROCEDURE IF EXISTS p1; DROP FUNCTION IF EXISTS f1; DROP FUNCTION IF EXISTS f2; DROP FUNCTION IF EXISTS f3; DROP TABLE IF EXISTS t1, t2; --enable_warnings Loading Loading @@ -366,6 +367,12 @@ END | CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC RETURN LAST_INSERT_ID() | CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA BEGIN INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); RETURN 0; END | delimiter ;| INSERT INTO t1 VALUES (NULL, -1); Loading @@ -380,6 +387,15 @@ INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)), INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); UPDATE t1 SET j= -1 WHERE i IS NULL; # Test statement-based replication of function calls. INSERT INTO t1 (i) VALUES (NULL); connection master1; INSERT INTO t1 (i) VALUES (NULL); connection master; SELECT f3(); SELECT * FROM t1; SELECT * FROM t2; Loading @@ -391,6 +407,7 @@ connection master; DROP PROCEDURE p1; DROP FUNCTION f1; DROP FUNCTION f2; DROP FUNCTION f3; DROP TABLE t1, t2; Loading
mysql-test/r/rpl_insert_id.result +18 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,7 @@ DROP TABLE t1, t2; DROP PROCEDURE IF EXISTS p1; DROP FUNCTION IF EXISTS f1; DROP FUNCTION IF EXISTS f2; DROP FUNCTION IF EXISTS f3; DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Loading @@ -324,6 +325,11 @@ RETURN 0; END | CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC RETURN LAST_INSERT_ID() | CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA BEGIN INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); RETURN 0; END | INSERT INTO t1 VALUES (NULL, -1); CALL p1(); SELECT f1(); Loading @@ -336,6 +342,11 @@ INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)), (NULL, @@LAST_INSERT_ID); INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); UPDATE t1 SET j= -1 WHERE i IS NULL; INSERT INTO t1 (i) VALUES (NULL); INSERT INTO t1 (i) VALUES (NULL); SELECT f3(); f3() 0 SELECT * FROM t1; i j 1 -1 Loading @@ -356,12 +367,15 @@ i j 16 13 17 -1 18 14 19 0 20 0 SELECT * FROM t2; i 2 3 5 6 19 SELECT * FROM t1; i j 1 -1 Loading @@ -382,15 +396,19 @@ i j 16 13 17 -1 18 14 19 0 20 0 SELECT * FROM t2; i 2 3 5 6 19 DROP PROCEDURE p1; DROP FUNCTION f1; DROP FUNCTION f2; DROP FUNCTION f3; DROP TABLE t1, t2; # # End of 5.0 tests Loading
sql/sql_class.cc +3 −1 Original line number Diff line number Diff line Loading @@ -637,7 +637,7 @@ bool THD::store_globals() THD::cleanup_after_query() DESCRIPTION This function is used to reset thread data to it's default state. This function is used to reset thread data to its default state. NOTE This function is not suitable for setting thread data to some Loading @@ -645,6 +645,7 @@ bool THD::store_globals() different master threads may overwrite data of each other on slave. */ void THD::cleanup_after_query() { if (!in_sub_stmt) /* stored functions and triggers are a special case */ Loading @@ -668,6 +669,7 @@ void THD::cleanup_after_query() where= THD::DEFAULT_WHERE; } /* Convert a string to another character set Loading