Bug #43908 Create VIEW Statement Is Written Incorrectly To Binlog And Breaks Replication
Submitted: 27 Mar 2009 12:40 Modified: 13 Apr 2009 21:23
Reporter: Andy Pritchard Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Replication Severity:S1 (Critical)
Version:5.0.67 OS:Linux (RHEL AS 4 (Nahant 5) 64-bit)
Assigned to: CPU Architecture:Any
Tags: create view, replication, VIEW

[27 Mar 2009 12:40] Andy Pritchard
Description:
I found the same problem as bug #39171 which has been closed.

A CREATE VIEW statement is executed correctly on a master server, but all slave servers fail to replicate it. Closer inspection shows the statement in the master binary log is wildly different from the original CREATE VIEW SQL.

I believe this to be an issue with the master alone. The slaves all appear to read the same data that is contained in the master binlog.

The binary log shows some kind of recursion. Here is the entry:

[mysql@db3 binlogs]$ mysqlbinlog --start-datetime='2009-03-27 11:57:00' --start-position=125993827 - -stop-position=125998722 db3-bin.000513
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 125993827
#090327 11:57:59 server id 3  end_log_pos 125998722     Query   thread_id=12217516      exec_time=0    error_code=0
use titan1/*!*/;
SET TIMESTAMP=1238155079/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=5, @@session.auto_increment_offset=3/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS CREATE OR REPLACE ALGORITHM=MER
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

How to repeat:
To create the view:

  CREATE OR REPLACE ALGORITHM = MERGE VIEW `b_subset` AS
    SELECT * FROM `b`
    WHERE YEAR(first_date) > 2008;

This creates the view on the master but then puts the corrupt entry into its own binlog. The slaves then fail.

Valeriy asked the original reporter for create table statements. 
Here is mine:

CREATE TABLE `b` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(20) default 'Mr',
  `firstname` varchar(50) default NULL,
  `lastname` varchar(50) default NULL,
  `cardholder` varchar(50) default NULL,
  `address` varchar(45) default NULL,
  `city` varchar(20) default NULL,
  `country` varchar(20) default NULL,
  `state_province` varchar(20) default NULL,
  `email` varchar(80) default NULL,
  `phone` varchar(20) default NULL,
  `fax` varchar(20) default NULL,
  `payment` int(2) NOT NULL default '0',
  `card_expire` date default NULL,
  `card_num` varchar(30) default NULL,
  `card_cvv2` varchar(10) default NULL,
  `card_ok` tinyint(1) NOT NULL default '0',
  `book_date` datetime default NULL,
  `first_date` datetime default NULL,
  `pick_up_loc` int(11) default NULL,
  `drop_off_loc` int(11) default NULL,
  `pick_up_time` datetime default NULL,
  `drop_off_time` datetime default NULL,
  `birth` date default NULL,
  `zip` varchar(11) default NULL,
  `airline` varchar(20) default NULL,
  `flight_no` varchar(20) default NULL,
  `info` text,
  `reserv_num` int(11) default NULL,
  `car_id` int(11) default NULL,
  `deposit` decimal(8,2) default NULL,
  `need_to_pay` decimal(8,2) default '0.00',
  `mfc` int(1) NOT NULL default '0',
  `cga` int(1) NOT NULL default '0',
  `crf` int(1) NOT NULL default '0',
  `state` int(1) NOT NULL default '0',
  `state2` int(1) NOT NULL default '0',
  `modify` int(1) NOT NULL default '0',
  `modify2` int(1) NOT NULL default '0',
  `st` int(1) NOT NULL default '0',
  `extra_id` varchar(20) default NULL,
  `lastmodified` datetime default NULL,
  `lastcancelled` datetime default NULL,
  `partner_comments` text,
  `advice` text,
  `archive` int(1) NOT NULL default '0',
  `cur` varchar(3) default NULL,
  `dest` varchar(20) default NULL,
  `pick_up_service` enum('0','1') default NULL,
  `drop_off_service` enum('0','1') default NULL,
  `airline_pick` varchar(40) default NULL,
  `airline_drop` varchar(40) default NULL,
  `flight_drop` varchar(40) default NULL,
  `flight_pick` varchar(40) default NULL,
  `discount_code` varchar(20) default NULL,
  `age` int(11) default NULL,
  `insurance` varchar(20) default NULL,
  `pick_info` text,
  `drop_info` text,
  `broker_code` varchar(20) default NULL,
  `add_driver_age` int(2) default NULL,
  `lang` int(10) default '33',
  `agent_id` varchar(20) default NULL,
  `voucher_type` varchar(10) NOT NULL default '',
  `cancelled_by` enum('1','0','2') default '0',
  `pnref` varchar(20) default NULL,
  `bonus_id` int(7) default NULL,
  `mult_usd` decimal(12,10) default NULL,
  `temp_booking` int(11) default NULL,
  `quote` enum('1','0') default '0',
  `reason_for_discount` text,
  `issue_no` varchar(20) default NULL,
  `card_start_date` date default NULL,
  `car_price` decimal(10,2) NOT NULL default '0.00',
  `discount` decimal(10,2) NOT NULL default '0.00',
  `car_profit` decimal(10,2) NOT NULL default '0.00',
  `extra_price_total` decimal(8,2) default NULL,
  `extra_price_local` decimal(8,2) default NULL,
  `extra_profit` decimal(8,2) default NULL,
  `credit_card_charge` decimal(8,2) default NULL,
  `drv_fee` decimal(8,2) default NULL,
  `drop_off_fee` decimal(8,2) NOT NULL default '0.00',
  `origin` varchar(40) NOT NULL default '',
  `version` varchar(5) NOT NULL default '',
  `exchange_rate` decimal(17,5) NOT NULL default '0.00000',
  `bank_status` tinyint(1) NOT NULL default '0',
  `bank_status_text` text NOT NULL,
  `money_taken` decimal(8,2) default NULL,
  `supplier_paid` tinyint(1) NOT NULL default '0',
  `extra_deposit` decimal(8,2) NOT NULL default '0.00',
  `car_balance` decimal(6,2) default NULL,
  `balance` decimal(6,2) default NULL,
  `supinfo` text NOT NULL,
  `money_moved_now` decimal(8,2) default NULL,
  `payment_date` datetime default NULL,
  `discount_type` tinyint(1) NOT NULL default '1',
  `car_price_net` decimal(8,2) default NULL,
  `extra_price_net` decimal(6,2) default NULL,
  `bank` varchar(10) default NULL,
  `xml_rq` tinyint(4) default '0',
  `affiliate_id` mediumint(8) unsigned default NULL,
  `commission` int(11) default NULL,
  `deposit_mindays` smallint(5) unsigned default '0',
  `balance_paydays` smallint(5) unsigned default '0',
  `is_deposit` tinyint(1) NOT NULL default '0',
  `xml_status` tinyint(4) NOT NULL default '0',
  `xml_msg` varchar(254) default NULL,
  `xml_ref` varchar(20) default NULL,
  `xml_fail_count` tinyint(4) default '0',
  `vehicle_type` int(11) NOT NULL,
  `xml_your_ref` varchar(13) NOT NULL,
  `rate_code` varchar(50) default '',
  `real_name` varchar(50) default NULL,
  `company_name` varchar(64) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `reserv_num` (`reserv_num`),
  KEY `pick_up_time` (`pick_up_time`),
  KEY `drop_off_time` (`drop_off_time`),
  KEY `lastmodified` (`lastmodified`),
  KEY `lastname` (`lastname`),
  KEY `car_id` (`car_id`),
  KEY `pick_up_loc` (`pick_up_loc`),
  KEY `email` (`email`),
  KEY `payment_date` (`payment_date`),
  KEY `quote` (`quote`),
  KEY `commission` (`commission`),
  KEY `first_date` (`first_date`),
  KEY `version_first_date_pick_up_loc` (`version`,`first_date`,`pick_up_loc`),
  KEY `reserv_num_first_date_pick_up_loc` (`reserv_num`,`first_date`,`pick_up_loc`),
  KEY `agent_id` (`agent_id`),
  KEY `archive_first_date` (`archive`,`first_date`),
  KEY `state2` (`state2`),
  KEY `mfc_first_date_pick_up_loc` (`mfc`,`first_date`,`pick_up_loc`)
) ENGINE=InnoDB AUTO_INCREMENT=5774245 DEFAULT CHARSET=utf8;

Suggested fix:
My workaround was to create the view on each master then on each slave and issue a sql skip on each machine.

