From: Li-Bing.Song Date: March 10 2010 10:36am Subject: bzr commit into mysql-5.1-bugteam branch (Li-Bing.Song:3368) Bug#50095 List-Archive: http://lists.mysql.com/commits/102855 X-Bug: 50095 Message-Id: <201003101037.o2AAbvN4029775@anders-server> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8100692771870604691==" --===============8100692771870604691== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/anders/work/bzrwork/worktree3/mysql-5.1-bugteam/ based on revid:staale.smedseng@stripped 3368 Li-Bing.Song@stripped 2010-03-10 Bug #50095 Multi statement including CREATE EVENT causes rotten binlog entry The log event of 'CREATE EVENT' was being binlogged with garbage at the end of the query if 'CREATE EVENT' is followed by another SQL statement and they were executed as one command. for example: DELIMITER |; CREATE EVENT e1 ON EVERY DAY DO SELECT 1; SELECT 'a'; DELIMITER ;| When binlogging 'CREATE EVENT', we always create a new statement with definer and write it into the log event. The new statement is made from cpp_buf(preprocessed buffer). which is not a c string(end with '\0'), but it is copied as a c string. In this patch, cpp_buf is copied with its length. modified: mysql-test/suite/rpl/r/rpl_events.result mysql-test/suite/rpl/t/rpl_events.test sql/events.cc === modified file 'mysql-test/suite/rpl/r/rpl_events.result' --- a/mysql-test/suite/rpl/r/rpl_events.result 2010-02-02 13:38:44 +0000 +++ b/mysql-test/suite/rpl/r/rpl_events.result 2010-03-10 10:36:48 +0000 @@ -208,8 +208,14 @@ CREATE /*!50000 DEFINER='user44331' */ E ON SCHEDULE AT CURRENT_TIMESTAMP ON COMPLETION PRESERVE DISABLE DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1'); -Warnings: -Note 1449 The user specified as a definer ('user44331'@'%') does not exist +# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten +# binlog entry +SELECT 'ABC'; +SELECT '123'| +ABC +ABC +123 +123 #on master select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events where EVENT_NAME='event44331_1'; === modified file 'mysql-test/suite/rpl/t/rpl_events.test' --- a/mysql-test/suite/rpl/t/rpl_events.test 2010-02-02 13:38:44 +0000 +++ b/mysql-test/suite/rpl/t/rpl_events.test 2010-03-10 10:36:48 +0000 @@ -69,10 +69,16 @@ CREATE DEFINER=CURRENT_USER() EVENT even ON COMPLETION PRESERVE DISABLE DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function'); +DELIMITER |; CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4 ON SCHEDULE AT CURRENT_TIMESTAMP ON COMPLETION PRESERVE DISABLE DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1'); +# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten +# binlog entry + SELECT 'ABC'; + SELECT '123'| +DELIMITER ;| --echo #on master select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events === modified file 'sql/events.cc' --- a/sql/events.cc 2010-02-02 13:38:44 +0000 +++ b/sql/events.cc 2010-03-10 10:36:48 +0000 @@ -362,7 +362,9 @@ create_query_string(THD *thd, String *bu /* Append definer */ append_definer(thd, buf, &(thd->lex->definer->user), &(thd->lex->definer->host)); /* Append the left part of thd->query after "DEFINER" part */ - if (buf->append(thd->lex->stmt_definition_begin)) + if (buf->append(thd->lex->stmt_definition_begin, + thd->lex->stmt_definition_end - + thd->lex->stmt_definition_begin)) return 1; return 0; --===============8100692771870604691== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/li-bing.song@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: li-bing.song@stripped # target_branch: file:///home/anders/work/bzrwork/worktree3/mysql-5.1-\ # bugteam/ # testament_sha1: 8f4ecff88903a6a3494ba79ef6fa7d02d42b6a50 # timestamp: 2010-03-10 18:36:57 +0800 # base_revision_id: staale.smedseng@stripped\ # 1so7n5vi7xu0brf0 # # Begin bundle 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 pT/F3JFOFCQAzBFKQA== --===============8100692771870604691==--