# # misc binlogging tests that do not require a slave running # -- source include/have_log_bin.inc -- source include/not_embedded.inc -- source include/have_innodb.inc --disable_warnings drop table if exists t1, t2; --enable_warnings reset master; create table t1 (a int) engine=innodb; create table t2 (a int) engine=innodb; begin; insert t1 values (5); commit; begin; insert t2 values (5); commit; # first COMMIT must be Query_log_event, second - Xid_log_event --replace_column 2 # 5 # --replace_regex /\/\* xid=.* \*\//\/* XID *\// show binlog events from 98; drop table t1,t2; # # binlog rotation after one big transaction # reset master; let $1=100; create table t1 (n int) engine=innodb; begin; --disable_query_log while ($1) { eval insert into t1 values($1 + 4); dec $1; } --enable_query_log commit; drop table t1; --replace_column 2 # 5 # --replace_regex /\/\* xid=.* \*\//\/* XID *\// show binlog events in 'master-bin.000001' from 98; --replace_column 2 # 5 # show binlog events in 'master-bin.000002' from 98; # # Bug#22540 - Incorrect value in column End_log_pos of # SHOW BINLOG EVENTS using InnoDB # # the following tests will show that certain queries now return # absolute offsets (from binlog start, rather than relative to # the beginning of the current transaction). under what # conditions it should be allowed / is sensible to put the # slider into the middle of a transaction is not our concern # here; we just guarantee that if and when it's done, the # user has valid offsets to use. if the setter function still # wants to throw a "positioning into middle of transaction" # warning, that's its prerogative and handled elsewhere. set @ac = @@autocommit; # first show this to work for SHOW BINLOG EVENTS set autocommit= 0; reset master; create table t1(n int) engine=innodb; begin; insert into t1 values (1); insert into t1 values (2); insert into t1 values (3); commit; drop table t1; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; # now show that nothing breaks if we need to read from the cache more # than once, resulting in split event-headers set @bcs = @@binlog_cache_size; set global binlog_cache_size=4096; reset master; create table t1 (a int) engine=innodb; let $1=400; disable_query_log; begin; while ($1) { eval insert into t1 values( $1 ); dec $1; } commit; enable_query_log; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; drop table t1; set global binlog_cache_size=@bcs; set session autocommit = @ac; # # Bug#33798: prepared statements improperly handle large unsigned ints # --disable_warnings drop table if exists t1; --enable_warnings reset master; create table t1 (a bigint unsigned, b bigint(20) unsigned); prepare stmt from "insert into t1 values (?,?)"; set @a= 9999999999999999; set @b= 14632475938453979136; execute stmt using @a, @b; deallocate prepare stmt; drop table t1; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; --echo End of 5.0 tests