Commit 1034677f authored by serg@serg.mylan's avatar serg@serg.mylan

XA (not completely polished out yet)

parent 184cbf6d
...@@ -687,8 +687,8 @@ extern pthread_t shutdown_th, main_th, signal_th; ...@@ -687,8 +687,8 @@ extern pthread_t shutdown_th, main_th, signal_th;
#define thread_safe_add(V,C,L) (pthread_mutex_lock((L)), (V)+=(C), pthread_mutex_unlock((L))) #define thread_safe_add(V,C,L) (pthread_mutex_lock((L)), (V)+=(C), pthread_mutex_unlock((L)))
#define thread_safe_sub(V,C,L) \ #define thread_safe_sub(V,C,L) \
(pthread_mutex_lock((L)), (V)-=(C), pthread_mutex_unlock((L))) (pthread_mutex_lock((L)), (V)-=(C), pthread_mutex_unlock((L)))
#if defined (__GNUC__) || defined (__cplusplus) #ifdef __cplusplus
static inline bool thread_safe_dec_and_test(ulong V, pthread_mutex_t *L) static inline bool thread_safe_dec_and_test(ulong &V, pthread_mutex_t *L)
{ {
ulong res; ulong res;
pthread_mutex_lock(L); pthread_mutex_lock(L);
......
...@@ -325,7 +325,8 @@ trx_is_active( ...@@ -325,7 +325,8 @@ trx_is_active(
} }
trx = trx_get_on_id(trx_id); trx = trx_get_on_id(trx_id);
if (trx && (trx->conc_state == TRX_ACTIVE)) { if (trx && (trx->conc_state == TRX_ACTIVE ||
trx->conc_state == TRX_PREPARED)) {
return(TRUE); return(TRUE);
} }
......
...@@ -153,7 +153,8 @@ read_view_open_now( ...@@ -153,7 +153,8 @@ read_view_open_now(
/* No active transaction should be visible, except cr_trx */ /* No active transaction should be visible, except cr_trx */
while (trx) { while (trx) {
if (trx != cr_trx && trx->conc_state == TRX_ACTIVE) { if (trx != cr_trx && (trx->conc_state == TRX_ACTIVE ||
trx->conc_state == TRX_PREPARED)) {
read_view_set_nth_trx_id(view, n, trx->id); read_view_set_nth_trx_id(view, n, trx->id);
......
...@@ -1615,6 +1615,9 @@ trx_print( ...@@ -1615,6 +1615,9 @@ trx_print(
fprintf(f, ", ACTIVE %lu sec", fprintf(f, ", ACTIVE %lu sec",
(ulong)difftime(time(NULL), trx->start_time)); (ulong)difftime(time(NULL), trx->start_time));
break; break;
case TRX_PREPARED:
fputs(", PREPARED", f);
break;
case TRX_COMMITTED_IN_MEMORY: case TRX_COMMITTED_IN_MEMORY:
fputs(", COMMITTED IN MEMORY", f); fputs(", COMMITTED IN MEMORY", f);
break; break;
......
...@@ -77,6 +77,7 @@ explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' ...@@ -77,6 +77,7 @@ explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a '
alter table t1 add unique(v); alter table t1 add unique(v);
alter table t1 add key(v); alter table t1 add key(v);
select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a'; select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';
--replace_column 6 # 9 #
explain select * from t1 where v='a'; explain select * from t1 where v='a';
# GROUP BY # GROUP BY
......
...@@ -523,10 +523,10 @@ create table t2 (c char(30)) charset=ucs2; ...@@ -523,10 +523,10 @@ create table t2 (c char(30)) charset=ucs2;
set @v=convert('abc' using ucs2); set @v=convert('abc' using ucs2);
reset master; reset master;
insert into t2 values (@v); insert into t2 values (@v);
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 User var 1 135 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci master-bin.000001 96 User var 1 136 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
master-bin.000001 135 Query 1 218 use `test`; insert into t2 values (@v) master-bin.000001 136 Query 1 219 use `test`; insert into t2 values (@v)
/*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/;
SET @`v`:=_ucs2 0x006100620063 COLLATE ucs2_general_ci; SET @`v`:=_ucs2 0x006100620063 COLLATE ucs2_general_ci;
use test; use test;
......
...@@ -10,9 +10,9 @@ get_lock("a",10) ...@@ -10,9 +10,9 @@ get_lock("a",10)
1 1
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 206 create database `drop-temp+table-test` master-bin.000001 96 Query 1 207 create database `drop-temp+table-test`
master-bin.000001 206 Query 1 322 use `drop-temp+table-test`; create temporary table `table:name` (a int) master-bin.000001 207 Query 1 323 use `drop-temp+table-test`; create temporary table `table:name` (a int)
master-bin.000001 322 Query 1 473 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name` master-bin.000001 323 Query 1 474 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
master-bin.000001 473 Query 1 566 use `drop-temp+table-test`; DO RELEASE_LOCK("a") master-bin.000001 474 Query 1 567 use `drop-temp+table-test`; DO RELEASE_LOCK("a")
drop database `drop-temp+table-test`; drop database `drop-temp+table-test`;
...@@ -74,8 +74,8 @@ insert into t1 select * from t2; ...@@ -74,8 +74,8 @@ insert into t1 select * from t2;
ERROR 23000: Duplicate entry '2' for key 1 ERROR 23000: Duplicate entry '2' for key 1
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 183 use `test`; insert into t1 select * from t2 master-bin.000001 96 Query 1 184 use `test`; insert into t1 select * from t2
select * from t1; select * from t1;
a a
1 1
...@@ -88,7 +88,7 @@ create table t2(unique(a)) select a from t1; ...@@ -88,7 +88,7 @@ create table t2(unique(a)) select a from t1;
ERROR 23000: Duplicate entry '1' for key 1 ERROR 23000: Duplicate entry '1' for key 1
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
drop table t1; drop table t1;
create table t1 (a int not null); create table t1 (a int not null);
create table t2 (a int not null); create table t2 (a int not null);
......
...@@ -6,12 +6,13 @@ begin; ...@@ -6,12 +6,13 @@ begin;
insert into t1 values(1); insert into t1 values(1);
insert into t2 select * from t1; insert into t2 select * from t1;
commit; commit;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(1) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(1)
master-bin.000001 238 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 239 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 326 Query 1 # use `test`; COMMIT master-bin.000001 327 Xid 1 # xid=7
master-bin.000001 350 Query 1 # use `test`; COMMIT
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
...@@ -21,12 +22,12 @@ insert into t2 select * from t1; ...@@ -21,12 +22,12 @@ insert into t2 select * from t1;
rollback; rollback;
Warnings: Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(2) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(2)
master-bin.000001 238 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 239 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 326 Query 1 # use `test`; ROLLBACK master-bin.000001 327 Query 1 # use `test`; ROLLBACK
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
...@@ -39,15 +40,16 @@ rollback to savepoint my_savepoint; ...@@ -39,15 +40,16 @@ rollback to savepoint my_savepoint;
Warnings: Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back Warning 1196 Some non-transactional changed tables couldn't be rolled back
commit; commit;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(3) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(3)
master-bin.000001 238 Query 1 # use `test`; savepoint my_savepoint master-bin.000001 239 Query 1 # use `test`; savepoint my_savepoint
master-bin.000001 317 Query 1 # use `test`; insert into t1 values(4) master-bin.000001 318 Query 1 # use `test`; insert into t1 values(4)
master-bin.000001 398 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 399 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 486 Query 1 # use `test`; rollback to savepoint my_savepoint master-bin.000001 487 Query 1 # use `test`; rollback to savepoint my_savepoint
master-bin.000001 577 Query 1 # use `test`; COMMIT master-bin.000001 578 Xid 1 # xid=24
master-bin.000001 601 Query 1 # use `test`; COMMIT
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
...@@ -65,16 +67,17 @@ select a from t1 order by a; ...@@ -65,16 +67,17 @@ select a from t1 order by a;
a a
5 5
7 7
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(5) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(5)
master-bin.000001 238 Query 1 # use `test`; savepoint my_savepoint master-bin.000001 239 Query 1 # use `test`; savepoint my_savepoint
master-bin.000001 317 Query 1 # use `test`; insert into t1 values(6) master-bin.000001 318 Query 1 # use `test`; insert into t1 values(6)
master-bin.000001 398 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 399 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 486 Query 1 # use `test`; rollback to savepoint my_savepoint master-bin.000001 487 Query 1 # use `test`; rollback to savepoint my_savepoint
master-bin.000001 577 Query 1 # use `test`; insert into t1 values(7) master-bin.000001 578 Query 1 # use `test`; insert into t1 values(7)
master-bin.000001 658 Query 1 # use `test`; COMMIT master-bin.000001 659 Xid 1 # xid=36
master-bin.000001 682 Query 1 # use `test`; COMMIT
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
...@@ -87,40 +90,41 @@ insert into t2 select * from t1; ...@@ -87,40 +90,41 @@ insert into t2 select * from t1;
select get_lock("a",10); select get_lock("a",10);
get_lock("a",10) get_lock("a",10)
1 1
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(8) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(8)
master-bin.000001 238 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 239 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 326 Query 1 # use `test`; ROLLBACK master-bin.000001 327 Query 1 # use `test`; ROLLBACK
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
insert into t1 values(9); insert into t1 values(9);
insert into t2 select * from t1; insert into t2 select * from t1;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(9) master-bin.000001 96 Query 1 # use `test`; insert into t1 values(9)
master-bin.000001 176 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 177 Query 1 # use `test`; insert into t2 select * from t1
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
insert into t1 values(10); insert into t1 values(10);
begin; begin;
insert into t2 select * from t1; insert into t2 select * from t1;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(10) master-bin.000001 96 Query 1 # use `test`; insert into t1 values(10)
master-bin.000001 177 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 178 Query 1 # use `test`; insert into t2 select * from t1
insert into t1 values(11); insert into t1 values(11);
commit; commit;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(10) master-bin.000001 96 Query 1 # use `test`; insert into t1 values(10)
master-bin.000001 177 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 178 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 265 Query 1 # use `test`; BEGIN master-bin.000001 266 Query 1 # use `test`; BEGIN
master-bin.000001 327 Query 1 # use `test`; insert into t1 values(11) master-bin.000001 328 Query 1 # use `test`; insert into t1 values(11)
master-bin.000001 409 Query 1 # use `test`; COMMIT master-bin.000001 410 Xid 1 # xid=67
master-bin.000001 433 Query 1 # use `test`; COMMIT
alter table t2 engine=INNODB; alter table t2 engine=INNODB;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -129,12 +133,13 @@ begin; ...@@ -129,12 +133,13 @@ begin;
insert into t1 values(12); insert into t1 values(12);
insert into t2 select * from t1; insert into t2 select * from t1;
commit; commit;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(12) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(12)
master-bin.000001 239 Query 1 # use `test`; insert into t2 select * from t1 master-bin.000001 240 Query 1 # use `test`; insert into t2 select * from t1
master-bin.000001 327 Query 1 # use `test`; COMMIT master-bin.000001 328 Xid 1 # xid=77
master-bin.000001 351 Query 1 # use `test`; COMMIT
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
...@@ -142,7 +147,7 @@ begin; ...@@ -142,7 +147,7 @@ begin;
insert into t1 values(13); insert into t1 values(13);
insert into t2 select * from t1; insert into t2 select * from t1;
rollback; rollback;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -154,11 +159,12 @@ insert into t1 values(15); ...@@ -154,11 +159,12 @@ insert into t1 values(15);
insert into t2 select * from t1; insert into t2 select * from t1;
rollback to savepoint my_savepoint; rollback to savepoint my_savepoint;
commit; commit;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(14) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(14)
master-bin.000001 239 Query 1 # use `test`; COMMIT master-bin.000001 240 Xid 1 # xid=93
master-bin.000001 263 Query 1 # use `test`; COMMIT
delete from t1; delete from t1;
delete from t2; delete from t2;
reset master; reset master;
...@@ -174,12 +180,13 @@ select a from t1 order by a; ...@@ -174,12 +180,13 @@ select a from t1 order by a;
a a
16 16
18 18
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 # use `test`; BEGIN master-bin.000001 96 Query 1 # use `test`; BEGIN
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(16) master-bin.000001 158 Query 1 # use `test`; insert into t1 values(16)
master-bin.000001 239 Query 1 # use `test`; insert into t1 values(18) master-bin.000001 240 Query 1 # use `test`; insert into t1 values(18)
master-bin.000001 321 Query 1 # use `test`; COMMIT master-bin.000001 322 Xid 1 # xid=104
master-bin.000001 345 Query 1 # use `test`; COMMIT
delete from t1; delete from t1;
delete from t2; delete from t2;
alter table t2 type=MyISAM; alter table t2 type=MyISAM;
......
...@@ -716,7 +716,7 @@ qq ...@@ -716,7 +716,7 @@ qq
*a *a*a * *a *a*a *
explain select * from t1 where v='a'; explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v,v_2 v_2 13 const 7 Using where 1 SIMPLE t1 ref v,v_2 # 13 const # Using where
select v,count(*) from t1 group by v limit 10; select v,count(*) from t1 group by v limit 10;
v count(*) v count(*)
a 1 a 1
......
reset master; reset master;
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 95 master-bin.000001 96
reset slave; reset slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
...@@ -17,7 +17,7 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File ...@@ -17,7 +17,7 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 7 master-bin.000001 95 # # master-bin.000001 Yes Yes 0 0 95 # None 0 No # # 127.0.0.1 root MASTER_PORT 7 master-bin.000001 96 # # master-bin.000001 Yes Yes 0 0 96 # None 0 No #
drop table if exists t1; drop table if exists t1;
create table t1 (n int); create table t1 (n int);
insert into t1 values (10),(45),(90); insert into t1 values (10),(45),(90);
......
...@@ -16,11 +16,11 @@ n ...@@ -16,11 +16,11 @@ n
1 1
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 355 # # master-bin.000001 No No 0 0 274 # None 0 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 356 # # master-bin.000001 No No 0 0 275 # None 0 No #
change master to master_user='root'; change master to master_user='root';
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 274 # # master-bin.000001 No No 0 0 274 # None 0 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 275 # # master-bin.000001 No No 0 0 275 # None 0 No #
select release_lock("a"); select release_lock("a");
release_lock("a") release_lock("a")
1 1
......
...@@ -103,7 +103,7 @@ a b ...@@ -103,7 +103,7 @@ a b
1 cp850_general_ci 1 cp850_general_ci
drop database mysqltest2; drop database mysqltest2;
drop database mysqltest3; drop database mysqltest3;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query 1 # drop database if exists mysqltest2 master-bin.000001 # Query 1 # drop database if exists mysqltest2
master-bin.000001 # Query 1 # drop database if exists mysqltest3 master-bin.000001 # Query 1 # drop database if exists mysqltest3
...@@ -200,8 +200,8 @@ hex(c1) hex(c2) ...@@ -200,8 +200,8 @@ hex(c1) hex(c2)
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
stop slave; stop slave;
delete from t1; delete from t1;
change master to master_log_pos=6809; change master to master_log_pos=6810;
start slave until master_log_file='master-bin.000001', master_log_pos=6967; start slave until master_log_file='master-bin.000001', master_log_pos=6968;
start slave; start slave;
select hex(c1), hex(c2) from t1; select hex(c1), hex(c2) from t1;
hex(c1) hex(c2) hex(c1) hex(c2)
......
...@@ -9,7 +9,7 @@ insert into t1 values (1),(1); ...@@ -9,7 +9,7 @@ insert into t1 values (1),(1);
ERROR 23000: Duplicate entry '1' for key 1 ERROR 23000: Duplicate entry '1' for key 1
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 273 # # master-bin.000001 Yes Yes test.t3,test.t1,test.t2 0 0 273 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 274 # # master-bin.000001 Yes Yes test.t3,test.t1,test.t2 0 0 274 # None 0 No #
show tables like 't1'; show tables like 't1';
Tables_in_test (t1) Tables_in_test (t1)
drop table t1; drop table t1;
...@@ -26,14 +26,14 @@ select (@id := id) - id from t3; ...@@ -26,14 +26,14 @@ select (@id := id) - id from t3;
0 0
kill @id; kill @id;
drop table t2,t3; drop table t2,t3;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 187 use `test`; create table t1 (a int primary key) master-bin.000001 96 Query 1 188 use `test`; create table t1 (a int primary key)
master-bin.000001 187 Query 1 273 use `test`; insert into t1 values (1),(1) master-bin.000001 188 Query 1 274 use `test`; insert into t1 values (1),(1)
master-bin.000001 273 Query 1 343 use `test`; drop table t1 master-bin.000001 274 Query 1 344 use `test`; drop table t1
master-bin.000001 343 Query 1 435 use `test`; create table t2 (a int primary key) master-bin.000001 344 Query 1 436 use `test`; create table t2 (a int primary key)
master-bin.000001 435 Query 1 516 use `test`; insert into t2 values(1) master-bin.000001 436 Query 1 517 use `test`; insert into t2 values(1)
master-bin.000001 516 Query 1 597 use `test`; create table t3 (id int) master-bin.000001 517 Query 1 598 use `test`; create table t3 (id int)
master-bin.000001 597 Query 1 692 use `test`; insert into t3 values(connection_id()) master-bin.000001 598 Query 1 693 use `test`; insert into t3 values(connection_id())
master-bin.000001 692 Query 1 805 use `test`; update t2 set a = a + 1 + get_lock('crash_lock%20C', 10) master-bin.000001 693 Query 1 806 use `test`; update t2 set a = a + 1 + get_lock('crash_lock%20C', 10)
master-bin.000001 805 Query 1 878 use `test`; drop table t2,t3 master-bin.000001 806 Query 1 879 use `test`; drop table t2,t3
...@@ -14,4 +14,4 @@ start slave; ...@@ -14,4 +14,4 @@ start slave;
flush logs; flush logs;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 199 # # slave-bin.000001 Yes Yes 0 0 199 # None 0 No # # 127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 200 # # slave-bin.000001 Yes Yes 0 0 200 # None 0 No #
...@@ -14,27 +14,27 @@ rename table t1 to t5, t2 to t1; ...@@ -14,27 +14,27 @@ rename table t1 to t5, t2 to t1;
flush no_write_to_binlog tables; flush no_write_to_binlog tables;
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: SERVER_VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 175 use `test`; create table t1 (a int) master-bin.000001 96 Query 1 176 use `test`; create table t1 (a int)
master-bin.000001 175 Query 1 258 use `test`; insert into t1 values (10) master-bin.000001 176 Query 1 259 use `test`; insert into t1 values (10)
master-bin.000001 258 Query 1 338 use `test`; create table t2 (a int) master-bin.000001 259 Query 1 339 use `test`; create table t2 (a int)
master-bin.000001 338 Query 1 441 use `test`; create table t3 (a int) engine=merge union(t1) master-bin.000001 339 Query 1 442 use `test`; create table t3 (a int) engine=merge union(t1)
master-bin.000001 441 Query 1 521 use `test`; create table t4 (a int) master-bin.000001 442 Query 1 522 use `test`; create table t4 (a int)
master-bin.000001 521 Query 1 609 use `test`; insert into t4 select * from t3 master-bin.000001 522 Query 1 610 use `test`; insert into t4 select * from t3
master-bin.000001 609 Query 1 697 use `test`; rename table t1 to t5, t2 to t1 master-bin.000001 610 Query 1 698 use `test`; rename table t1 to t5, t2 to t1
select * from t3; select * from t3;
a a
flush tables; flush tables;
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: SERVER_VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: SERVER_VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 175 use `test`; create table t1 (a int) master-bin.000001 96 Query 1 176 use `test`; create table t1 (a int)
master-bin.000001 175 Query 1 258 use `test`; insert into t1 values (10) master-bin.000001 176 Query 1 259 use `test`; insert into t1 values (10)
master-bin.000001 258 Query 1 338 use `test`; create table t2 (a int) master-bin.000001 259 Query 1 339 use `test`; create table t2 (a int)
master-bin.000001 338 Query 1 441 use `test`; create table t3 (a int) engine=merge union(t1) master-bin.000001 339 Query 1 442 use `test`; create table t3 (a int) engine=merge union(t1)
master-bin.000001 441 Query 1 521 use `test`; create table t4 (a int) master-bin.000001 442 Query 1 522 use `test`; create table t4 (a int)
master-bin.000001 521 Query 1 609 use `test`; insert into t4 select * from t3 master-bin.000001 522 Query 1 610 use `test`; insert into t4 select * from t3
master-bin.000001 609 Query 1 697 use `test`; rename table t1 to t5, t2 to t1 master-bin.000001 610 Query 1 698 use `test`; rename table t1 to t5, t2 to t1
master-bin.000001 697 Query 1 766 use `test`; flush tables master-bin.000001 698 Query 1 767 use `test`; flush tables
select * from t3; select * from t3;
a a
...@@ -22,7 +22,7 @@ day id category name ...@@ -22,7 +22,7 @@ day id category name
2003-03-22 2416 a bbbbb 2003-03-22 2416 a bbbbb
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
slave-bin.000001 1068 slave-bin.000001 1069
drop table t1; drop table t1;
drop table t2; drop table t2;
drop table t3; drop table t3;
...@@ -33,7 +33,7 @@ set global sql_slave_skip_counter=1; ...@@ -33,7 +33,7 @@ set global sql_slave_skip_counter=1;
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1503 # # master-bin.000001 Yes Yes 0 0 1503 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1504 # # master-bin.000001 Yes Yes 0 0 1504 # None 0 No #
set sql_log_bin=0; set sql_log_bin=0;
delete from t1; delete from t1;
set sql_log_bin=1; set sql_log_bin=1;
...@@ -43,7 +43,7 @@ change master to master_user='test'; ...@@ -43,7 +43,7 @@ change master to master_user='test';
change master to master_user='root'; change master to master_user='root';
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1611 # # master-bin.000001 No No 0 0 1611 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1612 # # master-bin.000001 No No 0 0 1612 # None 0 No #
set global sql_slave_skip_counter=1; set global sql_slave_skip_counter=1;
start slave; start slave;
set sql_log_bin=0; set sql_log_bin=0;
...@@ -64,5 +64,5 @@ terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by ...@@ -64,5 +64,5 @@ terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
ERROR 23000: Duplicate entry '2003-03-22' for key 1 ERROR 23000: Duplicate entry '2003-03-22' for key 1
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 529 master-bin.000001 530
drop table t2; drop table t2;
...@@ -10,8 +10,8 @@ create database mysqltest; ...@@ -10,8 +10,8 @@ create database mysqltest;
create table t1(a int, b int, unique(b)); create table t1(a int, b int, unique(b));
use mysqltest; use mysqltest;
load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 190 drop database if exists mysqltest master-bin.000001 96 Query 1 191 drop database if exists mysqltest
master-bin.000001 190 Query 1 277 create database mysqltest master-bin.000001 191 Query 1 278 create database mysqltest
drop database mysqltest; drop database mysqltest;
...@@ -10,5 +10,5 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; ...@@ -10,5 +10,5 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
select count(*) from t1; select count(*) from t1;
count(*) count(*)
2 2
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
...@@ -19,25 +19,25 @@ count(*) ...@@ -19,25 +19,25 @@ count(*)
drop table t1; drop table t1;
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key) master-bin.000001 96 Query 1 211 use `test`; create table t1(n int not null auto_increment primary key)
master-bin.000001 210 Intvar 1 238 INSERT_ID=1 master-bin.000001 211 Intvar 1 239 INSERT_ID=1
master-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL) master-bin.000001 239 Query 1 324 use `test`; insert into t1 values (NULL)
master-bin.000001 323 Query 1 393 use `test`; drop table t1 master-bin.000001 324 Query 1 394 use `test`; drop table t1
master-bin.000001 393 Query 1 490 use `test`; create table t1 (word char(20) not null) master-bin.000001 394 Query 1 491 use `test`; create table t1 (word char(20) not null)
master-bin.000001 490 Create_file 1 1160 db=test;table=t1;file_id=1;block_len=581 master-bin.000001 491 Create_file 1 1161 db=test;table=t1;file_id=1;block_len=581
master-bin.000001 1160 Exec_load 1 1183 ;file_id=1 master-bin.000001 1161 Exec_load 1 1184 ;file_id=1
master-bin.000001 1183 Query 1 1253 use `test`; drop table t1 master-bin.000001 1184 Query 1 1254 use `test`; drop table t1
show binlog events from 95 limit 1; show binlog events from 96 limit 1;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key) master-bin.000001 96 Query 1 211 use `test`; create table t1(n int not null auto_increment primary key)
show binlog events from 95 limit 2; show binlog events from 96 limit 2;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key) master-bin.000001 96 Query 1 211 use `test`; create table t1(n int not null auto_increment primary key)
master-bin.000001 210 Intvar 1 238 INSERT_ID=1 master-bin.000001 211 Intvar 1 239 INSERT_ID=1
show binlog events from 95 limit 2,1; show binlog events from 96 limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL) master-bin.000001 239 Query 1 324 use `test`; insert into t1 values (NULL)
flush logs; flush logs;
create table t5 (a int); create table t5 (a int);
drop table t5; drop table t5;
...@@ -49,24 +49,24 @@ insert into t1 values (1); ...@@ -49,24 +49,24 @@ insert into t1 values (1);
drop table t1; drop table t1;
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key) master-bin.000001 96 Query 1 211 use `test`; create table t1(n int not null auto_increment primary key)
master-bin.000001 210 Intvar 1 238 INSERT_ID=1 master-bin.000001 211 Intvar 1 239 INSERT_ID=1
master-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL) master-bin.000001 239 Query 1 324 use `test`; insert into t1 values (NULL)
master-bin.000001 323 Query 1 393 use `test`; drop table t1 master-bin.000001 324 Query 1 394 use `test`; drop table t1
master-bin.000001 393 Query 1 490 use `test`; create table t1 (word char(20) not null) master-bin.000001 394 Query 1 491 use `test`; create table t1 (word char(20) not null)
master-bin.000001 490 Create_file 1 1160 db=test;table=t1;file_id=1;block_len=581 master-bin.000001 491 Create_file 1 1161 db=test;table=t1;file_id=1;block_len=581
master-bin.000001 1160 Exec_load 1 1183 ;file_id=1 master-bin.000001 1161 Exec_load 1 1184 ;file_id=1
master-bin.000001 1183 Query 1 1253 use `test`; drop table t1 master-bin.000001 1184 Query 1 1254 use `test`; drop table t1
master-bin.000001 1253 Rotate 1 1297 master-bin.000002;pos=4 master-bin.000001 1254 Rotate 1 1298 master-bin.000002;pos=4
show binlog events in 'master-bin.000002'; show binlog events in 'master-bin.000002';
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000002 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000002 95 Query 1 175 use `test`; create table t5 (a int) master-bin.000002 96 Query 1 176 use `test`; create table t5 (a int)
master-bin.000002 175 Query 1 245 use `test`; drop table t5 master-bin.000002 176 Query 1 246 use `test`; drop table t5
master-bin.000002 245 Query 1 325 use `test`; create table t1 (n int) master-bin.000002 246 Query 1 326 use `test`; create table t1 (n int)
master-bin.000002 325 Query 1 407 use `test`; insert into t1 values (1) master-bin.000002 326 Query 1 408 use `test`; insert into t1 values (1)
master-bin.000002 407 Query 1 477 use `test`; drop table t1 master-bin.000002 408 Query 1 478 use `test`; drop table t1
show binary logs; show binary logs;
Log_name Log_name
master-bin.000001 master-bin.000001
...@@ -78,26 +78,26 @@ slave-bin.000001 ...@@ -78,26 +78,26 @@ slave-bin.000001
slave-bin.000002 slave-bin.000002
show binlog events in 'slave-bin.000001' from 4; show binlog events in 'slave-bin.000001' from 4;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000001 4 Format_desc 2 95 Server ver: VERSION, Binlog ver: 4 slave-bin.000001 4 Format_desc 2 96 Server ver: VERSION, Binlog ver: 4
slave-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key) slave-bin.000001 96 Query 1 211 use `test`; create table t1(n int not null auto_increment primary key)
slave-bin.000001 210 Intvar 1 238 INSERT_ID=1 slave-bin.000001 211 Intvar 1 239 INSERT_ID=1
slave-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL) slave-bin.000001 239 Query 1 324 use `test`; insert into t1 values (NULL)
slave-bin.000001 323 Query 1 393 use `test`; drop table t1 slave-bin.000001 324 Query 1 394 use `test`; drop table t1
slave-bin.000001 393 Query 1 490 use `test`; create table t1 (word char(20) not null) slave-bin.000001 394 Query 1 491 use `test`; create table t1 (word char(20) not null)
slave-bin.000001 490 Create_file 1 1169 db=test;table=t1;file_id=1;block_len=581 slave-bin.000001 491 Create_file 1 1170 db=test;table=t1;file_id=1;block_len=581
slave-bin.000001 1169 Exec_load 1 1192 ;file_id=1 slave-bin.000001 1170 Exec_load 1 1193 ;file_id=1
slave-bin.000001 1192 Query 1 1262 use `test`; drop table t1 slave-bin.000001 1193 Query 1 1263 use `test`; drop table t1
slave-bin.000001 1262 Query 1 1342 use `test`; create table t5 (a int) slave-bin.000001 1263 Query 1 1343 use `test`; create table t5 (a int)
slave-bin.000001 1342 Query 1 1412 use `test`; drop table t5 slave-bin.000001 1343 Query 1 1413 use `test`; drop table t5
slave-bin.000001 1412 Rotate 2 1455 slave-bin.000002;pos=4 slave-bin.000001 1413 Rotate 2 1456 slave-bin.000002;pos=4
show binlog events in 'slave-bin.000002' from 4; show binlog events in 'slave-bin.000002' from 4;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000002 4 Format_desc 2 95 Server ver: VERSION, Binlog ver: 4 slave-bin.000002 4 Format_desc 2 96 Server ver: VERSION, Binlog ver: 4
slave-bin.000002 95 Query 1 175 use `test`; create table t1 (n int) slave-bin.000002 96 Query 1 176 use `test`; create table t1 (n int)
slave-bin.000002 175 Query 1 257 use `test`; insert into t1 values (1) slave-bin.000002 176 Query 1 258 use `test`; insert into t1 values (1)
slave-bin.000002 257 Query 1 327 use `test`; drop table t1 slave-bin.000002 258 Query 1 328 use `test`; drop table t1
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002 477 # # master-bin.000002 Yes Yes 0 0 477 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 478 # # master-bin.000002 Yes Yes 0 0 478 # None 0 No #
show binlog events in 'slave-bin.000005' from 4; show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
...@@ -6,10 +6,10 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; ...@@ -6,10 +6,10 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave; start slave;
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 95 master-bin.000001 96
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 95 # # master-bin.000001 Yes Yes 0 0 95 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 96 # # master-bin.000001 Yes Yes 0 0 96 # None 0 No #
stop slave; stop slave;
change master to master_log_pos=73; change master to master_log_pos=73;
start slave; start slave;
...@@ -30,13 +30,13 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File ...@@ -30,13 +30,13 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 173 # # master-bin.000001 No Yes 0 0 173 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 173 # # master-bin.000001 No Yes 0 0 173 # None 0 No #
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 95 master-bin.000001 96
create table if not exists t1 (n int); create table if not exists t1 (n int);
drop table if exists t1; drop table if exists t1;
create table t1 (n int); create table t1 (n int);
insert into t1 values (1),(2),(3); insert into t1 values (1),(2),(3);
stop slave; stop slave;
change master to master_log_pos=95; change master to master_log_pos=96;
start slave; start slave;
select * from t1; select * from t1;
n n
......
...@@ -16,7 +16,7 @@ select @@global.max_relay_log_size; ...@@ -16,7 +16,7 @@ select @@global.max_relay_log_size;
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68137 # # master-bin.000001 Yes Yes 0 0 68137 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68138 # # master-bin.000001 Yes Yes 0 0 68138 # None 0 No #
stop slave; stop slave;
reset slave; reset slave;
set global max_relay_log_size=(5*4096); set global max_relay_log_size=(5*4096);
...@@ -26,7 +26,7 @@ select @@global.max_relay_log_size; ...@@ -26,7 +26,7 @@ select @@global.max_relay_log_size;
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68137 # # master-bin.000001 Yes Yes 0 0 68137 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68138 # # master-bin.000001 Yes Yes 0 0 68138 # None 0 No #
stop slave; stop slave;
reset slave; reset slave;
set global max_relay_log_size=0; set global max_relay_log_size=0;
...@@ -36,7 +36,7 @@ select @@global.max_relay_log_size; ...@@ -36,7 +36,7 @@ select @@global.max_relay_log_size;
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68137 # # master-bin.000001 Yes Yes 0 0 68137 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68138 # # master-bin.000001 Yes Yes 0 0 68138 # None 0 No #
stop slave; stop slave;
reset slave; reset slave;
flush logs; flush logs;
...@@ -49,13 +49,13 @@ flush logs; ...@@ -49,13 +49,13 @@ flush logs;
create table t1 (a int); create table t1 (a int);
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68217 # # master-bin.000001 Yes Yes 0 0 68217 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68218 # # master-bin.000001 Yes Yes 0 0 68218 # None 0 No #
flush logs; flush logs;
drop table t1; drop table t1;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68287 # # master-bin.000001 Yes Yes 0 0 68287 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68288 # # master-bin.000001 Yes Yes 0 0 68288 # None 0 No #
flush logs; flush logs;
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000002 95 master-bin.000002 96
...@@ -18,5 +18,5 @@ max(a) ...@@ -18,5 +18,5 @@ max(a)
8000 8000
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 687207 # # master-bin.000001 Yes Yes 0 0 687207 # None 0 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 687231 # # master-bin.000001 Yes Yes 0 0 687231 # None 0 No #
drop table t1; drop table t1;
...@@ -28,4 +28,4 @@ ERROR 42S02: Table 'test.t11' doesn't exist ...@@ -28,4 +28,4 @@ ERROR 42S02: Table 'test.t11' doesn't exist
drop table if exists t1,t2,t11; drop table if exists t1,t2,t11;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1554 # # master-bin.000001 Yes Yes test.t1 0 0 1554 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1555 # # master-bin.000001 Yes Yes test.t1 0 0 1555 # None 0 No #
...@@ -6,12 +6,12 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; ...@@ -6,12 +6,12 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 95 # # master-bin.000001 Yes Yes 0 0 95 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 96 # # master-bin.000001 Yes Yes 0 0 96 # None 0 No #
stop slave; stop slave;
change master to master_user='test'; change master to master_user='test';
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 test MASTER_PORT 1 master-bin.000001 95 # # master-bin.000001 No No 0 0 95 # None 0 No # # 127.0.0.1 test MASTER_PORT 1 master-bin.000001 96 # # master-bin.000001 No No 0 0 96 # None 0 No #
reset slave; reset slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
...@@ -19,7 +19,7 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File ...@@ -19,7 +19,7 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
start slave; start slave;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 95 # # master-bin.000001 Yes Yes 0 0 95 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000001 96 # # master-bin.000001 Yes Yes 0 0 96 # None 0 No #
stop slave; stop slave;
reset slave; reset slave;
start slave; start slave;
......
...@@ -16,7 +16,7 @@ create table t1 (s text); ...@@ -16,7 +16,7 @@ create table t1 (s text);
insert into t1 values('Could not break slave'),('Tried hard'); insert into t1 values('Could not break slave'),('Tried hard');
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 60 master-bin.000001 521 # # master-bin.000001 Yes Yes 0 0 521 # None 0 No # # 127.0.0.1 root MASTER_PORT 60 master-bin.000001 522 # # master-bin.000001 Yes Yes 0 0 522 # None 0 No #
select * from t1; select * from t1;
s s
Could not break slave Could not break slave
...@@ -57,7 +57,7 @@ master-bin.000003 ...@@ -57,7 +57,7 @@ master-bin.000003
insert into t2 values (65); insert into t2 values (65);
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 60 master-bin.000003 469 # # master-bin.000003 Yes Yes 0 0 469 # None 0 No # # 127.0.0.1 root MASTER_PORT 60 master-bin.000003 470 # # master-bin.000003 Yes Yes 0 0 470 # None 0 No #
select * from t2; select * from t2;
m m
34 34
...@@ -79,13 +79,13 @@ master-bin.000004 ...@@ -79,13 +79,13 @@ master-bin.000004
master-bin.000005 master-bin.000005
show master status; show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000005 1387 master-bin.000005 1388
select * from t4; select * from t4;
a a
testing temporary tables part 2 testing temporary tables part 2
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 60 master-bin.000005 1387 # # master-bin.000005 Yes Yes 0 0 1387 # None 0 No # # 127.0.0.1 root MASTER_PORT 60 master-bin.000005 1388 # # master-bin.000005 Yes Yes 0 0 1388 # None 0 No #
lock tables t3 read; lock tables t3 read;
select count(*) from t3 where n >= 4; select count(*) from t3 where n >= 4;
count(*) count(*)
......
...@@ -10,7 +10,7 @@ stop slave; ...@@ -10,7 +10,7 @@ stop slave;
change master to master_port=SLAVE_PORT; change master to master_port=SLAVE_PORT;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # 0 0 0 95 None 0 No NULL 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # 0 0 0 96 None 0 No NULL
start slave; start slave;
insert into t1 values (1); insert into t1 values (1);
show status like "slave_running"; show status like "slave_running";
......
...@@ -10,7 +10,7 @@ stop slave; ...@@ -10,7 +10,7 @@ stop slave;
change master to master_port=SLAVE_PORT; change master to master_port=SLAVE_PORT;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # 0 0 0 95 None 0 No NULL 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # 0 0 0 96 None 0 No NULL
start slave; start slave;
insert into t1 values (1); insert into t1 values (1);
select * from t1; select * from t1;
......
...@@ -38,19 +38,19 @@ f ...@@ -38,19 +38,19 @@ f
7 7
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 178 use `test`; drop table if exists t1,t2 master-bin.000001 96 Query 1 179 use `test`; drop table if exists t1,t2
master-bin.000001 178 Query 1 257 use `test`; create table t1(f int) master-bin.000001 179 Query 1 258 use `test`; create table t1(f int)
master-bin.000001 257 Query 1 336 use `test`; create table t2(f int) master-bin.000001 258 Query 1 337 use `test`; create table t2(f int)
master-bin.000001 336 Query 1 455 use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10) master-bin.000001 337 Query 1 456 use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
master-bin.000001 455 Query 1 544 use `test`; create temporary table t3(f int) master-bin.000001 456 Query 1 545 use `test`; create temporary table t3(f int)
master-bin.000001 544 Query 1 642 use `test`; insert into t3 select * from t1 where f<6 master-bin.000001 545 Query 1 643 use `test`; insert into t3 select * from t1 where f<6
master-bin.000001 642 Query 1 731 use `test`; create temporary table t3(f int) master-bin.000001 643 Query 1 732 use `test`; create temporary table t3(f int)
master-bin.000001 731 Query 1 826 use `test`; insert into t2 select count(*) from t3 master-bin.000001 732 Query 1 827 use `test`; insert into t2 select count(*) from t3
master-bin.000001 826 Query 1 925 use `test`; insert into t3 select * from t1 where f>=4 master-bin.000001 827 Query 1 926 use `test`; insert into t3 select * from t1 where f>=4
master-bin.000001 925 Query 1 1005 use `test`; drop temporary table t3 master-bin.000001 926 Query 1 1006 use `test`; drop temporary table t3
master-bin.000001 1005 Query 1 1100 use `test`; insert into t2 select count(*) from t3 master-bin.000001 1006 Query 1 1101 use `test`; insert into t2 select count(*) from t3
master-bin.000001 1100 Query 1 1180 use `test`; drop temporary table t3 master-bin.000001 1101 Query 1 1181 use `test`; drop temporary table t3
drop table t1, t2; drop table t1, t2;
use test; use test;
SET TIMESTAMP=1040323920; SET TIMESTAMP=1040323920;
......
...@@ -32,13 +32,13 @@ t ...@@ -32,13 +32,13 @@ t
2004-06-11 09:39:02 2004-06-11 09:39:02
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 181 use `test`; create table t1 (t timestamp) master-bin.000001 96 Query 1 182 use `test`; create table t1 (t timestamp)
master-bin.000001 181 Query 1 266 use `test`; create table t2 (t char(32)) master-bin.000001 182 Query 1 267 use `test`; create table t2 (t char(32))
master-bin.000001 266 Query 1 351 use `test`; SET ONE_SHOT TIME_ZONE='UTC' master-bin.000001 267 Query 1 352 use `test`; SET ONE_SHOT TIME_ZONE='UTC'
master-bin.000001 351 Query 1 468 use `test`; insert into t1 values ('20040101000000'), ('20040611093902') master-bin.000001 352 Query 1 469 use `test`; insert into t1 values ('20040101000000'), ('20040611093902')
master-bin.000001 468 Query 1 539 use `test`; delete from t1 master-bin.000001 469 Query 1 540 use `test`; delete from t1
master-bin.000001 539 Query 1 656 use `test`; insert into t1 values ('20040101000000'), ('20040611093902') master-bin.000001 540 Query 1 657 use `test`; insert into t1 values ('20040101000000'), ('20040611093902')
set time_zone='MET'; set time_zone='MET';
insert into t2 (select t from t1); insert into t2 (select t from t1);
select * from t1; select * from t1;
......
...@@ -14,14 +14,14 @@ insert into t2 values (3),(4); ...@@ -14,14 +14,14 @@ insert into t2 values (3),(4);
drop table t2; drop table t2;
show binlog events; show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4 master-bin.000001 4 Format_desc 1 96 Server ver: VERSION, Binlog ver: 4
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key) master-bin.000001 96 Query 1 211 use `test`; create table t1(n int not null auto_increment primary key)
master-bin.000001 210 Query 1 304 use `test`; insert into t1 values (1),(2),(3),(4) master-bin.000001 211 Query 1 305 use `test`; insert into t1 values (1),(2),(3),(4)
master-bin.000001 304 Query 1 374 use `test`; drop table t1 master-bin.000001 305 Query 1 375 use `test`; drop table t1
master-bin.000001 374 Query 1 489 use `test`; create table t2(n int not null auto_increment primary key) master-bin.000001 375 Query 1 490 use `test`; create table t2(n int not null auto_increment primary key)
master-bin.000001 489 Query 1 575 use `test`; insert into t2 values (1),(2) master-bin.000001 490 Query 1 576 use `test`; insert into t2 values (1),(2)
master-bin.000001 575 Query 1 661 use `test`; insert into t2 values (3),(4) master-bin.000001 576 Query 1 662 use `test`; insert into t2 values (3),(4)
master-bin.000001 661 Query 1 731 use `test`; drop table t2 master-bin.000001 662 Query 1 732 use `test`; drop table t2
start slave until master_log_file='master-bin.000001', master_log_pos=304; start slave until master_log_file='master-bin.000001', master_log_pos=304;
select * from t1; select * from t1;
n n
...@@ -31,7 +31,7 @@ n ...@@ -31,7 +31,7 @@ n
4 4
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 304 # Master master-bin.000001 304 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 732 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 305 # Master master-bin.000001 304 No #
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
select * from t1; select * from t1;
n n
...@@ -41,7 +41,7 @@ n ...@@ -41,7 +41,7 @@ n
4 4
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 304 # Master master-no-such-bin.000001 291 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 732 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 305 # Master master-no-such-bin.000001 291 No #
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=710; start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=710;
select * from t2; select * from t2;
n n
...@@ -49,13 +49,13 @@ n ...@@ -49,13 +49,13 @@ n
2 2
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 575 # Relay slave-relay-bin.000004 710 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 732 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 576 # Relay slave-relay-bin.000004 710 No #
start slave; start slave;
stop slave; stop slave;
start slave until master_log_file='master-bin.000001', master_log_pos=710; start slave until master_log_file='master-bin.000001', master_log_pos=710;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 731 # Master master-bin.000001 710 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 732 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 732 # Master master-bin.000001 710 No #
start slave until master_log_file='master-bin', master_log_pos=561; start slave until master_log_file='master-bin', master_log_pos=561;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12; start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
......
...@@ -76,34 +76,34 @@ abcn1n2 ...@@ -76,34 +76,34 @@ abcn1n2
NULL NULL
NULL NULL
NULL NULL
show binlog events from 179; show binlog events from 180;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000001 179 User var 2 222 @`i1`=12345678901234 slave-bin.000001 180 User var 2 223 @`i1`=12345678901234
slave-bin.000001 222 User var 2 265 @`i2`=-12345678901234 slave-bin.000001 223 User var 2 266 @`i2`=-12345678901234
slave-bin.000001 265 User var 2 308 @`i3`=0 slave-bin.000001 266 User var 2 309 @`i3`=0
slave-bin.000001 308 User var 2 351 @`i4`=-1 slave-bin.000001 309 User var 2 352 @`i4`=-1
slave-bin.000001 351 Query 1 456 use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4) slave-bin.000001 352 Query 1 457 use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4)
slave-bin.000001 456 User var 2 499 @`r1`=12.5 slave-bin.000001 457 User var 2 500 @`r1`=12.5
slave-bin.000001 499 User var 2 542 @`r2`=-12.5 slave-bin.000001 500 User var 2 543 @`r2`=-12.5
slave-bin.000001 542 Query 1 633 use `test`; insert into t1 values (@r1), (@r2) slave-bin.000001 543 Query 1 634 use `test`; insert into t1 values (@r1), (@r2)
slave-bin.000001 633 User var 2 682 @`s1`=_latin1 0x5468697320697320612074657374 COLLATE latin1_swedish_ci slave-bin.000001 634 User var 2 683 @`s1`=_latin1 0x5468697320697320612074657374 COLLATE latin1_swedish_ci
slave-bin.000001 682 User var 2 717 @`s2`=_latin1 "" COLLATE latin1_swedish_ci slave-bin.000001 683 User var 2 718 @`s2`=_latin1 "" COLLATE latin1_swedish_ci
slave-bin.000001 717 User var 2 759 @`s3`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci slave-bin.000001 718 User var 2 760 @`s3`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
slave-bin.000001 759 User var 2 801 @`s4`=_latin1 0x6162635C646566 COLLATE latin1_swedish_ci slave-bin.000001 760 User var 2 802 @`s4`=_latin1 0x6162635C646566 COLLATE latin1_swedish_ci
slave-bin.000001 801 User var 2 843 @`s5`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci slave-bin.000001 802 User var 2 844 @`s5`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
slave-bin.000001 843 Query 1 955 use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5) slave-bin.000001 844 Query 1 956 use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5)
slave-bin.000001 955 User var 2 981 @`n1`=NULL slave-bin.000001 956 User var 2 982 @`n1`=NULL
slave-bin.000001 981 Query 1 1065 use `test`; insert into t1 values (@n1) slave-bin.000001 982 Query 1 1066 use `test`; insert into t1 values (@n1)
slave-bin.000001 1065 User var 2 1091 @`n2`=NULL slave-bin.000001 1066 User var 2 1092 @`n2`=NULL
slave-bin.000001 1091 Query 1 1175 use `test`; insert into t1 values (@n2) slave-bin.000001 1092 Query 1 1176 use `test`; insert into t1 values (@n2)
slave-bin.000001 1175 Query 1 1285 use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1) slave-bin.000001 1176 Query 1 1286 use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1)
slave-bin.000001 1285 User var 2 1327 @`a`=2 slave-bin.000001 1286 User var 2 1328 @`a`=2
slave-bin.000001 1327 Query 1 1421 use `test`; insert into t1 values (@a+(@b:=@a+1)) slave-bin.000001 1328 Query 1 1422 use `test`; insert into t1 values (@a+(@b:=@a+1))
slave-bin.000001 1421 User var 2 1458 @`q`=_latin1 0x616263 COLLATE latin1_swedish_ci slave-bin.000001 1422 User var 2 1459 @`q`=_latin1 0x616263 COLLATE latin1_swedish_ci
slave-bin.000001 1458 Query 1 1584 use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2')) slave-bin.000001 1459 Query 1 1585 use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'))
slave-bin.000001 1584 User var 2 1626 @`a`=5 slave-bin.000001 1585 User var 2 1627 @`a`=5
slave-bin.000001 1626 Query 1 1714 use `test`; insert into t1 values (@a),(@a) slave-bin.000001 1627 Query 1 1715 use `test`; insert into t1 values (@a),(@a)
slave-bin.000001 1714 User var 2 1739 @`a`=NULL slave-bin.000001 1715 User var 2 1740 @`a`=NULL
slave-bin.000001 1739 Query 1 1834 use `test`; insert into t1 values (@a),(@a),(@a*5) slave-bin.000001 1740 Query 1 1835 use `test`; insert into t1 values (@a),(@a),(@a*5)
drop table t1; drop table t1;
stop slave; stop slave;
...@@ -173,12 +173,12 @@ SET @`a b`='hello'; ...@@ -173,12 +173,12 @@ SET @`a b`='hello';
INSERT INTO t1 VALUES(@`a b`); INSERT INTO t1 VALUES(@`a b`);
set @var1= "';aaa"; set @var1= "';aaa";
insert into t1 values (@var1); insert into t1 values (@var1);
show binlog events from 95; show binlog events from 96;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 User var 1 136 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci master-bin.000001 96 User var 1 137 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
master-bin.000001 136 Query 1 222 use `test`; INSERT INTO t1 VALUES(@`a b`) master-bin.000001 137 Query 1 223 use `test`; INSERT INTO t1 VALUES(@`a b`)
master-bin.000001 222 User var 1 264 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci master-bin.000001 223 User var 1 265 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
master-bin.000001 264 Query 1 350 use `test`; insert into t1 values (@var1) master-bin.000001 265 Query 1 351 use `test`; insert into t1 values (@var1)
/*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/;
SET @`a b`:=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci; SET @`a b`:=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci;
use test; use test;
......
...@@ -338,7 +338,7 @@ create table t2 (c char(30)) charset=ucs2; ...@@ -338,7 +338,7 @@ create table t2 (c char(30)) charset=ucs2;
set @v=convert('abc' using ucs2); set @v=convert('abc' using ucs2);
reset master; reset master;
insert into t2 values (@v); insert into t2 values (@v);
show binlog events from 95; show binlog events from 96;
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we # more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
# absolutely need variables names to be quoted and strings to be # absolutely need variables names to be quoted and strings to be
# escaped). # escaped).
......
...@@ -26,7 +26,7 @@ insert into t2 select * from t1; ...@@ -26,7 +26,7 @@ insert into t2 select * from t1;
commit; commit;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -39,7 +39,7 @@ insert into t2 select * from t1; ...@@ -39,7 +39,7 @@ insert into t2 select * from t1;
rollback; rollback;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -54,7 +54,7 @@ rollback to savepoint my_savepoint; ...@@ -54,7 +54,7 @@ rollback to savepoint my_savepoint;
commit; commit;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -71,7 +71,7 @@ commit; ...@@ -71,7 +71,7 @@ commit;
select a from t1 order by a; # check that savepoints work :) select a from t1 order by a; # check that savepoints work :)
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
# and when ROLLBACK is not explicit? # and when ROLLBACK is not explicit?
delete from t1; delete from t1;
...@@ -92,7 +92,7 @@ connection con2; ...@@ -92,7 +92,7 @@ connection con2;
# logging has been done, we use a user lock. # logging has been done, we use a user lock.
select get_lock("a",10); select get_lock("a",10);
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
# and when not in a transact1on? # and when not in a transact1on?
delete from t1; delete from t1;
...@@ -103,7 +103,7 @@ insert into t1 values(9); ...@@ -103,7 +103,7 @@ insert into t1 values(9);
insert into t2 select * from t1; insert into t2 select * from t1;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
# Check that when the query updat1ng the MyISAM table is the first in the # Check that when the query updat1ng the MyISAM table is the first in the
# transaction, we log it immediately. # transaction, we log it immediately.
...@@ -115,12 +115,12 @@ insert into t1 values(10); # first make t1 non-empty ...@@ -115,12 +115,12 @@ insert into t1 values(10); # first make t1 non-empty
begin; begin;
insert into t2 select * from t1; insert into t2 select * from t1;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
insert into t1 values(11); insert into t1 values(11);
commit; commit;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
# Check that things work like before this BEGIN/ROLLBACK code was added, # Check that things work like before this BEGIN/ROLLBACK code was added,
...@@ -138,7 +138,7 @@ insert into t2 select * from t1; ...@@ -138,7 +138,7 @@ insert into t2 select * from t1;
commit; commit;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -150,7 +150,7 @@ insert into t2 select * from t1; ...@@ -150,7 +150,7 @@ insert into t2 select * from t1;
rollback; rollback;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -165,7 +165,7 @@ rollback to savepoint my_savepoint; ...@@ -165,7 +165,7 @@ rollback to savepoint my_savepoint;
commit; commit;
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
delete from t1; delete from t1;
delete from t2; delete from t2;
...@@ -182,7 +182,7 @@ commit; ...@@ -182,7 +182,7 @@ commit;
select a from t1 order by a; # check that savepoints work :) select a from t1 order by a; # check that savepoints work :)
--replace_column 5 # --replace_column 5 #
show binlog events from 95; show binlog events from 96;
# Test for BUG#5714, where a MyISAM update in the transaction used to # Test for BUG#5714, where a MyISAM update in the transaction used to
# release row-level locks in InnoDB # release row-level locks in InnoDB
......
...@@ -61,7 +61,7 @@ select "--- --database --" as ""; ...@@ -61,7 +61,7 @@ select "--- --database --" as "";
select "--- --position --" as ""; select "--- --position --" as "";
--enable_query_log --enable_query_log
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --position=118 $MYSQL_TEST_DIR/var/log/master-bin.000002 --exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --position=119 $MYSQL_TEST_DIR/var/log/master-bin.000002
# These are tests for remote binlog. # These are tests for remote binlog.
# They should return the same as previous test. # They should return the same as previous test.
...@@ -93,7 +93,7 @@ select "--- --database --" as ""; ...@@ -93,7 +93,7 @@ select "--- --database --" as "";
select "--- --position --" as ""; select "--- --position --" as "";
--enable_query_log --enable_query_log
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --read-from-remote-server --position=118 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 --exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --read-from-remote-server --position=119 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
# clean up # clean up
drop table t1, t2; drop table t1, t2;
...@@ -46,11 +46,11 @@ select "--- offset --" as ""; ...@@ -46,11 +46,11 @@ select "--- offset --" as "";
--disable_query_log --disable_query_log
select "--- start-position --" as ""; select "--- start-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --start-position=601 $MYSQL_TEST_DIR/var/log/master-bin.000001 --exec $MYSQL_BINLOG --short-form --start-position=602 $MYSQL_TEST_DIR/var/log/master-bin.000001
--disable_query_log --disable_query_log
select "--- stop-position --" as ""; select "--- stop-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --stop-position=601 $MYSQL_TEST_DIR/var/log/master-bin.000001 --exec $MYSQL_BINLOG --short-form --stop-position=602 $MYSQL_TEST_DIR/var/log/master-bin.000001
--disable_query_log --disable_query_log
select "--- start-datetime --" as ""; select "--- start-datetime --" as "";
--enable_query_log --enable_query_log
...@@ -75,11 +75,11 @@ select "--- offset --" as ""; ...@@ -75,11 +75,11 @@ select "--- offset --" as "";
--disable_query_log --disable_query_log
select "--- start-position --" as ""; select "--- start-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --start-position=601 $MYSQL_TEST_DIR/var/log/master-bin.000001 $MYSQL_TEST_DIR/var/log/master-bin.000002 --exec $MYSQL_BINLOG --short-form --start-position=602 $MYSQL_TEST_DIR/var/log/master-bin.000001 $MYSQL_TEST_DIR/var/log/master-bin.000002
--disable_query_log --disable_query_log
select "--- stop-position --" as ""; select "--- stop-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --stop-position=123 $MYSQL_TEST_DIR/var/log/master-bin.000001 $MYSQL_TEST_DIR/var/log/master-bin.000002 --exec $MYSQL_BINLOG --short-form --stop-position=124 $MYSQL_TEST_DIR/var/log/master-bin.000001 $MYSQL_TEST_DIR/var/log/master-bin.000002
--disable_query_log --disable_query_log
select "--- start-datetime --" as ""; select "--- start-datetime --" as "";
--enable_query_log --enable_query_log
...@@ -102,11 +102,11 @@ select "--- offset --" as ""; ...@@ -102,11 +102,11 @@ select "--- offset --" as "";
--disable_query_log --disable_query_log
select "--- start-position --" as ""; select "--- start-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --start-position=601 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 --exec $MYSQL_BINLOG --short-form --start-position=602 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--disable_query_log --disable_query_log
select "--- stop-position --" as ""; select "--- stop-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --stop-position=601 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 --exec $MYSQL_BINLOG --short-form --stop-position=602 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--disable_query_log --disable_query_log
select "--- start-datetime --" as ""; select "--- start-datetime --" as "";
--enable_query_log --enable_query_log
...@@ -129,11 +129,11 @@ select "--- offset --" as ""; ...@@ -129,11 +129,11 @@ select "--- offset --" as "";
--disable_query_log --disable_query_log
select "--- start-position --" as ""; select "--- start-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --start-position=601 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002 --exec $MYSQL_BINLOG --short-form --start-position=602 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
--disable_query_log --disable_query_log
select "--- stop-position --" as ""; select "--- stop-position --" as "";
--enable_query_log --enable_query_log
--exec $MYSQL_BINLOG --short-form --stop-position=123 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002 --exec $MYSQL_BINLOG --short-form --stop-position=124 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
--disable_query_log --disable_query_log
select "--- start-datetime --" as ""; select "--- start-datetime --" as "";
--enable_query_log --enable_query_log
......
...@@ -107,7 +107,7 @@ connection master; ...@@ -107,7 +107,7 @@ connection master;
drop database mysqltest2; drop database mysqltest2;
drop database mysqltest3; drop database mysqltest3;
--replace_column 2 # 5 # --replace_column 2 # 5 #
show binlog events from 95; show binlog events from 96;
sync_slave_with_master; sync_slave_with_master;
# Check that we can't change global.collation_server # Check that we can't change global.collation_server
...@@ -163,14 +163,14 @@ delete from t1; ...@@ -163,14 +163,14 @@ delete from t1;
# command just before the INSERT. # command just before the INSERT.
# You can find it by doing: # You can find it by doing:
# ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 CHARACTER_SET | tail -7 # ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 CHARACTER_SET | tail -7
change master to master_log_pos=6809; change master to master_log_pos=6810;
# This position should be position of the INSERT command. # This position should be position of the INSERT command.
# You can find it by doing: # You can find it by doing:
# #
# ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 INSERT | tail -4 # ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 INSERT | tail -4
start slave until master_log_file='master-bin.000001', master_log_pos=6967; start slave until master_log_file='master-bin.000001', master_log_pos=6968;
# Slave is supposed to stop _after_ the INSERT, even though 'master_log_pos' is # Slave is supposed to stop _after_ the INSERT, even though 'master_log_pos' is
# the position of the beginning of the INSERT; after SET slave is not # the position of the beginning of the INSERT; after SET slave is not
......
...@@ -48,7 +48,7 @@ connection master; ...@@ -48,7 +48,7 @@ connection master;
--error 0,1053; --error 0,1053;
reap; reap;
connection master1; connection master1;
show binlog events from 95; show binlog events from 96;
save_master_pos; save_master_pos;
connection slave; connection slave;
# SQL slave thread should not have stopped (because table of the killed # SQL slave thread should not have stopped (because table of the killed
......
...@@ -19,5 +19,5 @@ create database mysqltest; ...@@ -19,5 +19,5 @@ create database mysqltest;
create table t1(a int, b int, unique(b)); create table t1(a int, b int, unique(b));
use mysqltest; use mysqltest;
load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
show binlog events from 95; # should be nothing show binlog events from 96; # should be nothing
drop database mysqltest; drop database mysqltest;
...@@ -17,4 +17,4 @@ save_master_pos; ...@@ -17,4 +17,4 @@ save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
select count(*) from t1; # check that LOAD was replicated select count(*) from t1; # check that LOAD was replicated
show binlog events from 95; # should be nothing show binlog events from 96; # should be nothing
...@@ -38,9 +38,9 @@ select count(*) from t1; ...@@ -38,9 +38,9 @@ select count(*) from t1;
drop table t1; drop table t1;
--replace_result $VERSION VERSION --replace_result $VERSION VERSION
show binlog events; show binlog events;
show binlog events from 95 limit 1; show binlog events from 96 limit 1;
show binlog events from 95 limit 2; show binlog events from 96 limit 2;
show binlog events from 95 limit 2,1; show binlog events from 96 limit 2,1;
flush logs; flush logs;
# We need an extra update before doing save_master_pos. # We need an extra update before doing save_master_pos.
......
...@@ -38,7 +38,7 @@ insert into t1 values (1),(2),(3); ...@@ -38,7 +38,7 @@ insert into t1 values (1),(2),(3);
save_master_pos; save_master_pos;
connection slave; connection slave;
stop slave; stop slave;
change master to master_log_pos=95; change master to master_log_pos=96;
start slave; start slave;
sync_with_master; sync_with_master;
select * from t1; select * from t1;
......
...@@ -46,7 +46,7 @@ save_master_pos; ...@@ -46,7 +46,7 @@ save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
select * from t1; select * from t1;
show binlog events from 179; show binlog events from 180;
connection master; connection master;
drop table t1; drop table t1;
save_master_pos; save_master_pos;
......
...@@ -109,7 +109,7 @@ SET @`a b`='hello'; ...@@ -109,7 +109,7 @@ SET @`a b`='hello';
INSERT INTO t1 VALUES(@`a b`); INSERT INTO t1 VALUES(@`a b`);
set @var1= "';aaa"; set @var1= "';aaa";
insert into t1 values (@var1); insert into t1 values (@var1);
show binlog events from 95; show binlog events from 96;
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we # more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
# absolutely need variables names to be quoted and strings to be # absolutely need variables names to be quoted and strings to be
# escaped). # escaped).
......
...@@ -103,7 +103,7 @@ static inline void hash_free_elements(HASH *hash) ...@@ -103,7 +103,7 @@ static inline void hash_free_elements(HASH *hash)
hash_free() hash_free()
hash the hash to delete elements of hash the hash to delete elements of
NOTES: Hash can't be reused wuthing calling hash_init again. NOTES: Hash can't be reused without calling hash_init again.
*/ */
void hash_free(HASH *hash) void hash_free(HASH *hash)
......
...@@ -102,11 +102,32 @@ static int write_status(DB *status_block, char *buff, uint length); ...@@ -102,11 +102,32 @@ static int write_status(DB *status_block, char *buff, uint length);
static void update_status(BDB_SHARE *share, TABLE *table); static void update_status(BDB_SHARE *share, TABLE *table);
static void berkeley_noticecall(DB_ENV *db_env, db_notices notice); static void berkeley_noticecall(DB_ENV *db_env, db_notices notice);
static int berkeley_close_connection(THD *thd);
static int berkeley_commit(THD *thd, bool all);
static int berkeley_rollback(THD *thd, bool all);
static handlerton berkeley_hton = {
0, /* slot */
0, /* savepoint size */
berkeley_close_connection,
NULL, /* savepoint_set */
NULL, /* savepoint_rollback */
NULL, /* savepoint_release */
berkeley_commit,
berkeley_rollback,
NULL, /* prepare */
NULL, /* recover */
};
typedef struct st_berkeley_trx_data {
DB_TXN *all;
DB_TXN *stmt;
uint bdb_lock_count;
} berkeley_trx_data;
/* General functions */ /* General functions */
bool berkeley_init(void) handlerton *berkeley_init(void)
{ {
DBUG_ENTER("berkeley_init"); DBUG_ENTER("berkeley_init");
...@@ -135,7 +156,7 @@ bool berkeley_init(void) ...@@ -135,7 +156,7 @@ bool berkeley_init(void)
berkeley_log_file_size= max(berkeley_log_file_size, 10*1024*1024L); berkeley_log_file_size= max(berkeley_log_file_size, 10*1024*1024L);
if (db_env_create(&db_env,0)) if (db_env_create(&db_env,0))
DBUG_RETURN(1); /* purecov: inspected */ DBUG_RETURN(0);
db_env->set_errcall(db_env,berkeley_print_error); db_env->set_errcall(db_env,berkeley_print_error);
db_env->set_errpfx(db_env,"bdb"); db_env->set_errpfx(db_env,"bdb");
db_env->set_noticecall(db_env, berkeley_noticecall); db_env->set_noticecall(db_env, berkeley_noticecall);
...@@ -163,14 +184,15 @@ bool berkeley_init(void) ...@@ -163,14 +184,15 @@ bool berkeley_init(void)
DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN |
DB_CREATE | DB_THREAD, 0666)) DB_CREATE | DB_THREAD, 0666))
{ {
db_env->close(db_env,0); /* purecov: inspected */ db_env->close(db_env,0);
db_env=0; /* purecov: inspected */ db_env=0;
DBUG_RETURN(0);
} }
(void) hash_init(&bdb_open_tables,system_charset_info,32,0,0, (void) hash_init(&bdb_open_tables,system_charset_info,32,0,0,
(hash_get_key) bdb_get_key,0,0); (hash_get_key) bdb_get_key,0,0);
pthread_mutex_init(&bdb_mutex,MY_MUTEX_INIT_FAST); pthread_mutex_init(&bdb_mutex,MY_MUTEX_INIT_FAST);
DBUG_RETURN(db_env == 0); DBUG_RETURN(&berkeley_hton);
} }
...@@ -188,6 +210,11 @@ bool berkeley_end(void) ...@@ -188,6 +210,11 @@ bool berkeley_end(void)
DBUG_RETURN(error != 0); DBUG_RETURN(error != 0);
} }
static int berkeley_close_connection(THD *thd)
{
my_free((gptr)thd->ha_data[berkeley_hton.slot], MYF(0));
}
bool berkeley_flush_logs() bool berkeley_flush_logs()
{ {
int error; int error;
...@@ -206,26 +233,33 @@ bool berkeley_flush_logs() ...@@ -206,26 +233,33 @@ bool berkeley_flush_logs()
DBUG_RETURN(result); DBUG_RETURN(result);
} }
static int berkeley_commit(THD *thd, bool all)
int berkeley_commit(THD *thd, void *trans)
{ {
DBUG_ENTER("berkeley_commit"); DBUG_ENTER("berkeley_commit");
DBUG_PRINT("trans",("ending transaction %s", DBUG_PRINT("trans",("ending transaction %s", all ? "all" : "stmt"));
trans == thd->transaction.stmt.bdb_tid ? "stmt" : "all")); berkeley_trx_data *trx=(berkeley_trx_data *)thd->ha_data[berkeley_hton.slot];
int error=txn_commit((DB_TXN*) trans,0); int error=txn_commit(all ? trx->all : trx->stmt,0);
#ifndef DBUG_OFF #ifndef DBUG_OFF
if (error) if (error)
DBUG_PRINT("error",("error: %d",error)); /* purecov: inspected */ DBUG_PRINT("error",("error: %d",error));
#endif #endif
if (all)
trx->all=0;
else
trx->stmt=0;
DBUG_RETURN(error); DBUG_RETURN(error);
} }
int berkeley_rollback(THD *thd, void *trans) static int berkeley_rollback(THD *thd, bool all)
{ {
DBUG_ENTER("berkeley_rollback"); DBUG_ENTER("berkeley_rollback");
DBUG_PRINT("trans",("aborting transaction %s", DBUG_PRINT("trans",("aborting transaction %s", all ? "all" : "stmt"));
trans == thd->transaction.stmt.bdb_tid ? "stmt" : "all")); berkeley_trx_data *trx=(berkeley_trx_data *)thd->ha_data[berkeley_hton.slot];
int error=txn_abort((DB_TXN*) trans); int error=txn_abort(all ? trx->all : trx->stmt);
if (all)
trx->all=0;
else
trx->stmt=0;
DBUG_RETURN(error); DBUG_RETURN(error);
} }
...@@ -1818,52 +1852,56 @@ int ha_berkeley::reset(void) ...@@ -1818,52 +1852,56 @@ int ha_berkeley::reset(void)
int ha_berkeley::external_lock(THD *thd, int lock_type) int ha_berkeley::external_lock(THD *thd, int lock_type)
{ {
int error=0; int error=0;
berkeley_trx_data *trx=(berkeley_trx_data *)thd->ha_data[berkeley_hton.slot];
DBUG_ENTER("ha_berkeley::external_lock"); DBUG_ENTER("ha_berkeley::external_lock");
if (!trx)
{
thd->ha_data[berkeley_hton.slot]= trx= (berkeley_trx_data *)
my_malloc(sizeof(*trx), MYF(MY_ZEROFILL));
if (!trx)
DBUG_RETURN(1);
}
if (lock_type != F_UNLCK) if (lock_type != F_UNLCK)
{ {
if (!thd->transaction.bdb_lock_count++) if (!trx->bdb_lock_count++)
{ {
DBUG_ASSERT(thd->transaction.stmt.bdb_tid == 0); DBUG_ASSERT(trx->stmt == 0);
transaction=0; // Safety transaction=0; // Safety
/* First table lock, start transaction */ /* First table lock, start transaction */
if ((thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN | if ((thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN |
OPTION_TABLE_LOCK)) && OPTION_TABLE_LOCK)) && !trx->all)
!thd->transaction.all.bdb_tid)
{ {
/* We have to start a master transaction */ /* We have to start a master transaction */
DBUG_PRINT("trans",("starting transaction all: options: 0x%lx", DBUG_PRINT("trans",("starting transaction all: options: 0x%lx",
(ulong) thd->options)); (ulong) thd->options));
if ((error=txn_begin(db_env, 0, if ((error=txn_begin(db_env, 0, &trx->all, 0)))
(DB_TXN**) &thd->transaction.all.bdb_tid,
0)))
{ {
thd->transaction.bdb_lock_count--; // We didn't get the lock /* purecov: inspected */ trx->bdb_lock_count--; // We didn't get the lock
DBUG_RETURN(error); /* purecov: inspected */ DBUG_RETURN(error);
} }
trans_register_ha(thd, TRUE, &berkeley_hton);
if (thd->in_lock_tables) if (thd->in_lock_tables)
DBUG_RETURN(0); // Don't create stmt trans DBUG_RETURN(0); // Don't create stmt trans
} }
DBUG_PRINT("trans",("starting transaction stmt")); DBUG_PRINT("trans",("starting transaction stmt"));
if ((error=txn_begin(db_env, if ((error=txn_begin(db_env, trx->all, &trx->stmt, 0)))
(DB_TXN*) thd->transaction.all.bdb_tid,
(DB_TXN**) &thd->transaction.stmt.bdb_tid,
0)))
{ {
/* We leave the possible master transaction open */ /* We leave the possible master transaction open */
thd->transaction.bdb_lock_count--; // We didn't get the lock /* purecov: inspected */ trx->bdb_lock_count--; // We didn't get the lock
DBUG_RETURN(error); /* purecov: inspected */ DBUG_RETURN(error);
} }
trans_register_ha(thd, FALSE, &berkeley_hton);
} }
transaction= (DB_TXN*) thd->transaction.stmt.bdb_tid; transaction= trx->stmt;
} }
else else
{ {
lock.type=TL_UNLOCK; // Unlocked lock.type=TL_UNLOCK; // Unlocked
thread_safe_add(share->rows, changed_rows, &share->mutex); thread_safe_add(share->rows, changed_rows, &share->mutex);
changed_rows=0; changed_rows=0;
if (!--thd->transaction.bdb_lock_count) if (!--trx->bdb_lock_count)
{ {
if (thd->transaction.stmt.bdb_tid) if (trx->stmt)
{ {
/* /*
F_UNLOCK is done without a transaction commit / rollback. F_UNLOCK is done without a transaction commit / rollback.
...@@ -1871,9 +1909,8 @@ int ha_berkeley::external_lock(THD *thd, int lock_type) ...@@ -1871,9 +1909,8 @@ int ha_berkeley::external_lock(THD *thd, int lock_type)
We must in this case commit the work to keep the row locks We must in this case commit the work to keep the row locks
*/ */
DBUG_PRINT("trans",("commiting non-updating transaction")); DBUG_PRINT("trans",("commiting non-updating transaction"));
error=txn_commit((DB_TXN*) thd->transaction.stmt.bdb_tid,0); error= txn_commit(trx->stmt,0);
thd->transaction.stmt.bdb_tid=0; trx->stmt= transaction= 0;
transaction=0;
} }
} }
} }
...@@ -1891,14 +1928,19 @@ int ha_berkeley::start_stmt(THD *thd) ...@@ -1891,14 +1928,19 @@ int ha_berkeley::start_stmt(THD *thd)
{ {
int error=0; int error=0;
DBUG_ENTER("ha_berkeley::start_stmt"); DBUG_ENTER("ha_berkeley::start_stmt");
if (!thd->transaction.stmt.bdb_tid) berkeley_trx_data *trx=(berkeley_trx_data *)thd->ha_data[berkeley_hton.slot];
/*
note that trx->stmt may have been already initialized as start_stmt()
is called for *each table* not for each storage engine,
and there could be many bdb tables referenced in the query
*/
if (!trx->stmt)
{ {
DBUG_PRINT("trans",("starting transaction stmt")); DBUG_PRINT("trans",("starting transaction stmt"));
error=txn_begin(db_env, (DB_TXN*) thd->transaction.all.bdb_tid, error=txn_begin(db_env, trx->all, &trx->stmt, 0);
(DB_TXN**) &thd->transaction.stmt.bdb_tid, trans_register_ha(thd, FALSE, &berkeley_hton);
0);
} }
transaction= (DB_TXN*) thd->transaction.stmt.bdb_tid; transaction= trx->stmt;
DBUG_RETURN(error); DBUG_RETURN(error);
} }
...@@ -2234,6 +2276,7 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt) ...@@ -2234,6 +2276,7 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
uint i; uint i;
DB_BTREE_STAT *stat=0; DB_BTREE_STAT *stat=0;
DB_TXN_STAT *txn_stat_ptr= 0; DB_TXN_STAT *txn_stat_ptr= 0;
berkeley_trx_data *trx=(berkeley_trx_data *)thd->ha_data[berkeley_hton.slot];
/* /*
Original bdb documentation says: Original bdb documentation says:
...@@ -2249,11 +2292,8 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt) ...@@ -2249,11 +2292,8 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
{ {
DB_TXN_ACTIVE *atxn_stmt= 0, *atxn_all= 0; DB_TXN_ACTIVE *atxn_stmt= 0, *atxn_all= 0;
DB_TXN *txn_all= (DB_TXN*) thd->transaction.all.bdb_tid; u_int32_t all_id= trx->all->id(trx->all);
u_int32_t all_id= txn_all->id(txn_all); u_int32_t stmt_id= trx->stmt->id(trx->stmt);
DB_TXN *txn_stmt= (DB_TXN*) thd->transaction.stmt.bdb_tid;
u_int32_t stmt_id= txn_stmt->id(txn_stmt);
DB_TXN_ACTIVE *cur= txn_stat_ptr->st_txnarray; DB_TXN_ACTIVE *cur= txn_stat_ptr->st_txnarray;
DB_TXN_ACTIVE *end= cur + txn_stat_ptr->st_nactive; DB_TXN_ACTIVE *end= cur + txn_stat_ptr->st_nactive;
......
...@@ -168,9 +168,7 @@ extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir; ...@@ -168,9 +168,7 @@ extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
extern long berkeley_lock_scan_time; extern long berkeley_lock_scan_time;
extern TYPELIB berkeley_lock_typelib; extern TYPELIB berkeley_lock_typelib;
bool berkeley_init(void); handlerton *berkeley_init(void);
bool berkeley_end(void); bool berkeley_end(void);
bool berkeley_flush_logs(void); bool berkeley_flush_logs(void);
int berkeley_commit(THD *thd, void *trans);
int berkeley_rollback(THD *thd, void *trans);
int berkeley_show_logs(Protocol *protocol); int berkeley_show_logs(Protocol *protocol);
This diff is collapsed.
...@@ -216,36 +216,32 @@ extern ulong srv_max_purge_lag; ...@@ -216,36 +216,32 @@ extern ulong srv_max_purge_lag;
extern TYPELIB innobase_lock_typelib; extern TYPELIB innobase_lock_typelib;
bool innobase_init(void); handlerton *innobase_init(void);
bool innobase_end(void); bool innobase_end(void);
bool innobase_flush_logs(void); bool innobase_flush_logs(void);
uint innobase_get_free_space(void); uint innobase_get_free_space(void);
int innobase_commit(THD *thd, void* trx_handle); /*
don't delete it - it may be re-enabled later
as an optimization for the most common case InnoDB+binlog
*/
#if 0
int innobase_report_binlog_offset_and_commit( int innobase_report_binlog_offset_and_commit(
THD* thd, THD* thd,
void* trx_handle, void* trx_handle,
char* log_file_name, char* log_file_name,
my_off_t end_offset); my_off_t end_offset);
int innobase_commit_complete( void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offset);
void* trx_handle); int innobase_commit_complete(void* trx_handle);
int innobase_rollback(THD *thd, void* trx_handle); #endif
int innobase_rollback_to_savepoint(
THD* thd,
char* savepoint_name,
my_off_t* binlog_cache_pos);
int innobase_savepoint(
THD* thd,
char* savepoint_name,
my_off_t binlog_cache_pos);
int innobase_close_connection(THD *thd);
int innobase_drop_database(char *path); int innobase_drop_database(char *path);
bool innodb_show_status(THD* thd); bool innodb_show_status(THD* thd);
void innodb_export_status(void); void innodb_export_status(void);
my_bool innobase_query_caching_of_table_permitted(THD* thd, char* full_name, my_bool innobase_query_caching_of_table_permitted(THD* thd, char* full_name,
uint full_name_len); uint full_name_len);
void innobase_release_temporary_latches(void* innobase_tid); void innobase_release_temporary_latches(THD *thd);
void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offset); void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offset);
......
This diff is collapsed.
...@@ -92,6 +92,11 @@ ...@@ -92,6 +92,11 @@
#define HA_KEY_SWITCH_NONUNIQ_SAVE 2 #define HA_KEY_SWITCH_NONUNIQ_SAVE 2
#define HA_KEY_SWITCH_ALL_SAVE 3 #define HA_KEY_SWITCH_ALL_SAVE 3
/*
Note: the following includes binlog and closing 0.
so: innodb+bdb+ndb+binlog+0
*/
#define MAX_HA 5
/* /*
Bits in index_ddl_flags(KEY *wanted_index) Bits in index_ddl_flags(KEY *wanted_index)
...@@ -190,16 +195,12 @@ enum row_type { ROW_TYPE_NOT_USED=-1, ROW_TYPE_DEFAULT, ROW_TYPE_FIXED, ...@@ -190,16 +195,12 @@ enum row_type { ROW_TYPE_NOT_USED=-1, ROW_TYPE_DEFAULT, ROW_TYPE_FIXED,
#define HA_CREATE_USED_COMMENT (1L << 16) #define HA_CREATE_USED_COMMENT (1L << 16)
#define HA_CREATE_USED_PASSWORD (1L << 17) #define HA_CREATE_USED_PASSWORD (1L << 17)
typedef struct st_thd_trans { typedef ulong my_xid;
void *bdb_tid; #define MYSQL_XID_PREFIX "MySQLXid"
void *innobase_tid; #define MYSQL_XID_PREFIX_LEN 8 // must be a multiple of 8
bool innodb_active_trans; #define MYSQL_XID_OFFSET (MYSQL_XID_PREFIX_LEN+sizeof(server_id))
void *ndb_tid; #define MYSQL_XID_GTRID_LEN (MYSQL_XID_OFFSET+sizeof(my_xid))
} THD_TRANS;
#ifndef XIDDATASIZE /* no xa.h included */
/* XXX - may be we should disable xa completely in this case ? */
#define XIDDATASIZE 128 #define XIDDATASIZE 128
#define MAXGTRIDSIZE 64 #define MAXGTRIDSIZE 64
#define MAXBQUALSIZE 64 #define MAXBQUALSIZE 64
...@@ -208,17 +209,49 @@ struct xid_t { ...@@ -208,17 +209,49 @@ struct xid_t {
long formatID; long formatID;
long gtrid_length; long gtrid_length;
long bqual_length; long bqual_length;
char data[XIDDATASIZE]; char data[XIDDATASIZE]; // not \0-terminated !
};
bool eq(LEX_STRING *l) { return eq(l->length, 0, l->str); }
bool eq(long g, long b, const char *d)
{ return g == gtrid_length && b == bqual_length && !memcmp(d, data, g+b); }
void set(LEX_STRING *l) { set(l->length, 0, l->str); }
void set(ulong l)
{
set(MYSQL_XID_PREFIX_LEN, 0, MYSQL_XID_PREFIX);
*(ulong*)(data+MYSQL_XID_PREFIX_LEN)=server_id;
*(ulong*)(data+MYSQL_XID_OFFSET)=l;
gtrid_length=MYSQL_XID_GTRID_LEN;
}
void set(long g, long b, const char *d)
{
formatID=1;
gtrid_length= g;
bqual_length= b;
memcpy(data, d, g+b);
}
bool is_null() { return formatID == -1; }
void null() { formatID= -1; }
my_xid quick_get_my_xid()
{
return *(ulong*)(data+MYSQL_XID_OFFSET);
}
my_xid get_my_xid()
{
return gtrid_length == MYSQL_XID_GTRID_LEN && bqual_length == 0 &&
*(ulong*)(data+MYSQL_XID_PREFIX_LEN) == server_id &&
!memcmp(data, MYSQL_XID_PREFIX, MYSQL_XID_PREFIX_LEN) ?
quick_get_my_xid() : 0;
}
};
typedef struct xid_t XID; typedef struct xid_t XID;
/* for recover() handlerton call */
#endif #define MIN_XID_LIST_SIZE 128
#define MAX_XID_LIST_SIZE (1024*128)
typedef struct typedef struct
{ {
byte slot; uint slot;
uint savepoint_offset; uint savepoint_offset;
int (*close_connection)(THD *thd); int (*close_connection)(THD *thd);
int (*savepoint_set)(THD *thd, void *sv); int (*savepoint_set)(THD *thd, void *sv);
...@@ -232,6 +265,13 @@ typedef struct ...@@ -232,6 +265,13 @@ typedef struct
int (*rollback_by_xid)(XID *xid); int (*rollback_by_xid)(XID *xid);
} handlerton; } handlerton;
typedef struct st_thd_trans
{
uint nht;
bool no_2pc;
handlerton *ht[MAX_HA];
} THD_TRANS;
enum enum_tx_isolation { ISO_READ_UNCOMMITTED, ISO_READ_COMMITTED, enum enum_tx_isolation { ISO_READ_UNCOMMITTED, ISO_READ_COMMITTED,
ISO_REPEATABLE_READ, ISO_SERIALIZABLE}; ISO_REPEATABLE_READ, ISO_SERIALIZABLE};
...@@ -266,6 +306,9 @@ typedef struct st_table TABLE; ...@@ -266,6 +306,9 @@ typedef struct st_table TABLE;
struct st_foreign_key_info; struct st_foreign_key_info;
typedef struct st_foreign_key_info FOREIGN_KEY_INFO; typedef struct st_foreign_key_info FOREIGN_KEY_INFO;
typedef struct st_savepoint SAVEPOINT;
extern ulong savepoint_alloc_size;
typedef struct st_ha_check_opt typedef struct st_ha_check_opt
{ {
ulong sort_buffer_size; ulong sort_buffer_size;
...@@ -584,58 +627,76 @@ public: ...@@ -584,58 +627,76 @@ public:
extern struct show_table_type_st sys_table_types[]; extern struct show_table_type_st sys_table_types[];
extern const char *ha_row_type[]; extern const char *ha_row_type[];
extern TYPELIB tx_isolation_typelib; extern TYPELIB tx_isolation_typelib;
extern handlerton *handlertons[MAX_HA];
extern ulong total_ha, total_ha_2pc;
/* Wrapper functions */ /* Wrapper functions */
#define ha_commit_stmt(thd) (ha_commit_trans((thd), &((thd)->transaction.stmt))) #define ha_commit_stmt(thd) (ha_commit_trans((thd), FALSE))
#define ha_rollback_stmt(thd) (ha_rollback_trans((thd), &((thd)->transaction.stmt))) #define ha_rollback_stmt(thd) (ha_rollback_trans((thd), FALSE))
#define ha_commit(thd) (ha_commit_trans((thd), &((thd)->transaction.all))) #define ha_commit(thd) (ha_commit_trans((thd), TRUE))
#define ha_rollback(thd) (ha_rollback_trans((thd), &((thd)->transaction.all))) #define ha_rollback(thd) (ha_rollback_trans((thd), TRUE))
#define ha_supports_generate(T) (T != DB_TYPE_INNODB && \ #define ha_supports_generate(T) (T != DB_TYPE_INNODB && \
T != DB_TYPE_BERKELEY_DB && \ T != DB_TYPE_BERKELEY_DB && \
T != DB_TYPE_NDBCLUSTER) T != DB_TYPE_NDBCLUSTER)
/* query cache */
bool ha_caching_allowed(THD* thd, char* table_key, bool ha_caching_allowed(THD* thd, char* table_key,
uint key_length, uint8 cache_type); uint key_length, uint8 cache_type);
/* lookups */
enum db_type ha_resolve_by_name(const char *name, uint namelen); enum db_type ha_resolve_by_name(const char *name, uint namelen);
const char *ha_get_storage_engine(enum db_type db_type); const char *ha_get_storage_engine(enum db_type db_type);
handler *get_new_handler(TABLE *table, enum db_type db_type); handler *get_new_handler(TABLE *table, enum db_type db_type);
my_off_t ha_get_ptr(byte *ptr, uint pack_length); enum db_type ha_checktype(enum db_type database_type);
void ha_store_ptr(byte *buff, uint pack_length, my_off_t pos);
/* basic stuff */
int ha_init(void); int ha_init(void);
TYPELIB *ha_known_exts(void);
int ha_panic(enum ha_panic_function flag); int ha_panic(enum ha_panic_function flag);
int ha_update_statistics();
void ha_close_connection(THD* thd); void ha_close_connection(THD* thd);
enum db_type ha_checktype(enum db_type database_type); bool ha_flush_logs(void);
void ha_drop_database(char* path);
int ha_create_table(const char *name, HA_CREATE_INFO *create_info, int ha_create_table(const char *name, HA_CREATE_INFO *create_info,
bool update_create_info); bool update_create_info);
int ha_delete_table(enum db_type db_type, const char *path);
/* discovery */
int ha_create_table_from_engine(THD* thd, const char *db, const char *name, int ha_create_table_from_engine(THD* thd, const char *db, const char *name,
bool create_if_found); bool create_if_found);
int ha_delete_table(enum db_type db_type, const char *path); int ha_discover(THD* thd, const char* dbname, const char* name,
void ha_drop_database(char* path); const void** frmblob, uint* frmlen);
int ha_find_files(THD *thd,const char *db,const char *path,
const char *wild, bool dir,List<char>* files);
int ha_table_exists(THD* thd, const char* db, const char* name);
/* key cache */
int ha_init_key_cache(const char *name, KEY_CACHE *key_cache); int ha_init_key_cache(const char *name, KEY_CACHE *key_cache);
int ha_resize_key_cache(KEY_CACHE *key_cache); int ha_resize_key_cache(KEY_CACHE *key_cache);
int ha_change_key_cache_param(KEY_CACHE *key_cache); int ha_change_key_cache_param(KEY_CACHE *key_cache);
int ha_change_key_cache(KEY_CACHE *old_key_cache, KEY_CACHE *new_key_cache);
int ha_end_key_cache(KEY_CACHE *key_cache); int ha_end_key_cache(KEY_CACHE *key_cache);
int ha_start_stmt(THD *thd);
int ha_report_binlog_offset_and_commit(THD *thd, char *log_file_name, /* weird stuff */
my_off_t end_offset);
int ha_commit_complete(THD *thd);
int ha_release_temporary_latches(THD *thd); int ha_release_temporary_latches(THD *thd);
int ha_update_statistics();
int ha_commit_trans(THD *thd, THD_TRANS *trans); /* transactions: interface to handlerton functions */
int ha_rollback_trans(THD *thd, THD_TRANS *trans); int ha_start_consistent_snapshot(THD *thd);
int ha_rollback_to_savepoint(THD *thd, char *savepoint_name); int ha_commit_or_rollback_by_xid(LEX_STRING *ident, bool commit);
int ha_savepoint(THD *thd, char *savepoint_name); int ha_commit_one_phase(THD *thd, bool all);
int ha_rollback_trans(THD *thd, bool all);
int ha_prepare(THD *thd);
int ha_recover(HASH *commit_list);
/* transactions: these functions never call handlerton functions directly */
int ha_commit_trans(THD *thd, bool all);
int ha_autocommit_or_rollback(THD *thd, int error); int ha_autocommit_or_rollback(THD *thd, int error);
void ha_set_spin_retries(uint retries);
bool ha_flush_logs(void);
int ha_enable_transaction(THD *thd, bool on); int ha_enable_transaction(THD *thd, bool on);
int ha_change_key_cache(KEY_CACHE *old_key_cache, void trans_register_ha(THD *thd, bool all, handlerton *ht);
KEY_CACHE *new_key_cache);
int ha_discover(THD* thd, const char* dbname, const char* name, /* savepoints */
const void** frmblob, uint* frmlen); int ha_rollback_to_savepoint(THD *thd, SAVEPOINT *sv);
int ha_find_files(THD *thd,const char *db,const char *path, int ha_savepoint(THD *thd, SAVEPOINT *sv);
const char *wild, bool dir,List<char>* files); int ha_release_savepoint(THD *thd, SAVEPOINT *sv);
int ha_table_exists(THD* thd, const char* db, const char* name);
TYPELIB *ha_known_exts(void);
int ha_start_consistent_snapshot(THD *thd);
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
#include "lex_symbol.h" #include "lex_symbol.h"
/* We don't want to include sql_yacc.h into gen_lex_hash */
SYM_GROUP sym_group_common= {"", ""}; SYM_GROUP sym_group_common= {"", ""};
SYM_GROUP sym_group_geom= {"Spatial extentions", "HAVE_SPATIAL"}; SYM_GROUP sym_group_geom= {"Spatial extentions", "HAVE_SPATIAL"};
SYM_GROUP sym_group_rtree= {"RTree keys", "HAVE_RTREE_KEYS"}; SYM_GROUP sym_group_rtree= {"RTree keys", "HAVE_RTREE_KEYS"};
/* We don't want to include sql_yacc.h into gen_lex_hash */
#ifdef NO_YACC_SYMBOLS #ifdef NO_YACC_SYMBOLS
#define SYM_OR_NULL(A) 0 #define SYM_OR_NULL(A) 0
#else #else
...@@ -311,6 +311,7 @@ static SYMBOL symbols[] = { ...@@ -311,6 +311,7 @@ static SYMBOL symbols[] = {
{ "MERGE", SYM(MERGE_SYM)}, { "MERGE", SYM(MERGE_SYM)},
{ "MICROSECOND", SYM(MICROSECOND_SYM)}, { "MICROSECOND", SYM(MICROSECOND_SYM)},
{ "MIDDLEINT", SYM(MEDIUMINT)}, /* For powerbuilder */ { "MIDDLEINT", SYM(MEDIUMINT)}, /* For powerbuilder */
{ "MIGRATE", SYM(MIGRATE_SYM)},
{ "MINUTE", SYM(MINUTE_SYM)}, { "MINUTE", SYM(MINUTE_SYM)},
{ "MINUTE_MICROSECOND", SYM(MINUTE_MICROSECOND_SYM)}, { "MINUTE_MICROSECOND", SYM(MINUTE_MICROSECOND_SYM)},
{ "MINUTE_SECOND", SYM(MINUTE_SECOND_SYM)}, { "MINUTE_SECOND", SYM(MINUTE_SECOND_SYM)},
...@@ -342,6 +343,7 @@ static SYMBOL symbols[] = { ...@@ -342,6 +343,7 @@ static SYMBOL symbols[] = {
{ "OFFSET", SYM(OFFSET_SYM)}, { "OFFSET", SYM(OFFSET_SYM)},
{ "OLD_PASSWORD", SYM(OLD_PASSWORD)}, { "OLD_PASSWORD", SYM(OLD_PASSWORD)},
{ "ON", SYM(ON)}, { "ON", SYM(ON)},
{ "ONE", SYM(ONE_SYM)},
{ "ONE_SHOT", SYM(ONE_SHOT_SYM)}, { "ONE_SHOT", SYM(ONE_SHOT_SYM)},
{ "OPEN", SYM(OPEN_SYM)}, { "OPEN", SYM(OPEN_SYM)},
{ "OPTIMIZE", SYM(OPTIMIZE)}, { "OPTIMIZE", SYM(OPTIMIZE)},
...@@ -355,6 +357,7 @@ static SYMBOL symbols[] = { ...@@ -355,6 +357,7 @@ static SYMBOL symbols[] = {
{ "PACK_KEYS", SYM(PACK_KEYS_SYM)}, { "PACK_KEYS", SYM(PACK_KEYS_SYM)},
{ "PARTIAL", SYM(PARTIAL)}, { "PARTIAL", SYM(PARTIAL)},
{ "PASSWORD", SYM(PASSWORD)}, { "PASSWORD", SYM(PASSWORD)},
{ "PHASE", SYM(PHASE_SYM)},
{ "POINT", SYM(POINT_SYM)}, { "POINT", SYM(POINT_SYM)},
{ "POLYGON", SYM(POLYGON)}, { "POLYGON", SYM(POLYGON)},
{ "PRECISION", SYM(PRECISION)}, { "PRECISION", SYM(PRECISION)},
...@@ -376,6 +379,7 @@ static SYMBOL symbols[] = { ...@@ -376,6 +379,7 @@ static SYMBOL symbols[] = {
{ "READ", SYM(READ_SYM)}, { "READ", SYM(READ_SYM)},
{ "READS", SYM(READS_SYM)}, { "READS", SYM(READS_SYM)},
{ "REAL", SYM(REAL)}, { "REAL", SYM(REAL)},
{ "RECOVER", SYM(RECOVER_SYM)},
{ "REFERENCES", SYM(REFERENCES)}, { "REFERENCES", SYM(REFERENCES)},
{ "REGEXP", SYM(REGEXP)}, { "REGEXP", SYM(REGEXP)},
{ "RELAY_LOG_FILE", SYM(RELAY_LOG_FILE_SYM)}, { "RELAY_LOG_FILE", SYM(RELAY_LOG_FILE_SYM)},
...@@ -392,6 +396,7 @@ static SYMBOL symbols[] = { ...@@ -392,6 +396,7 @@ static SYMBOL symbols[] = {
{ "RESET", SYM(RESET_SYM)}, { "RESET", SYM(RESET_SYM)},
{ "RESTORE", SYM(RESTORE_SYM)}, { "RESTORE", SYM(RESTORE_SYM)},
{ "RESTRICT", SYM(RESTRICT)}, { "RESTRICT", SYM(RESTRICT)},
{ "RESUME", SYM(RESUME_SYM)},
{ "RETURN", SYM(RETURN_SYM)}, { "RETURN", SYM(RETURN_SYM)},
{ "RETURNS", SYM(RETURNS_SYM)}, { "RETURNS", SYM(RETURNS_SYM)},
{ "REVOKE", SYM(REVOKE)}, { "REVOKE", SYM(REVOKE)},
...@@ -460,6 +465,7 @@ static SYMBOL symbols[] = { ...@@ -460,6 +465,7 @@ static SYMBOL symbols[] = {
{ "STRIPED", SYM(RAID_STRIPED_SYM)}, { "STRIPED", SYM(RAID_STRIPED_SYM)},
{ "SUBJECT", SYM(SUBJECT_SYM)}, { "SUBJECT", SYM(SUBJECT_SYM)},
{ "SUPER", SYM(SUPER_SYM)}, { "SUPER", SYM(SUPER_SYM)},
{ "SUSPEND", SYM(SUSPEND_SYM)},
{ "TABLE", SYM(TABLE_SYM)}, { "TABLE", SYM(TABLE_SYM)},
{ "TABLES", SYM(TABLES)}, { "TABLES", SYM(TABLES)},
{ "TABLESPACE", SYM(TABLESPACE)}, { "TABLESPACE", SYM(TABLESPACE)},
...@@ -521,6 +527,7 @@ static SYMBOL symbols[] = { ...@@ -521,6 +527,7 @@ static SYMBOL symbols[] = {
{ "WRITE", SYM(WRITE_SYM)}, { "WRITE", SYM(WRITE_SYM)},
{ "X509", SYM(X509_SYM)}, { "X509", SYM(X509_SYM)},
{ "XOR", SYM(XOR)}, { "XOR", SYM(XOR)},
{ "XA", SYM(XA_SYM)},
{ "YEAR", SYM(YEAR_SYM)}, { "YEAR", SYM(YEAR_SYM)},
{ "YEAR_MONTH", SYM(YEAR_MONTH_SYM)}, { "YEAR_MONTH", SYM(YEAR_MONTH_SYM)},
{ "ZEROFILL", SYM(ZEROFILL)}, { "ZEROFILL", SYM(ZEROFILL)},
......
This diff is collapsed.
...@@ -269,6 +269,7 @@ const char* Log_event::get_type_str() ...@@ -269,6 +269,7 @@ const char* Log_event::get_type_str()
case DELETE_FILE_EVENT: return "Delete_file"; case DELETE_FILE_EVENT: return "Delete_file";
case EXEC_LOAD_EVENT: return "Exec_load"; case EXEC_LOAD_EVENT: return "Exec_load";
case RAND_EVENT: return "RAND"; case RAND_EVENT: return "RAND";
case XID_EVENT: return "Xid";
case USER_VAR_EVENT: return "User var"; case USER_VAR_EVENT: return "User var";
case FORMAT_DESCRIPTION_EVENT: return "Format_desc"; case FORMAT_DESCRIPTION_EVENT: return "Format_desc";
default: return "Unknown"; /* impossible */ default: return "Unknown"; /* impossible */
...@@ -286,6 +287,7 @@ Log_event::Log_event(THD* thd_arg, uint16 flags_arg, bool using_trans) ...@@ -286,6 +287,7 @@ Log_event::Log_event(THD* thd_arg, uint16 flags_arg, bool using_trans)
{ {
server_id= thd->server_id; server_id= thd->server_id;
when= thd->start_time; when= thd->start_time;
cache_stmt= using_trans;
cache_stmt= (using_trans && cache_stmt= (using_trans &&
(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))); (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)));
} }
...@@ -646,11 +648,9 @@ end: ...@@ -646,11 +648,9 @@ end:
#ifndef MYSQL_CLIENT #ifndef MYSQL_CLIENT
#define UNLOCK_MUTEX if (log_lock) pthread_mutex_unlock(log_lock); #define UNLOCK_MUTEX if (log_lock) pthread_mutex_unlock(log_lock);
#define LOCK_MUTEX if (log_lock) pthread_mutex_lock(log_lock); #define LOCK_MUTEX if (log_lock) pthread_mutex_lock(log_lock);
#define max_allowed_packet current_thd->variables.max_allowed_packet
#else #else
#define UNLOCK_MUTEX #define UNLOCK_MUTEX
#define LOCK_MUTEX #define LOCK_MUTEX
#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
#endif #endif
/* /*
...@@ -675,8 +675,8 @@ Log_event* Log_event::read_log_event(IO_CACHE* file, ...@@ -675,8 +675,8 @@ Log_event* Log_event::read_log_event(IO_CACHE* file,
First we only want to read at most LOG_EVENT_MINIMAL_HEADER_LEN, just to First we only want to read at most LOG_EVENT_MINIMAL_HEADER_LEN, just to
check the event for sanity and to know its length; no need to really parse check the event for sanity and to know its length; no need to really parse
it. We say "at most" because this could be a 3.23 master, which has header it. We say "at most" because this could be a 3.23 master, which has header
of 13 bytes, whereas LOG_EVENT_MINIMAL_HEADER_LEN is 19 bytes (it's "minimal" of 13 bytes, whereas LOG_EVENT_MINIMAL_HEADER_LEN is 19 bytes (it's
over the set {MySQL >=4.0}). "minimal" over the set {MySQL >=4.0}).
*/ */
uint header_size= min(description_event->common_header_len, uint header_size= min(description_event->common_header_len,
LOG_EVENT_MINIMAL_HEADER_LEN); LOG_EVENT_MINIMAL_HEADER_LEN);
...@@ -700,6 +700,10 @@ failed my_b_read")); ...@@ -700,6 +700,10 @@ failed my_b_read"));
char *buf= 0; char *buf= 0;
const char *error= 0; const char *error= 0;
Log_event *res= 0; Log_event *res= 0;
#ifndef max_allowed_packet
THD *thd=current_thd;
uint max_allowed_packet= thd ? thd->variables.max_allowed_packet : ~0;
#endif
if (data_len > max_allowed_packet) if (data_len > max_allowed_packet)
{ {
...@@ -726,8 +730,7 @@ failed my_b_read")); ...@@ -726,8 +730,7 @@ failed my_b_read"));
error = "read error"; error = "read error";
goto err; goto err;
} }
if ((res= read_log_event(buf, data_len, &error, if ((res= read_log_event(buf, data_len, &error, description_event)))
description_event)))
res->register_temp_buf(buf); res->register_temp_buf(buf);
err: err:
...@@ -806,14 +809,15 @@ Log_event* Log_event::read_log_event(const char* buf, uint event_len, ...@@ -806,14 +809,15 @@ Log_event* Log_event::read_log_event(const char* buf, uint event_len,
case START_EVENT_V3: /* this is sent only by MySQL <=4.x */ case START_EVENT_V3: /* this is sent only by MySQL <=4.x */
ev = new Start_log_event_v3(buf, description_event); ev = new Start_log_event_v3(buf, description_event);
break; break;
#ifdef HAVE_REPLICATION
case STOP_EVENT: case STOP_EVENT:
ev = new Stop_log_event(buf, description_event); ev = new Stop_log_event(buf, description_event);
break; break;
#endif /* HAVE_REPLICATION */
case INTVAR_EVENT: case INTVAR_EVENT:
ev = new Intvar_log_event(buf, description_event); ev = new Intvar_log_event(buf, description_event);
break; break;
case XID_EVENT:
ev = new Xid_log_event(buf, description_event);
break;
case RAND_EVENT: case RAND_EVENT:
ev = new Rand_log_event(buf, description_event); ev = new Rand_log_event(buf, description_event);
break; break;
...@@ -1392,7 +1396,7 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli) ...@@ -1392,7 +1396,7 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
thd->query_length= q_len; thd->query_length= q_len;
thd->query = (char*)query; thd->query = (char*)query;
VOID(pthread_mutex_lock(&LOCK_thread_count)); VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->query_id = query_id++; thd->query_id = next_query_id();
VOID(pthread_mutex_unlock(&LOCK_thread_count)); VOID(pthread_mutex_unlock(&LOCK_thread_count));
thd->variables.pseudo_thread_id= thread_id; // for temp tables thd->variables.pseudo_thread_id= thread_id; // for temp tables
mysql_log.write(thd,COM_QUERY,"%s",thd->query); mysql_log.write(thd,COM_QUERY,"%s",thd->query);
...@@ -1762,8 +1766,7 @@ binary log."); ...@@ -1762,8 +1766,7 @@ binary log.");
*/ */
Format_description_log_event:: Format_description_log_event::
Format_description_log_event(uint8 binlog_ver, Format_description_log_event(uint8 binlog_ver, const char* server_ver)
const char* server_ver)
:Start_log_event_v3() :Start_log_event_v3()
{ {
created= when; created= when;
...@@ -1775,7 +1778,7 @@ Format_description_log_event(uint8 binlog_ver, ...@@ -1775,7 +1778,7 @@ Format_description_log_event(uint8 binlog_ver,
number_of_event_types= LOG_EVENT_TYPES; number_of_event_types= LOG_EVENT_TYPES;
/* we'll catch my_malloc() error in is_valid() */ /* we'll catch my_malloc() error in is_valid() */
post_header_len=(uint8*) my_malloc(number_of_event_types*sizeof(uint8), post_header_len=(uint8*) my_malloc(number_of_event_types*sizeof(uint8),
MYF(0)); MYF(MY_ZEROFILL));
/* /*
This long list of assignments is not beautiful, but I see no way to This long list of assignments is not beautiful, but I see no way to
make it nicer, as the right members are #defines, not array members, so make it nicer, as the right members are #defines, not array members, so
...@@ -1785,18 +1788,13 @@ Format_description_log_event(uint8 binlog_ver, ...@@ -1785,18 +1788,13 @@ Format_description_log_event(uint8 binlog_ver,
{ {
post_header_len[START_EVENT_V3-1]= START_V3_HEADER_LEN; post_header_len[START_EVENT_V3-1]= START_V3_HEADER_LEN;
post_header_len[QUERY_EVENT-1]= QUERY_HEADER_LEN; post_header_len[QUERY_EVENT-1]= QUERY_HEADER_LEN;
post_header_len[STOP_EVENT-1]= 0;
post_header_len[ROTATE_EVENT-1]= ROTATE_HEADER_LEN; post_header_len[ROTATE_EVENT-1]= ROTATE_HEADER_LEN;
post_header_len[INTVAR_EVENT-1]= 0;
post_header_len[LOAD_EVENT-1]= LOAD_HEADER_LEN; post_header_len[LOAD_EVENT-1]= LOAD_HEADER_LEN;
post_header_len[SLAVE_EVENT-1]= 0;
post_header_len[CREATE_FILE_EVENT-1]= CREATE_FILE_HEADER_LEN; post_header_len[CREATE_FILE_EVENT-1]= CREATE_FILE_HEADER_LEN;
post_header_len[APPEND_BLOCK_EVENT-1]= APPEND_BLOCK_HEADER_LEN; post_header_len[APPEND_BLOCK_EVENT-1]= APPEND_BLOCK_HEADER_LEN;
post_header_len[EXEC_LOAD_EVENT-1]= EXEC_LOAD_HEADER_LEN; post_header_len[EXEC_LOAD_EVENT-1]= EXEC_LOAD_HEADER_LEN;
post_header_len[DELETE_FILE_EVENT-1]= DELETE_FILE_HEADER_LEN; post_header_len[DELETE_FILE_EVENT-1]= DELETE_FILE_HEADER_LEN;
post_header_len[NEW_LOAD_EVENT-1]= post_header_len[LOAD_EVENT-1]; post_header_len[NEW_LOAD_EVENT-1]= post_header_len[LOAD_EVENT-1];
post_header_len[RAND_EVENT-1]= 0;
post_header_len[USER_VAR_EVENT-1]= 0;
post_header_len[FORMAT_DESCRIPTION_EVENT-1]= FORMAT_DESCRIPTION_HEADER_LEN; post_header_len[FORMAT_DESCRIPTION_EVENT-1]= FORMAT_DESCRIPTION_HEADER_LEN;
} }
break; break;
...@@ -1883,8 +1881,7 @@ Format_description_log_event(const char* buf, ...@@ -1883,8 +1881,7 @@ Format_description_log_event(const char* buf,
/* If alloc fails, we'll detect it in is_valid() */ /* If alloc fails, we'll detect it in is_valid() */
post_header_len= (uint8*) my_memdup((byte*)buf+ST_COMMON_HEADER_LEN_OFFSET+1, post_header_len= (uint8*) my_memdup((byte*)buf+ST_COMMON_HEADER_LEN_OFFSET+1,
number_of_event_types* number_of_event_types*
sizeof(*post_header_len), sizeof(*post_header_len), MYF(0));
MYF(0));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -2475,7 +2472,7 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli, ...@@ -2475,7 +2472,7 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli,
{ {
thd->set_time((time_t)when); thd->set_time((time_t)when);
VOID(pthread_mutex_lock(&LOCK_thread_count)); VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->query_id = query_id++; thd->query_id = next_query_id();
VOID(pthread_mutex_unlock(&LOCK_thread_count)); VOID(pthread_mutex_unlock(&LOCK_thread_count));
/* /*
Initing thd->row_count is not necessary in theory as this variable has no Initing thd->row_count is not necessary in theory as this variable has no
...@@ -2976,6 +2973,60 @@ int Rand_log_event::exec_event(struct st_relay_log_info* rli) ...@@ -2976,6 +2973,60 @@ int Rand_log_event::exec_event(struct st_relay_log_info* rli)
#endif /* !MYSQL_CLIENT */ #endif /* !MYSQL_CLIENT */
/**************************************************************************
Xid_log_event methods
**************************************************************************/
#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
void Xid_log_event::pack_info(Protocol *protocol)
{
char buf[64], *pos;
pos= strmov(buf, "xid=");
pos= int10_to_str(xid, pos, 10);
protocol->store(buf, (uint) (pos-buf), &my_charset_bin);
}
#endif
Xid_log_event::Xid_log_event(const char* buf,
const Format_description_log_event* description_event)
:Log_event(buf, description_event)
{
buf+= description_event->common_header_len;
xid=*((my_xid *)buf);
}
bool Xid_log_event::write(IO_CACHE* file)
{
return write_header(file, sizeof(xid)) ||
my_b_safe_write(file, (byte*) &xid, sizeof(xid));
}
#ifdef MYSQL_CLIENT
void Xid_log_event::print(FILE* file, bool short_form, LAST_EVENT_INFO* last_event_info)
{
char buf[512];
if (!short_form)
{
print_header(file);
fprintf(file, "\tXid\n");
}
fprintf(file, "/* == %lu == */\n", xid);
fflush(file);
}
#endif /* MYSQL_CLIENT */
#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
int Xid_log_event::exec_event(struct st_relay_log_info* rli)
{
rli->inc_event_relay_log_pos();
return 0;
}
#endif /* !MYSQL_CLIENT */
/************************************************************************** /**************************************************************************
User_var_log_event methods User_var_log_event methods
**************************************************************************/ **************************************************************************/
......
This diff is collapsed.
...@@ -399,6 +399,11 @@ inline THD *_current_thd(void) ...@@ -399,6 +399,11 @@ inline THD *_current_thd(void)
} }
#define current_thd _current_thd() #define current_thd _current_thd()
/*
External variables
*/
extern ulong server_id, concurrency;
#include "sql_string.h" #include "sql_string.h"
#include "sql_list.h" #include "sql_list.h"
#include "sql_map.h" #include "sql_map.h"
...@@ -554,6 +559,8 @@ bool mysql_preload_keys(THD* thd, TABLE_LIST* table_list); ...@@ -554,6 +559,8 @@ bool mysql_preload_keys(THD* thd, TABLE_LIST* table_list);
int reassign_keycache_tables(THD* thd, KEY_CACHE *src_cache, int reassign_keycache_tables(THD* thd, KEY_CACHE *src_cache,
KEY_CACHE *dst_cache); KEY_CACHE *dst_cache);
bool mysql_xa_recover(THD *thd);
bool check_simple_select(); bool check_simple_select();
SORT_FIELD * make_unireg_sortorder(ORDER *order, uint *length); SORT_FIELD * make_unireg_sortorder(ORDER *order, uint *length);
...@@ -928,6 +935,9 @@ bool open_log(MYSQL_LOG *log, const char *hostname, ...@@ -928,6 +935,9 @@ bool open_log(MYSQL_LOG *log, const char *hostname,
const char *index_file_name, const char *index_file_name,
enum_log_type type, bool read_append, enum_log_type type, bool read_append,
bool no_auto_events, ulong max_size); bool no_auto_events, ulong max_size);
File open_binlog(IO_CACHE *log, const char *log_file_name,
const char **errmsg);
handlerton *binlog_init();
/* mysqld.cc */ /* mysqld.cc */
extern void yyerror(const char*); extern void yyerror(const char*);
...@@ -981,7 +991,7 @@ extern double last_query_cost; ...@@ -981,7 +991,7 @@ extern double last_query_cost;
extern double log_10[32]; extern double log_10[32];
extern ulonglong log_10_int[20]; extern ulonglong log_10_int[20];
extern ulonglong keybuff_size; extern ulonglong keybuff_size;
extern ulong refresh_version,flush_version, thread_id,query_id; extern ulong refresh_version,flush_version, thread_id;
extern ulong binlog_cache_use, binlog_cache_disk_use; extern ulong binlog_cache_use, binlog_cache_disk_use;
extern ulong aborted_threads,aborted_connects; extern ulong aborted_threads,aborted_connects;
extern ulong delayed_insert_timeout; extern ulong delayed_insert_timeout;
...@@ -991,8 +1001,6 @@ extern ulong delayed_rows_in_use,delayed_insert_errors; ...@@ -991,8 +1001,6 @@ extern ulong delayed_rows_in_use,delayed_insert_errors;
extern ulong slave_open_temp_tables; extern ulong slave_open_temp_tables;
extern ulong query_cache_size, query_cache_min_res_unit; extern ulong query_cache_size, query_cache_min_res_unit;
extern ulong thd_startup_options, slow_launch_threads, slow_launch_time; extern ulong thd_startup_options, slow_launch_threads, slow_launch_time;
extern ulong server_id, concurrency;
extern ulong ha_read_count, ha_discover_count;
extern ulong table_cache_size; extern ulong table_cache_size;
extern ulong max_connections,max_connect_errors, connect_timeout; extern ulong max_connections,max_connect_errors, connect_timeout;
extern ulong slave_net_timeout; extern ulong slave_net_timeout;
...@@ -1032,6 +1040,7 @@ extern uint opt_large_page_size; ...@@ -1032,6 +1040,7 @@ extern uint opt_large_page_size;
extern MYSQL_LOG mysql_log,mysql_slow_log,mysql_bin_log; extern MYSQL_LOG mysql_log,mysql_slow_log,mysql_bin_log;
extern FILE *bootstrap_file; extern FILE *bootstrap_file;
extern int bootstrap_error;
extern pthread_key(MEM_ROOT**,THR_MALLOC); extern pthread_key(MEM_ROOT**,THR_MALLOC);
extern pthread_mutex_t LOCK_mysql_create_db,LOCK_Acl,LOCK_open, extern pthread_mutex_t LOCK_mysql_create_db,LOCK_Acl,LOCK_open,
LOCK_thread_count,LOCK_mapped_file,LOCK_user_locks, LOCK_status, LOCK_thread_count,LOCK_mapped_file,LOCK_user_locks, LOCK_status,
...@@ -1236,6 +1245,29 @@ SQL_CRYPT *get_crypt_for_frm(void); ...@@ -1236,6 +1245,29 @@ SQL_CRYPT *get_crypt_for_frm(void);
#include "sql_view.h" #include "sql_view.h"
/* query_id */
typedef ulong query_id_t;
extern query_id_t query_id;
/*
increment query_id and return it.
but be sure it's never a 0
(2^32 at 1000 q/s rate will means an overflow every ~50 days.
*/
inline query_id_t next_query_id()
{
if (sizeof(query_id_t) <= 5) // assuming the compiler optimizes dead code away
{
query_id_t old_query_id=query_id;
if (unlikely(++query_id == 0))
query_id=1;
return old_query_id;
}
else
return query_id++;
}
/* Some inline functions for more speed */ /* Some inline functions for more speed */
inline bool add_item_to_list(THD *thd, Item *item) inline bool add_item_to_list(THD *thd, Item *item)
......
This diff is collapsed.
...@@ -762,7 +762,7 @@ public: ...@@ -762,7 +762,7 @@ public:
} save_result; } save_result;
LEX_STRING base; /* for structs */ LEX_STRING base; /* for structs */
set_var(enum_var_type type_arg, sys_var *var_arg, LEX_STRING *base_name_arg, set_var(enum_var_type type_arg, sys_var *var_arg, const LEX_STRING *base_name_arg,
Item *value_arg) Item *value_arg)
:var(var_arg), type(type_arg), base(*base_name_arg) :var(var_arg), type(type_arg), base(*base_name_arg)
{ {
......
This diff is collapsed.
...@@ -1200,7 +1200,7 @@ sp_instr_stmt::exec_stmt(THD *thd, LEX *lex) ...@@ -1200,7 +1200,7 @@ sp_instr_stmt::exec_stmt(THD *thd, LEX *lex)
thd->free_list= NULL; thd->free_list= NULL;
VOID(pthread_mutex_lock(&LOCK_thread_count)); VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->query_id= query_id++; thd->query_id= next_query_id();
VOID(pthread_mutex_unlock(&LOCK_thread_count)); VOID(pthread_mutex_unlock(&LOCK_thread_count));
reset_stmt_for_execute(thd, lex); reset_stmt_for_execute(thd, lex);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment