mirror of
https://github.com/MariaDB/server.git
synced 2025-11-15 09:02:33 +03:00
This patch adds the ability to store extra field metadata in the table map event. This data can include pack_length() or field_lenght() for fields such as CHAR or VARCHAR enabling developers to add code that can check for compatibilty between master and slave columns. More importantly, the extra field metadata can be used to store data from the master correctly should a VARCHAR field on the master be <= 255 bytes while the same field on the slave is > 255 bytes. ' The patch also includes the needed changes to unpack to ensure that data which is smaller on the master can be unpacked correctly on the slave.
33 lines
1.3 KiB
Plaintext
33 lines
1.3 KiB
Plaintext
# This is a wrapper for binlog.test so that the same test case can be used
|
|
# For both statement and row based bin logs 9/19/2005 [jbm]
|
|
|
|
-- source include/have_binlog_format_row.inc
|
|
|
|
# Bug#18326: Do not lock table for writing during prepare of statement
|
|
# The use of the ps protocol causes extra table maps in the binlog, so
|
|
# we disable the ps-protocol for this statement.
|
|
--disable_ps_protocol
|
|
|
|
-- source extra/binlog_tests/mix_innodb_myisam_binlog.test
|
|
|
|
--enable_ps_protocol
|
|
|
|
# This piece below cannot be put into
|
|
# extra/binlog_tests/mix_innodb_myisam_binlog.test
|
|
# because the argument of --start-position differs between statement-
|
|
# and row-based (and "eval --exec" doesn't work).
|
|
# we check that the error code of the "ROLLBACK" event is 0 and not
|
|
# ER_SERVER_SHUTDOWN (i.e. disconnection just rolls back transaction
|
|
# and does not make slave to stop)
|
|
flush logs;
|
|
--exec $MYSQL_BINLOG --start-position=524 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
eval select
|
|
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
|
|
is not null;
|
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
|
eval select
|
|
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
|
|
@a not like "%#%error_code=%error_code=%";
|
|
drop table t1, t2;
|