Fix for BUG#14769 "Function fails to replicate if fails half-way (slave stops)":
if the function, invoked in a non-binlogged caller (e.g. SELECT, DO), failed half-way on the master, slave would stop and complain that error code between him and master mismatch. To solve this, when a stored function is invoked in a non-binlogged caller (e.g. SELECT, DO), we binlog the function call as SELECT instead of as DO (see revision comment of sp_head.cc for more). And: minor wording change in the help text. This cset will cause conflicts in 5.1, I'll merge. mysql-test/r/rpl_sp.result: result update mysql-test/t/rpl_sp-slave.opt: bug just fixed so option not needed mysql-test/t/rpl_sp.test: test for more half-failed functions with DO and SELECT, to test the bug of this changeset. cleanup at the end. sql/mysqld.cc: function -> stored function (change suggested by Paul) sql/sp_head.cc: When a function updates data and is called from a non-binlogged statement (SELECT, DO), we binlog it as SELECT myfunc(), and not DO myfunc() like before.
Showing
Please register or sign in to comment