Hi Andrei!
Just printing the field and not the table in the error message will make
it a problem to identify exactly what field that is the problem. Please
add the table name (and the database name) to the error message.
Just my few cents,
Mats Kindahl
Andrei Elkin wrote:
> Below is the list of changes that have just been committed into a local
> 5.1 repository of aelkin. When aelkin does a push these changes
> will be propagated to the main repository and, within 24 hours after the
> push, to the public repository.
> For information on how to access the public repository
> see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
>
> ChangeSet@stripped, 2008-02-28 15:03:26+02:00, aelkin@mysql1000.(none) +3 -0
> Bug #22234 Extra Slave Col: Slave should stop on Error Field `d` of table
>
> There was a failure in that show slave status displayed a wrong message
> when slave stopped at processing a row event inserting to a default-less
> column.
>
> The problem seem to have ceased after recent fixes in rbr code.
> However, the test was not updated to carry testing of the case commented-out.
>
> Uncommenting and editing the test.
> Notice, Bug#23907 is most probably a duplicate of this one.
>
> mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test@stripped, 2008-02-28 15:03:24+02:00,
> aelkin@mysql1000.(none) +26 -33
> uncommenting the test that previously failed.
>
> mysql-test/suite/rpl/r/rpl_extraCol_innodb.result@stripped, 2008-02-28 15:03:24+02:00,
> aelkin@mysql1000.(none) +56 -0
> results changed due to the correct expected error message of an added test
> is displayed.
>
> mysql-test/suite/rpl/r/rpl_extraCol_myisam.result@stripped, 2008-02-28 15:03:24+02:00,
> aelkin@mysql1000.(none) +56 -0
> results changed to reflect the test changes
>
> diff -Nrup a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
> b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
> --- a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test 2007-10-31 21:00:09 +02:00
> +++ b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test 2008-02-28 15:03:24 +02:00
> @@ -403,45 +403,38 @@ sync_slave_with_master;
> # added columns do not have default values#
> # Expect: Proper error message #
> ###########################################
> -# Commented out due to Bug #23907 Extra Slave Col is not
> -# erroring on extra col with no default values.
> +# Bug#22234, Bug#23907 Extra Slave Col is not
> +# erroring on extra col with no default values.
> ########################################################
> #--echo *** Create t9 on slave ***
> -#STOP SLAVE;
> -#RESET SLAVE;
> -#eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
> -# d TIMESTAMP,
> -# e INT DEFAULT '1')ENGINE=$engine_type;
> +STOP SLAVE;
> +RESET SLAVE;
> +eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
> + d TIMESTAMP,
> + e INT NOT NULL) ENGINE=$engine_type;
>
> -#--echo *** Create t9 on Master ***
> -#connection master;
> -#eval CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
> -# ) ENGINE=$engine_type;
> -#RESET MASTER;
> +--echo *** Create t9 on Master ***
> +connection master;
> +eval CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
> + ) ENGINE=$engine_type;
> +RESET MASTER;
>
> -#--echo *** Start Slave ***
> -#connection slave;
> -#START SLAVE;
> +--echo *** Start Slave ***
> +connection slave;
> +START SLAVE;
>
> -#--echo *** Master Data Insert ***
> -#connection master;
> -#set @b1 = 'b1b1b1b1';
> -#set @b1 = concat(@b1,@b1);
> -#INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
> +--echo *** Master Data Insert ***
> +connection master;
> +set @b1 = 'b1b1b1b1';
> +set @b1 = concat(@b1,@b1);
> +INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
>
> -#--echo *************************************************
> -#--echo ** Currently giving wrong error see bug#22234 ***
> -#--echo *************************************************
> -#sync_slave_with_master;
> -#connection slave;
> -
> -#--echo *** Select from T9 ***
> -#--source include/wait_for_slave_sql_to_stop.inc
> -#--replace_result $MASTER_MYPORT MASTER_PORT
> -#--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
> -#--query_vertical SHOW SLAVE STATUS
> -#SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
> -#START SLAVE;
> +--source include/wait_for_slave_sql_to_stop.inc
> +--replace_result $MASTER_MYPORT MASTER_PORT
> +--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
> +--query_vertical SHOW SLAVE STATUS
> +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
> +START SLAVE;
>
> #--echo *** Drop t9 ***
> #connection master;
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
> b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
> --- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result 2007-11-21 22:09:20 +02:00
> +++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result 2008-02-28 15:03:24 +02:00
> @@ -399,6 +399,62 @@ set @b1 = concat(@b1,@b1);
> INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
> *** Drop t8 ***
> DROP TABLE t8;
> +STOP SLAVE;
> +RESET SLAVE;
> +CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
> +d TIMESTAMP,
> +e INT NOT NULL) ENGINE='InnoDB';
> +*** Create t9 on Master ***
> +CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
> +) ENGINE='InnoDB';
> +RESET MASTER;
> +*** Start Slave ***
> +START SLAVE;
> +*** Master Data Insert ***
> +set @b1 = 'b1b1b1b1';
> +set @b1 = concat(@b1,@b1);
> +INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
> +SHOW SLAVE STATUS;
> +Slave_IO_State #
> +Master_Host 127.0.0.1
> +Master_User root
> +Master_Port #
> +Connect_Retry 1
> +Master_Log_File master-bin.000001
> +Read_Master_Log_Pos #
> +Relay_Log_File #
> +Relay_Log_Pos #
> +Relay_Master_Log_File master-bin.000001
> +Slave_IO_Running Yes
> +Slave_SQL_Running No
> +Replicate_Do_DB
> +Replicate_Ignore_DB
> +Replicate_Do_Table
> +Replicate_Ignore_Table #
> +Replicate_Wild_Do_Table
> +Replicate_Wild_Ignore_Table
> +Last_Errno 1364
> +Last_Error Field 'e' doesn't have a default value
> +Skip_Counter 0
> +Exec_Master_Log_Pos #
> +Relay_Log_Space #
> +Until_Condition None
> +Until_Log_File
> +Until_Log_Pos 0
> +Master_SSL_Allowed No
> +Master_SSL_CA_File
> +Master_SSL_CA_Path
> +Master_SSL_Cert
> +Master_SSL_Cipher
> +Master_SSL_Key
> +Seconds_Behind_Master #
> +Master_SSL_Verify_Server_Cert No
> +Last_IO_Errno #
> +Last_IO_Error #
> +Last_SQL_Errno 1364
> +Last_SQL_Error Field 'e' doesn't have a default value
> +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
> +START SLAVE;
> *** Create t10 on slave ***
> STOP SLAVE;
> RESET SLAVE;
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
> b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
> --- a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result 2007-11-21 22:09:20 +02:00
> +++ b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result 2008-02-28 15:03:24 +02:00
> @@ -399,6 +399,62 @@ set @b1 = concat(@b1,@b1);
> INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
> *** Drop t8 ***
> DROP TABLE t8;
> +STOP SLAVE;
> +RESET SLAVE;
> +CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
> +d TIMESTAMP,
> +e INT NOT NULL) ENGINE='MyISAM';
> +*** Create t9 on Master ***
> +CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
> +) ENGINE='MyISAM';
> +RESET MASTER;
> +*** Start Slave ***
> +START SLAVE;
> +*** Master Data Insert ***
> +set @b1 = 'b1b1b1b1';
> +set @b1 = concat(@b1,@b1);
> +INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
> +SHOW SLAVE STATUS;
> +Slave_IO_State #
> +Master_Host 127.0.0.1
> +Master_User root
> +Master_Port #
> +Connect_Retry 1
> +Master_Log_File master-bin.000001
> +Read_Master_Log_Pos #
> +Relay_Log_File #
> +Relay_Log_Pos #
> +Relay_Master_Log_File master-bin.000001
> +Slave_IO_Running Yes
> +Slave_SQL_Running No
> +Replicate_Do_DB
> +Replicate_Ignore_DB
> +Replicate_Do_Table
> +Replicate_Ignore_Table #
> +Replicate_Wild_Do_Table
> +Replicate_Wild_Ignore_Table
> +Last_Errno 1364
> +Last_Error Field 'e' doesn't have a default value
> +Skip_Counter 0
> +Exec_Master_Log_Pos #
> +Relay_Log_Space #
> +Until_Condition None
> +Until_Log_File
> +Until_Log_Pos 0
> +Master_SSL_Allowed No
> +Master_SSL_CA_File
> +Master_SSL_CA_Path
> +Master_SSL_Cert
> +Master_SSL_Cipher
> +Master_SSL_Key
> +Seconds_Behind_Master #
> +Master_SSL_Verify_Server_Cert No
> +Last_IO_Errno #
> +Last_IO_Error #
> +Last_SQL_Errno 1364
> +Last_SQL_Error Field 'e' doesn't have a default value
> +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
> +START SLAVE;
> *** Create t10 on slave ***
> STOP SLAVE;
> RESET SLAVE;
>
>
--
Mats Kindahl
Lead Software Developer
Replication Team
MySQL AB, www.mysql.com