Loading mysql-test/r/rpl_insert_id.result 0 → 100644 +15 −0 Original line number Diff line number Diff line a 1 2 3 4 b c 1 4 a 10 11 12 13 b c 5 0 6 11 mysql-test/t/rpl_insert_id.test 0 → 100644 +39 −0 Original line number Diff line number Diff line #see if queries that use both #auto_increment and LAST_INSERT_ID() #are replicated well source include/master-slave.inc; connection master; drop table if exists t1; create table t1(a int auto_increment, key(a)); create table t2(b int auto_increment, c int, key(b)); insert into t1 values (1),(2),(3); insert into t1 values (null); insert into t2 values (null,last_insert_id()); save_master_pos; connection slave; sync_with_master; select * from t1; select * from t2; connection master; #check if multi-line inserts, #which set last_insert_id to the first id inserted, #are replicated the same way drop table t1; drop table t2; create table t1(a int auto_increment, key(a)); create table t2(b int auto_increment, c int, key(b)); insert into t1 values (10); insert into t1 values (null),(null),(null); insert into t2 values (5,0); insert into t2 values (null,last_insert_id()); save_master_pos; connection slave; sync_with_master; select * from t1; select * from t2; connection master; drop table t1; drop table t2; save_master_pos; connection slave; sync_with_master; sql/log.cc +1 −1 Original line number Diff line number Diff line Loading @@ -697,7 +697,7 @@ bool MYSQL_LOG::write(Query_log_event* event_info) if (thd->last_insert_id_used) { Intvar_log_event e((uchar)LAST_INSERT_ID_EVENT, thd->last_insert_id); Intvar_log_event e((uchar)LAST_INSERT_ID_EVENT, thd->current_insert_id); if(thd->server_id) e.server_id = thd->server_id; if (e.write(file)) Loading sql/sql_base.cc +6 −13 Original line number Diff line number Diff line Loading @@ -522,26 +522,19 @@ void close_temporary_tables(THD *thd) { TABLE *table,*next; char *query, *end; const uint init_query_buf_size = 11; // "drop table " uint query_buf_size; bool found_user_tables = 0; LINT_INIT(end); query_buf_size = init_query_buf_size; for (table=thd->temporary_tables ; table ; table=table->next) { query_buf_size += table->key_length; } if (query_buf_size == init_query_buf_size) if (!thd->temporary_tables) return; // no tables to close query_buf_size= 11; // "drop table " for (table=thd->temporary_tables ; table ; table=table->next) query_buf_size+= table->key_length +1; if ((query = alloc_root(&thd->mem_root, query_buf_size))) { memcpy(query, "drop table ", init_query_buf_size); end = query + init_query_buf_size; } end= strmov(query, "drop table "); for (table=thd->temporary_tables ; table ; table=next) { Loading Loading
mysql-test/r/rpl_insert_id.result 0 → 100644 +15 −0 Original line number Diff line number Diff line a 1 2 3 4 b c 1 4 a 10 11 12 13 b c 5 0 6 11
mysql-test/t/rpl_insert_id.test 0 → 100644 +39 −0 Original line number Diff line number Diff line #see if queries that use both #auto_increment and LAST_INSERT_ID() #are replicated well source include/master-slave.inc; connection master; drop table if exists t1; create table t1(a int auto_increment, key(a)); create table t2(b int auto_increment, c int, key(b)); insert into t1 values (1),(2),(3); insert into t1 values (null); insert into t2 values (null,last_insert_id()); save_master_pos; connection slave; sync_with_master; select * from t1; select * from t2; connection master; #check if multi-line inserts, #which set last_insert_id to the first id inserted, #are replicated the same way drop table t1; drop table t2; create table t1(a int auto_increment, key(a)); create table t2(b int auto_increment, c int, key(b)); insert into t1 values (10); insert into t1 values (null),(null),(null); insert into t2 values (5,0); insert into t2 values (null,last_insert_id()); save_master_pos; connection slave; sync_with_master; select * from t1; select * from t2; connection master; drop table t1; drop table t2; save_master_pos; connection slave; sync_with_master;
sql/log.cc +1 −1 Original line number Diff line number Diff line Loading @@ -697,7 +697,7 @@ bool MYSQL_LOG::write(Query_log_event* event_info) if (thd->last_insert_id_used) { Intvar_log_event e((uchar)LAST_INSERT_ID_EVENT, thd->last_insert_id); Intvar_log_event e((uchar)LAST_INSERT_ID_EVENT, thd->current_insert_id); if(thd->server_id) e.server_id = thd->server_id; if (e.write(file)) Loading
sql/sql_base.cc +6 −13 Original line number Diff line number Diff line Loading @@ -522,26 +522,19 @@ void close_temporary_tables(THD *thd) { TABLE *table,*next; char *query, *end; const uint init_query_buf_size = 11; // "drop table " uint query_buf_size; bool found_user_tables = 0; LINT_INIT(end); query_buf_size = init_query_buf_size; for (table=thd->temporary_tables ; table ; table=table->next) { query_buf_size += table->key_length; } if (query_buf_size == init_query_buf_size) if (!thd->temporary_tables) return; // no tables to close query_buf_size= 11; // "drop table " for (table=thd->temporary_tables ; table ; table=table->next) query_buf_size+= table->key_length +1; if ((query = alloc_root(&thd->mem_root, query_buf_size))) { memcpy(query, "drop table ", init_query_buf_size); end = query + init_query_buf_size; } end= strmov(query, "drop table "); for (table=thd->temporary_tables ; table ; table=next) { Loading