From what I could determine some kind of parse error takes place after the AS word.

Other things I tried were to create the view using the output of SHOW CREATE VIEW on the master then paste this directly into a terminal to work around any character encoding problems. Each failed in the same way.
Except when I inadvertently missed the space in the SELECT statement and ended up issuing a CREATE VIEW AS SELECT`id` AS `id`. Then the binary log contained this:

# at 115782716
#090327 11:55:36 server id 3  end_log_pos 115787611     Query   thread_id=12217427      exec_time=0
error_code=0
SET TIMESTAMP=1238154936/*!*/;
SET @@session.auto_increment_increment=5, @@session.auto_increment_offset=3/*!*/;
CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`mysql`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS ▒▒o4@^@^@▒^F▒4+^@^@^@`b`.`id` AS `id`,`titan1`.`b`.`title` AS `title`,`titan1`.`b`.`firstname` AS `firstna
me`,`titan1`.`b`.`lastname` AS `lastname`,

etc.
[27 Mar 2009 13:42] Valeriy Kravchuk
Thank you for the problem report. Previous bug just had not got feedback I asked about. Anyway, I can not repeat with with recent 5.0.80. This is what I get in the binary log:

/*!*/;
# at 5616
#090327 15:37:57 server id 1  end_log_pos 10271 	Query	thread_id=3	exec_time=0	error_code=0
SET TIMESTAMP=1238161077/*!*/;
CREATE OR REPLACE ALGORITHM=MERGE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `b_subset` AS select `test`.`b`.`id` AS `id`,`test`.`b`.`title` AS `title`,`test`.`b`.`firstname` AS `firstname`,`test`.`b`.`lastname` AS `lastname`,`test`.`b`.`cardholder` AS `cardholder`,`test`.`b`.`address` AS `address`,`test`.`b`.`city` AS `city`,`test`.`b`.`country` AS `country`,`test`.`b`.`state_province` AS `state_province`,`test`.`b`.`email` AS `email`,`test`.`b`.`phone` AS `phone`,`test`.`b`.`fax` AS `fax`,`test`.`b`.`payment` AS `payment`,`test`.`b`.`card_expire` AS `card_expire`,`test`.`b`.`card_num` AS `card_num`,`test`.`b`.`card_cvv2` AS `card_cvv2`,`test`.`b`.`card_ok` AS `card_ok`,`test`.`b`.`book_date` AS `book_date`,`test`.`b`.`first_date` AS `first_date`,`test`.`b`.`pick_up_loc` AS `pick_up_loc`,`test`.`b`.`drop_off_loc` AS `drop_off_loc`,`test`.`b`.`pick_up_time` AS `pick_up_time`,`test`.`b`.`drop_off_time` AS `drop_off_time`,`test`.`b`.`birth` AS `birth`,`test`.`b`.`zip` AS `zip`,`test`.`b`.`airline` AS `airline`,`test`.`b`.`flight_no` AS `flight_no`,`test`.`b`.`info` AS `info`,`test`.`b`.`reserv_num` AS `reserv_num`,`test`.`b`.`car_id` AS `car_id`,`test`.`b`.`deposit` AS `deposit`,`test`.`b`.`need_to_pay` AS `need_to_pay`,`test`.`b`.`mfc` AS `mfc`,`test`.`b`.`cga` AS `cga`,`test`.`b`.`crf` AS `crf`,`test`.`b`.`state` AS `state`,`test`.`b`.`state2` AS `state2`,`test`.`b`.`modify` AS `modify`,`test`.`b`.`modify2` AS `modify2`,`test`.`b`.`st` AS `st`,`test`.`b`.`extra_id` AS `extra_id`,`test`.`b`.`lastmodified` AS `lastmodified`,`test`.`b`.`lastcancelled` AS `lastcancelled`,`test`.`b`.`partner_comments` AS `partner_comments`,`test`.`b`.`advice` AS `advice`,`test`.`b`.`archive` AS `archive`,`test`.`b`.`cur` AS `cur`,`test`.`b`.`dest` AS `dest`,`test`.`b`.`pick_up_service` AS `pick_up_service`,`test`.`b`.`drop_off_service` AS `drop_off_service`,`test`.`b`.`airline_pick` AS `airline_pick`,`test`.`b`.`airline_drop` AS `airline_drop`,`test`.`b`.`flight_drop` AS `flight_drop`,`test`.`b`.`flight_pick` AS `flight_pick`,`test`.`b`.`discount_code` AS `discount_code`,`test`.`b`.`age` AS `age`,`test`.`b`.`insurance` AS `insurance`,`test`.`b`.`pick_info` AS `pick_info`,`test`.`b`.`drop_info` AS `drop_info`,`test`.`b`.`broker_code` AS `broker_code`,`test`.`b`.`add_driver_age` AS `add_driver_age`,`test`.`b`.`lang` AS `lang`,`test`.`b`.`agent_id` AS `agent_id`,`test`.`b`.`voucher_type` AS `voucher_type`,`test`.`b`.`cancelled_by` AS `cancelled_by`,`test`.`b`.`pnref` AS `pnref`,`test`.`b`.`bonus_id` AS `bonus_id`,`test`.`b`.`mult_usd` AS `mult_usd`,`test`.`b`.`temp_booking` AS `temp_booking`,`test`.`b`.`quote` AS `quote`,`test`.`b`.`reason_for_discount` AS `reason_for_discount`,`test`.`b`.`issue_no` AS `issue_no`,`test`.`b`.`card_start_date` AS `card_start_date`,`test`.`b`.`car_price` AS `car_price`,`test`.`b`.`discount` AS `discount`,`test`.`b`.`car_profit` AS `car_profit`,`test`.`b`.`extra_price_total` AS `extra_price_total`,`test`.`b`.`extra_price_local` AS `extra_price_local`,`test`.`b`.`extra_profit` AS `extra_profit`,`test`.`b`.`credit_card_charge` AS `credit_card_charge`,`test`.`b`.`drv_fee` AS `drv_fee`,`test`.`b`.`drop_off_fee` AS `drop_off_fee`,`test`.`b`.`origin` AS `origin`,`test`.`b`.`version` AS `version`,`test`.`b`.`exchange_rate` AS `exchange_rate`,`test`.`b`.`bank_status` AS `bank_status`,`test`.`b`.`bank_status_text` AS `bank_status_text`,`test`.`b`.`money_taken` AS `money_taken`,`test`.`b`.`supplier_paid` AS `supplier_paid`,`test`.`b`.`extra_deposit` AS `extra_deposit`,`test`.`b`.`car_balance` AS `car_balance`,`test`.`b`.`balance` AS `balance`,`test`.`b`.`supinfo` AS `supinfo`,`test`.`b`.`money_moved_now` AS `money_moved_now`,`test`.`b`.`payment_date` AS `payment_date`,`test`.`b`.`discount_type` AS `discount_type`,`test`.`b`.`car_price_net` AS `car_price_net`,`test`.`b`.`extra_price_net` AS `extra_price_net`,`test`.`b`.`bank` AS `bank`,`test`.`b`.`xml_rq` AS `xml_rq`,`test`.`b`.`affiliate_id` AS `affiliate_id`,`test`.`b`.`commission` AS `commission`,`test`.`b`.`deposit_mindays` AS `deposit_mindays`,`test`.`b`.`balance_paydays` AS `balance_paydays`,`test`.`b`.`is_deposit` AS `is_deposit`,`test`.`b`.`xml_status` AS `xml_status`,`test`.`b`.`xml_msg` AS `xml_msg`,`test`.`b`.`xml_ref` AS `xml_ref`,`test`.`b`.`xml_fail_count` AS `xml_fail_count`,`test`.`b`.`vehicle_type` AS `vehicle_type`,`test`.`b`.`xml_your_ref` AS `xml_your_ref`,`test`.`b`.`rate_code` AS `rate_code`,`test`.`b`.`real_name` AS `real_name`,`test`.`b`.`company_name` AS `company_name` from `test`.`b` where (year(`test`.`b`.`first_date`) > 2008)
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

So, please, try to repeat with a newer version, 5.0.77 at least.
[27 Mar 2009 18:32] MySQL Verification Team
my best guess is this is another manifestation of bug #39040 which is already fixed.
[9 Apr 2009 11:25] Andy Pritchard
Upgrading to 5.0.77 resolves this.

Thank you for your help.
[13 Apr 2009 21:23] Sveta Smirnova
Thank you for the feedback.

Closed as "Can't repeat" because last comment.