Below is the list of changes that have just been committed into a local
5.1 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2006-12-08 10:33:05+04:00, bar@stripped +10 -0
After merge fix
MERGE: 1.1810.1698.188
BitKeeper/deleted/.del-ctype_ucs_binlog.result~280d136b1a0bcf17@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Auto merged
MERGE: 1.4.3.2
BitKeeper/deleted/.del-ctype_ucs_binlog.result~280d136b1a0bcf17@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Merge rename: mysql-test/r/ctype_ucs_binlog.result -> BitKeeper/deleted/.del-ctype_ucs_binlog.result~280d136b1a0bcf17
client/mysqlbinlog.cc@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Auto merged
MERGE: 1.123.1.7
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test@stripped, 2006-12-08 10:07:43+04:00, bar@stripped +0 -1
after merge fix.
MERGE: 1.20.4.2
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Merge rename: mysql-test/t/mix_innodb_myisam_binlog.test -> mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
mysql-test/r/binlog_stm_mix_innodb_myisam.result@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Auto merged
MERGE: 1.24.6.2
mysql-test/r/binlog_stm_mix_innodb_myisam.result@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Merge rename: mysql-test/r/mix_innodb_myisam_binlog.result -> mysql-test/r/binlog_stm_mix_innodb_myisam.result
mysql-test/r/rpl_stm_charset.result@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Auto merged
MERGE: 1.20.3.2
mysql-test/r/rpl_stm_charset.result@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Merge rename: mysql-test/r/rpl_charset.result -> mysql-test/r/rpl_stm_charset.result
mysql-test/r/rpl_timezone.result@stripped, 2006-12-08 10:33:00+04:00, bar@stripped +12 -3
After merge fix
MERGE: 1.12.1.3
mysql-test/r/user_var-binlog.result@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Auto merged
MERGE: 1.5.1.2
mysql-test/t/mysqlbinlog.test@stripped, 2006-12-08 10:03:44+04:00, bar@stripped +0 -0
Auto merged
MERGE: 1.21.1.13
sql/log_event.cc@stripped, 2006-12-08 10:33:00+04:00, bar@stripped +40 -65
After merge fix
MERGE: 1.174.1.43
sql/log_event.h@stripped, 2006-12-08 10:33:00+04:00, bar@stripped +0 -0
After merge fix
MERGE: 1.122.1.5
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bar
# Host: bar.intranet.mysql.r18.ru
# Root: /usr/home/bar/mysql-5.1.b20396/RESYNC
--- 1.255/sql/log_event.cc 2006-12-08 10:33:16 +04:00
+++ 1.256/sql/log_event.cc 2006-12-08 10:33:16 +04:00
@@ -1183,7 +1183,7 @@ void Log_event::print_base64(IO_CACHE* f
my_b_printf(file, "%s\n", tmp_str);
if (!more)
- my_b_printf(file, "';\n");
+ my_b_printf(file, "'%s\n", print_event_info->delimiter);
my_free(tmp_str, MYF(0));
DBUG_VOID_RETURN;
@@ -1708,15 +1708,16 @@ void Query_log_event::print_query_header
if (different_db= memcmp(print_event_info->db, db, db_len + 1))
memcpy(print_event_info->db, db, db_len + 1);
if (db[0] && different_db)
- my_b_printf(file, "use %s;\n", db);
+ my_b_printf(file, "use %s%s\n", db, print_event_info->delimiter);
}
end=int10_to_str((long) when, strmov(buff,"SET TIMESTAMP="),10);
- *end++=';';
+ end= strmov(end, print_event_info->delimiter);
*end++='\n';
my_b_write(file, (byte*) buff, (uint) (end-buff));
if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
- my_b_printf(file,"SET @@session.pseudo_thread_id=%lu;\n",(ulong)thread_id);
+ my_b_printf(file,"SET @@session.pseudo_thread_id=%lu%s\n",
+ (ulong)thread_id, print_event_info->delimiter);
/*
If flags2_inited==0, this is an event from 3.23 or 4.0; nothing to
@@ -1745,7 +1746,7 @@ void Query_log_event::print_query_header
"@@session.sql_auto_is_null", &need_comma);
print_set_option(file, tmp, OPTION_RELAXED_UNIQUE_CHECKS, ~flags2,
"@@session.unique_checks", &need_comma);
- my_b_printf(file,";\n");
+ my_b_printf(file,"%s\n", print_event_info->delimiter);
print_event_info->flags2= flags2;
}
}
@@ -1773,15 +1774,17 @@ void Query_log_event::print_query_header
}
if (unlikely(print_event_info->sql_mode != sql_mode))
{
- my_b_printf(file,"SET @@session.sql_mode=%lu;\n",(ulong)sql_mode);
+ my_b_printf(file,"SET @@session.sql_mode=%lu%s\n",
+ (ulong)sql_mode, print_event_info->delimiter);
print_event_info->sql_mode= sql_mode;
}
}
if (print_event_info->auto_increment_increment != auto_increment_increment ||
print_event_info->auto_increment_offset != auto_increment_offset)
{
- my_b_printf(file,"SET @@session.auto_increment_increment=%lu, @@session.auto_increment_offset=%lu;\n",
- auto_increment_increment,auto_increment_offset);
+ my_b_printf(file,"SET @@session.auto_increment_increment=%lu, @@session.auto_increment_offset=%lu%s\n",
+ auto_increment_increment,auto_increment_offset,
+ print_event_info->delimiter);
print_event_info->auto_increment_increment= auto_increment_increment;
print_event_info->auto_increment_offset= auto_increment_offset;
}
@@ -1801,16 +1804,18 @@ void Query_log_event::print_query_header
if (cs_info)
{
/* for mysql client */
- my_b_printf(file, "/*!\\C %s */;\n", cs_info->csname);
+ my_b_printf(file, "/*!\\C %s */%s\n",
+ cs_info->csname, print_event_info->delimiter);
}
my_b_printf(file,"SET "
"@@session.character_set_client=%d,"
"@@session.collation_connection=%d,"
"@@session.collation_server=%d"
- ";\n",
+ "%s\n",
uint2korr(charset),
uint2korr(charset+2),
- uint2korr(charset+4));
+ uint2korr(charset+4),
+ print_event_info->delimiter);
memcpy(print_event_info->charset, charset, 6);
}
}
@@ -1818,7 +1823,8 @@ void Query_log_event::print_query_header
{
if (bcmp(print_event_info->time_zone_str, time_zone_str, time_zone_len+1))
{
- my_b_printf(file,"SET @@session.time_zone='%s';\n", time_zone_str);
+ my_b_printf(file,"SET @@session.time_zone='%s'%s\n",
+ time_zone_str, print_event_info->delimiter);
memcpy(print_event_info->time_zone_str, time_zone_str, time_zone_len+1);
}
}
@@ -1831,7 +1837,7 @@ void Query_log_event::print(FILE* file,
print_query_header(&cache, print_event_info);
my_b_write(&cache, (byte*) query, q_len);
- my_b_printf(&cache, ";\n");
+ my_b_printf(&cache, "%s\n", print_event_info->delimiter);
}
#endif /* MYSQL_CLIENT */
@@ -2188,9 +2194,9 @@ void Start_log_event_v3::print(FILE* fil
and rollback unfinished transaction.
Probably this can be done with RESET CONNECTION (syntax to be defined).
*/
- my_b_printf(&cache,"RESET CONNECTION;\n");
+ my_b_printf(&cache,"RESET CONNECTION%s\n", print_event_info->delimiter);
#else
- my_b_printf(&cache,"ROLLBACK;\n");
+ my_b_printf(&cache,"ROLLBACK%s\n", print_event_info->delimiter);
#endif
}
DBUG_VOID_RETURN;
@@ -2945,15 +2951,16 @@ void Load_log_event::print(FILE* file_ar
}
if (db && db[0] && different_db)
- my_b_printf(&cache, "%suse %s;\n",
+ my_b_printf(&cache, "%suse %s%s\n",
commented ? "# " : "",
- db);
+ db, print_event_info->delimiter);
if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
- my_b_printf(&cache,"%sSET @@session.pseudo_thread_id=%lu;\n",
- commented ? "# " : "", (ulong)thread_id);
+ my_b_printf(&cache,"%sSET @@session.pseudo_thread_id=%lu%s\n",
+ commented ? "# " : "", (ulong)thread_id,
+ print_event_info->delimiter);
my_b_printf(&cache, "%sLOAD DATA ",
- commented ? "# " : "");
+ commented ? "# " : "");
if (check_fname_outside_temp_buf())
my_b_printf(&cache, "LOCAL ");
my_b_printf(&cache, "INFILE '%-*s' ", fname_len, fname);
@@ -3003,7 +3010,7 @@ void Load_log_event::print(FILE* file_ar
my_b_printf(&cache, ")");
}
- my_b_printf(&cache, ";\n");
+ my_b_printf(&cache, "%s\n", print_event_info->delimiter);
DBUG_VOID_RETURN;
}
#endif /* MYSQL_CLIENT */
@@ -3582,7 +3589,8 @@ void Intvar_log_event::print(FILE* file,
msg="INVALID_INT";
break;
}
- my_b_printf(&cache, "%s=%s;\n", msg, llstr(val,llbuff));
+ my_b_printf(&cache, "%s=%s%s\n",
+ msg, llstr(val,llbuff), print_event_info->delimiter);
}
#endif
@@ -3660,8 +3668,9 @@ void Rand_log_event::print(FILE* file, P
print_header(&cache, print_event_info, FALSE);
my_b_printf(&cache, "\tRand\n");
}
- my_b_printf(&cache, "SET @@RAND_SEED1=%s, @@RAND_SEED2=%s;\n",
- llstr(seed1, llbuff),llstr(seed2, llbuff2));
+ my_b_printf(&cache, "SET @@RAND_SEED1=%s, @@RAND_SEED2=%s%s\n",
+ llstr(seed1, llbuff),llstr(seed2, llbuff2),
+ print_event_info->delimiter);
}
#endif /* MYSQL_CLIENT */
@@ -3734,7 +3743,7 @@ void Xid_log_event::print(FILE* file, PR
print_header(&cache, print_event_info, FALSE);
my_b_printf(&cache, "\tXid = %s\n", buf);
}
- my_b_printf(&cache, "COMMIT;\n");
+ my_b_printf(&cache, "COMMIT%s\n", print_event_info->delimiter);
}
#endif /* MYSQL_CLIENT */
@@ -3939,7 +3948,7 @@ void User_var_log_event::print(FILE* fil
if (is_null)
{
- my_b_printf(&cache, ":=NULL;\n");
+ my_b_printf(&cache, ":=NULL%s\n", print_event_info->delimiter);
}
else
{
@@ -3947,12 +3956,12 @@ void User_var_log_event::print(FILE* fil
case REAL_RESULT:
double real_val;
float8get(real_val, val);
- my_b_printf(&cache, ":=%.14g;\n", real_val);
+ my_b_printf(&cache, ":=%.14g%s\n", real_val, print_event_info->delimiter);
break;
case INT_RESULT:
char int_buf[22];
longlong10_to_str(uint8korr(val), int_buf, -10);
- my_b_printf(&cache, ":=%s;\n", int_buf);
+ my_b_printf(&cache, ":=%s%s\n", int_buf, print_event_info->delimiter);
break;
case DECIMAL_RESULT:
{
@@ -3968,7 +3977,7 @@ void User_var_log_event::print(FILE* fil
bin2decimal(val+2, &dec, precision, scale);
decimal2string(&dec, str_buf, &str_len, 0, 0, 0);
str_buf[str_len]= 0;
- my_b_printf(&cache, ":=%s;\n",str_buf);
+ my_b_printf(&cache, ":=%s%s\n", str_buf, print_event_info->delimiter);
break;
}
case STRING_RESULT:
@@ -4004,9 +4013,11 @@ void User_var_log_event::print(FILE* fil
Generate an unusable command (=> syntax error) is probably the best
thing we can do here.
*/
- my_b_printf(&cache, ":=???;\n");
+ my_b_printf(&cache, ":=???%s\n", print_event_info->delimiter);
else
- my_b_printf(&cache, ":=_%s %s COLLATE `%s`;\n", cs->csname, hex_str, cs->name);
+ my_b_printf(&cache, ":=_%s %s COLLATE `%s`%s\n",
+ cs->csname, hex_str, cs->name,
+ print_event_info->delimiter);
my_afree(hex_str);
}
break;
@@ -5108,12 +5119,12 @@ void Execute_load_query_log_event::print
my_b_printf(&cache, " REPLACE");
my_b_printf(&cache, " INTO");
my_b_write(&cache, (byte*) query + fn_pos_end, q_len-fn_pos_end);
- my_b_printf(&cache, ";\n");
+ my_b_printf(&cache, "%s\n", print_event_info->delimiter);
}
else
{
my_b_write(&cache, (byte*) query, q_len);
- my_b_printf(&cache, ";\n");
+ my_b_printf(&cache, "%s\n", print_event_info->delimiter);
}
if (!print_event_info->short_form)
--- 1.139/sql/log_event.h 2006-12-08 10:33:16 +04:00
+++ 1.140/sql/log_event.h 2006-12-08 10:33:16 +04:00
@@ -537,6 +537,7 @@ typedef struct st_print_event_info
bzero(db, sizeof(db));
bzero(charset, sizeof(charset));
bzero(time_zone_str, sizeof(time_zone_str));
+ strcpy(delimiter, ";");
uint const flags = MYF(MY_WME | MY_NABP);
init_io_cache(&head_cache, -1, 0, WRITE_CACHE, 0L, FALSE, flags);
init_io_cache(&body_cache, -1, 0, WRITE_CACHE, 0L, FALSE, flags);
@@ -553,6 +554,7 @@ typedef struct st_print_event_info
bool base64_output;
my_off_t hexdump_from;
uint8 common_header_len;
+ char delimiter[16];
/*
These two caches are used by the row-based replication events to
--- 1.136/client/mysqlbinlog.cc 2006-12-08 10:33:16 +04:00
+++ 1.137/client/mysqlbinlog.cc 2006-12-08 10:33:16 +04:00
@@ -95,8 +95,10 @@ static bool stop_passed= 0;
*/
Format_description_log_event* description_event;
-static int dump_local_log_entries(const char* logname);
-static int dump_remote_log_entries(const char* logname);
+static int dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
+ const char* logname);
+static int dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
+ const char* logname);
static int dump_log_entries(const char* logname);
static int dump_remote_file(NET* net, const char* fname);
static void die(const char* fmt, ...);
@@ -1000,8 +1002,22 @@ static MYSQL* safe_connect()
static int dump_log_entries(const char* logname)
{
- return (remote_opt ? dump_remote_log_entries(logname) :
- dump_local_log_entries(logname));
+ int rc;
+ PRINT_EVENT_INFO print_event_info;
+ /*
+ Set safe delimiter, to dump things
+ like CREATE PROCEDURE safely
+ */
+ fprintf(result_file, "DELIMITER /*!*/;\n");
+ strcpy(print_event_info.delimiter, "/*!*/;");
+
+ rc= (remote_opt ? dump_remote_log_entries(&print_event_info, logname) :
+ dump_local_log_entries(&print_event_info, logname));
+
+ /* Set delimiter back to semicolon */
+ fprintf(result_file, "DELIMITER ;\n");
+ strcpy(print_event_info.delimiter, ";");
+ return rc;
}
@@ -1066,11 +1082,11 @@ static int check_master_version(MYSQL* m
}
-static int dump_remote_log_entries(const char* logname)
+static int dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
+ const char* logname)
{
char buf[128];
- PRINT_EVENT_INFO print_event_info;
ulong len;
uint logname_len;
NET* net;
@@ -1193,7 +1209,7 @@ could be out of memory");
len= 1; // fake Rotate, so don't increment old_off
}
}
- if ((error= process_event(&print_event_info, ev, old_off)))
+ if ((error= process_event(print_event_info, ev, old_off)))
{
error= ((error < 0) ? 0 : 1);
goto err;
@@ -1212,7 +1228,7 @@ could be out of memory");
goto err;
}
- if ((error= process_event(&print_event_info, ev, old_off)))
+ if ((error= process_event(print_event_info, ev, old_off)))
{
my_close(file,MYF(MY_WME));
error= ((error < 0) ? 0 : 1);
@@ -1338,11 +1354,11 @@ at offset %lu ; this could be a log form
}
-static int dump_local_log_entries(const char* logname)
+static int dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
+ const char* logname)
{
File fd = -1;
IO_CACHE cache,*file= &cache;
- PRINT_EVENT_INFO print_event_info;
byte tmp_buff[BIN_LOG_HEADER_SIZE];
int error= 0;
@@ -1429,7 +1445,7 @@ static int dump_local_log_entries(const
// file->error == 0 means EOF, that's OK, we break in this case
break;
}
- if ((error= process_event(&print_event_info, ev, old_off)))
+ if ((error= process_event(print_event_info, ev, old_off)))
{
if (error < 0)
error= 0;
--- 1.18/mysql-test/r/rpl_timezone.result 2006-12-08 10:33:16 +04:00
+++ 1.19/mysql-test/r/rpl_timezone.result 2006-12-08 10:33:16 +04:00
@@ -39,6 +39,38 @@ SELECT * FROM t1 ORDER BY n;
t n
2004-01-01 00:00:00 5
2004-06-11 09:39:02 6
+select * from t1;
+t
+2004-01-01 00:00:00
+2004-06-11 09:39:02
+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
+DELIMITER /*!*/;
+ROLLBACK/*!*/;
+use test/*!*/;
+SET TIMESTAMP=100000000/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+create table t1 (t timestamp)/*!*/;
+SET TIMESTAMP=100000000/*!*/;
+create table t2 (t char(32))/*!*/;
+SET TIMESTAMP=100000000/*!*/;
+SET @@session.time_zone='Europe/Moscow'/*!*/;
+insert into t1 values ('20050101000000'), ('20050611093902')/*!*/;
+SET TIMESTAMP=100000000/*!*/;
+SET @@session.time_zone='UTC'/*!*/;
+insert into t1 values ('20040101000000'), ('20040611093902')/*!*/;
+SET TIMESTAMP=100000000/*!*/;
+delete from t1/*!*/;
+SET TIMESTAMP=100000000/*!*/;
+SET @@session.time_zone='Europe/Moscow'/*!*/;
+insert into t1 values ('20040101000000'), ('20040611093902')/*!*/;
+DELIMITER ;
+# End of log file
+ROLLBACK /* added by mysqlbinlog */;
+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
delete from t1;
set time_zone='UTC';
load data infile '../std_data_ln/rpl_timezone2.dat' into table t1;
--- 1.30/mysql-test/t/mysqlbinlog.test 2006-12-08 10:33:16 +04:00
+++ 1.31/mysql-test/t/mysqlbinlog.test 2006-12-08 10:33:16 +04:00
@@ -136,6 +136,30 @@ flush logs;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
select * from t5 /* must be (1),(1) */;
+#
+# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
+#
+--disable_warnings
+drop procedure if exists p1;
+--enable_warnings
+flush logs;
+delimiter //;
+create procedure p1()
+begin
+select 1;
+end;
+//
+delimiter ;//
+flush logs;
+call p1();
+drop procedure p1;
+--error 1305
+call p1();
+--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007
+--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL
+call p1();
+drop procedure p1;
+
# clean up
drop table t1, t2, t03, t04, t3, t4, t5;
--- 1.24.6.1/mysql-test/r/mix_innodb_myisam_binlog.result 2006-12-08 10:33:16 +04:00
+++ 1.34/mysql-test/r/binlog_stm_mix_innodb_myisam.result 2006-12-08 10:33:16 +04:00
@@ -6,12 +6,12 @@ begin;
insert into t1 values(1);
insert into t2 select * from t1;
commit;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(1)
-master-bin.000001 253 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 347 Xid 1 # COMMIT /* xid=8 */
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(1)
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -21,12 +21,12 @@ insert into t2 select * from t1;
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(2)
-master-bin.000001 253 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 347 Query 1 # use `test`; ROLLBACK
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(2)
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; ROLLBACK
delete from t1;
delete from t2;
reset master;
@@ -39,15 +39,15 @@ rollback to savepoint my_savepoint;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
commit;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(3)
-master-bin.000001 253 Query 1 # use `test`; savepoint my_savepoint
-master-bin.000001 338 Query 1 # use `test`; insert into t1 values(4)
-master-bin.000001 425 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 519 Query 1 # use `test`; rollback to savepoint my_savepoint
-master-bin.000001 616 Xid 1 # COMMIT /* xid=25 */
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(3)
+master-bin.000001 # Query 1 # use `test`; savepoint my_savepoint
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(4)
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; rollback to savepoint my_savepoint
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -65,16 +65,16 @@ select a from t1 order by a;
a
5
7
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(5)
-master-bin.000001 253 Query 1 # use `test`; savepoint my_savepoint
-master-bin.000001 338 Query 1 # use `test`; insert into t1 values(6)
-master-bin.000001 425 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 519 Query 1 # use `test`; rollback to savepoint my_savepoint
-master-bin.000001 616 Query 1 # use `test`; insert into t1 values(7)
-master-bin.000001 703 Xid 1 # COMMIT /* xid=37 */
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(5)
+master-bin.000001 # Query 1 # use `test`; savepoint my_savepoint
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(6)
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; rollback to savepoint my_savepoint
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(7)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -87,43 +87,43 @@ insert into t2 select * from t1;
select get_lock("a",10);
get_lock("a",10)
1
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(8)
-master-bin.000001 253 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 347 Query 1 # use `test`; ROLLBACK
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(8)
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; ROLLBACK
delete from t1;
delete from t2;
reset master;
insert into t1 values(9);
insert into t2 select * from t1;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; insert into t1 values(9)
-master-bin.000001 185 Xid 1 # COMMIT /* xid=60 */
-master-bin.000001 212 Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(9)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
delete from t1;
delete from t2;
reset master;
insert into t1 values(10);
begin;
insert into t2 select * from t1;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; insert into t1 values(10)
-master-bin.000001 186 Xid 1 # COMMIT /* xid=66 */
-master-bin.000001 213 Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(10)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
insert into t1 values(11);
commit;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; insert into t1 values(10)
-master-bin.000001 186 Xid 1 # COMMIT /* xid=66 */
-master-bin.000001 213 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 307 Query 1 # use `test`; BEGIN
-master-bin.000001 375 Query 1 # use `test`; insert into t1 values(11)
-master-bin.000001 463 Xid 1 # COMMIT /* xid=68 */
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(10)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(11)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
alter table t2 engine=INNODB;
delete from t1;
delete from t2;
@@ -132,12 +132,12 @@ begin;
insert into t1 values(12);
insert into t2 select * from t1;
commit;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(12)
-master-bin.000001 254 Query 1 # use `test`; insert into t2 select * from t1
-master-bin.000001 348 Xid 1 # COMMIT /* xid=78 */
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(12)
+master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -145,7 +145,7 @@ begin;
insert into t1 values(13);
insert into t2 select * from t1;
rollback;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
delete from t1;
delete from t2;
@@ -157,11 +157,11 @@ insert into t1 values(15);
insert into t2 select * from t1;
rollback to savepoint my_savepoint;
commit;
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(14)
-master-bin.000001 254 Xid 1 # COMMIT /* xid=94 */
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(14)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -177,15 +177,15 @@ select a from t1 order by a;
a
16
18
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(16)
-master-bin.000001 254 Query 1 # use `test`; insert into t1 values(18)
-master-bin.000001 342 Xid 1 # COMMIT /* xid=105 */
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(16)
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(18)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
delete from t1;
delete from t2;
-alter table t2 type=MyISAM;
+alter table t2 engine=MyISAM;
insert into t1 values (1);
begin;
select * from t1 for update;
@@ -209,8 +209,6 @@ commit;
begin;
create temporary table ti (a int) engine=innodb;
rollback;
-Warnings:
-Warning 1196 Some non-transactional changed tables couldn't be rolled back
insert into ti values(1);
set autocommit=0;
create temporary table t1 (a int) engine=myisam;
@@ -229,33 +227,134 @@ insert into t2 values (3);
select get_lock("lock1",60);
get_lock("lock1",60)
1
-show binlog events from 98;
+show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 98 Query 1 # use `test`; BEGIN
-master-bin.000001 166 Query 1 # use `test`; insert into t1 values(16)
-master-bin.000001 254 Query 1 # use `test`; insert into t1 values(18)
-master-bin.000001 342 Xid 1 # COMMIT /* xid=105 */
-master-bin.000001 369 Query 1 # use `test`; delete from t1
-master-bin.000001 446 Xid 1 # COMMIT /* xid=114 */
-master-bin.000001 473 Query 1 # use `test`; delete from t2
-master-bin.000001 550 Xid 1 # COMMIT /* xid=115 */
-master-bin.000001 577 Query 1 # use `test`; alter table t2 type=MyISAM
-master-bin.000001 666 Query 1 # use `test`; insert into t1 values (1)
-master-bin.000001 754 Xid 1 # COMMIT /* xid=117 */
-master-bin.000001 781 Query 1 # use `test`; insert into t2 values (20)
-master-bin.000001 870 Query 1 # use `test`; drop table t1,t2
-master-bin.000001 949 Query 1 # use `test`; create temporary table ti (a int) engine=innodb
-master-bin.000001 1059 Query 1 # use `test`; insert into ti values(1)
-master-bin.000001 1146 Xid 1 # COMMIT /* xid=132 */
-master-bin.000001 1173 Query 1 # use `test`; create temporary table t1 (a int) engine=myisam
-master-bin.000001 1283 Query 1 # use `test`; insert t1 values (1)
-master-bin.000001 1366 Query 1 # use `test`; create table t0 (n int)
-master-bin.000001 1452 Query 1 # use `test`; insert t0 select * from t1
-master-bin.000001 1541 Query 1 # use `test`; insert into t0 select GET_LOCK("lock1",null)
-master-bin.000001 1648 Query 1 # use `test`; create table t2 (n int) engine=innodb
-master-bin.000001 1748 Query 1 # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(16)
+master-bin.000001 # Query 1 # use `test`; insert into t1 values(18)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; delete from t1
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; delete from t2
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; alter table t2 engine=MyISAM
+master-bin.000001 # Query 1 # use `test`; insert into t1 values (1)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; insert into t2 values (20)
+master-bin.000001 # Query 1 # use `test`; drop table t1,t2
+master-bin.000001 # Query 1 # use `test`; create temporary table ti (a int) engine=innodb
+master-bin.000001 # Query 1 # use `test`; insert into ti values(1)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; create temporary table t1 (a int) engine=myisam
+master-bin.000001 # Query 1 # use `test`; insert t1 values (1)
+master-bin.000001 # Query 1 # use `test`; create table t0 (n int)
+master-bin.000001 # Query 1 # use `test`; insert t0 select * from t1
+master-bin.000001 # Query 1 # use `test`; insert into t0 select GET_LOCK("lock1",null)
+master-bin.000001 # Query 1 # use `test`; create table t2 (n int) engine=innodb
+master-bin.000001 # Query 1 # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
do release_lock("lock1");
drop table t0,t2;
+set autocommit=0;
+CREATE TABLE t1 (a int, b int) engine=myisam;
+reset master;
+INSERT INTO t1 values (1,1),(1,2);
+CREATE TABLE t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+DROP TABLE if exists t2;
+Warnings:
+Note 1051 Unknown table 't2'
+INSERT INTO t1 values (3,3);
+CREATE TEMPORARY TABLE t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DROP TABLE IF EXISTS t2;
+Warnings:
+Note 1051 Unknown table 't2'
+CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb;
+INSERT INTO t1 VALUES (4,4);
+CREATE TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t2;
+a b
+TRUNCATE table t2;
+INSERT INTO t1 VALUES (5,5);
+INSERT INTO t2 select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * FROM t2;
+a b
+DROP TABLE t2;
+INSERT INTO t1 values (6,6);
+CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb ;
+INSERT INTO t1 values (7,7);
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+INSERT INTO t1 values (8,8);
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+COMMIT;
+INSERT INTO t1 values (9,9);
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+SELECT * from t2;
+a b
+TRUNCATE table t2;
+INSERT INTO t1 values (10,10);
+INSERT INTO t2 select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t1;
+a b
+1 1
+1 2
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 9
+10 10
+INSERT INTO t2 values (100,100);
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+COMMIT;
+INSERT INTO t2 values (101,101);
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+ROLLBACK;
+SELECT * from t2;
+a b
+100 100
+DROP TABLE t1,t2;
+show binlog events from 102;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (1,1),(1,2)
+master-bin.000001 # Query 1 # use `test`; DROP TABLE if exists t2
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (3,3)
+master-bin.000001 # Query 1 # use `test`; DROP TABLE IF EXISTS t2
+master-bin.000001 # Query 1 # use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (4,4)
+master-bin.000001 # Query 1 # use `test`; TRUNCATE table t2
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (5,5)
+master-bin.000001 # Query 1 # use `test`; DROP TABLE t2
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (6,6)
+master-bin.000001 # Query 1 # use `test`; CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (7,7)
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (8,8)
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (9,9)
+master-bin.000001 # Query 1 # use `test`; TRUNCATE table t2
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (10,10)
+master-bin.000001 # Query 1 # use `test`; BEGIN
+master-bin.000001 # Query 1 # use `test`; INSERT INTO t2 values (100,100)
+master-bin.000001 # Xid 1 # COMMIT /* xid= */
+master-bin.000001 # Query 1 # use `test`; DROP TABLE t1,t2
reset master;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
--- 1.20.3.1/mysql-test/r/rpl_charset.result 2006-12-08 10:33:16 +04:00
+++ 1.24/mysql-test/r/rpl_stm_charset.result 2006-12-08 10:33:16 +04:00
@@ -103,7 +103,7 @@ a b
1 cp850_general_ci
drop database mysqltest2;
drop database mysqltest3;
-show binlog events from 98;
+show binlog events from 102;
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 mysqltest3
--- 1.20.4.1/mysql-test/t/mix_innodb_myisam_binlog.test 2006-12-08 10:33:16 +04:00
+++ 1.32/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test 2006-12-08 10:33:16 +04:00
@@ -9,6 +9,7 @@
-- source include/not_embedded.inc
-- source include/have_innodb.inc
+-- source include/have_debug.inc
--disable_warnings
drop table if exists t1, t2;
@@ -28,9 +29,9 @@ insert into t1 values(1);
insert into t2 select * from t1;
commit;
---replace_column 5 #
---replace_result "xid=15" "xid=8"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
delete from t1;
delete from t2;
@@ -42,8 +43,9 @@ insert into t2 select * from t1;
# should say some changes to non-transact1onal tables couldn't be rolled back
rollback;
---replace_column 5 #
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
delete from t1;
delete from t2;
@@ -57,9 +59,9 @@ insert into t2 select * from t1;
rollback to savepoint my_savepoint;
commit;
---replace_column 5 #
---replace_result "xid=48" "xid=25"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
delete from t1;
delete from t2;
@@ -75,9 +77,9 @@ insert into t1 values(7);
commit;
select a from t1 order by a; # check that savepoints work :)
---replace_column 5 #
---replace_result "xid=70" "xid=37"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
# and when ROLLBACK is not explicit?
delete from t1;
@@ -97,8 +99,9 @@ connection con2;
# so SHOW BINLOG EVENTS may come before con1 does the loggin. To be sure that
# logging has been done, we use a user lock.
select get_lock("a",10);
---replace_column 5 #
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
# and when not in a transact1on?
delete from t1;
@@ -108,9 +111,9 @@ reset master;
insert into t1 values(9);
insert into t2 select * from t1;
---replace_column 5 #
---replace_result "xid=119" "xid=60"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
# Check that when the query updat1ng the MyISAM table is the first in the
# transaction, we log it immediately.
@@ -121,15 +124,15 @@ reset master;
insert into t1 values(10); # first make t1 non-empty
begin;
insert into t2 select * from t1;
---replace_column 5 #
---replace_result "xid=133" "xid=66"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
insert into t1 values(11);
commit;
---replace_column 5 #
---replace_result "xid=133" "xid=66" "xid=136" "xid=68"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
# Check that things work like before this BEGIN/ROLLBACK code was added,
@@ -146,9 +149,9 @@ insert into t1 values(12);
insert into t2 select * from t1;
commit;
---replace_column 5 #
---replace_result "xid=155" "xid=78"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
delete from t1;
delete from t2;
@@ -159,8 +162,9 @@ insert into t1 values(13);
insert into t2 select * from t1;
rollback;
---replace_column 5 #
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
delete from t1;
delete from t2;
@@ -174,9 +178,9 @@ insert into t2 select * from t1;
rollback to savepoint my_savepoint;
commit;
---replace_column 5 #
---replace_result "xid=187" "xid=94"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
delete from t1;
delete from t2;
@@ -192,9 +196,9 @@ insert into t1 values(18);
commit;
select a from t1 order by a; # check that savepoints work :)
---replace_column 5 #
---replace_result "xid=208" "xid=105"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
# Test for BUG#5714, where a MyISAM update in the transaction used to
# release row-level locks in InnoDB
@@ -205,7 +209,7 @@ connection con3;
delete from t1;
delete from t2;
--disable_warnings
-alter table t2 type=MyISAM;
+alter table t2 engine=MyISAM;
--enable_warnings
insert into t1 values (1);
begin;
@@ -230,8 +234,8 @@ select (@after-@before) >= 2;
drop table t1,t2;
commit;
-# test for BUG#7947 - DO RELEASE_LOCK() not written to binlog on rollback in the middle
-# of a transaction
+# test for BUG#7947 - DO RELEASE_LOCK() not written to binlog on rollback in
+# the middle of a transaction
connection con2;
begin;
@@ -253,14 +257,77 @@ insert into t2 values (3);
disconnect con2;
connection con3;
select get_lock("lock1",60);
---replace_column 5 #
---replace_result "xid=208" "xid=105" "xid=227" "xid=114" "xid=230" "xid=115" "xid=234" "xid=117" "xid=261" "xid=132"
-show binlog events from 98;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
do release_lock("lock1");
drop table t0,t2;
# End of 4.1 tests
+#
+# Test behaviour of CREATE ... SELECT when mixing MyISAM and InnoDB tables
+#
+
+set autocommit=0;
+CREATE TABLE t1 (a int, b int) engine=myisam;
+reset master;
+INSERT INTO t1 values (1,1),(1,2);
+--error 1062
+CREATE TABLE t2 (primary key (a)) engine=innodb select * from t1;
+# This should give warning
+DROP TABLE if exists t2;
+INSERT INTO t1 values (3,3);
+--error 1062
+CREATE TEMPORARY TABLE t2 (primary key (a)) engine=innodb select * from t1;
+ROLLBACK;
+# This should give warning
+DROP TABLE IF EXISTS t2;
+
+CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb;
+INSERT INTO t1 VALUES (4,4);
+--error 1062
+CREATE TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+SELECT * from t2;
+TRUNCATE table t2;
+INSERT INTO t1 VALUES (5,5);
+--error 1062
+INSERT INTO t2 select * from t1;
+SELECT * FROM t2;
+DROP TABLE t2;
+
+INSERT INTO t1 values (6,6);
+CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb ;
+INSERT INTO t1 values (7,7);
+ROLLBACK;
+INSERT INTO t1 values (8,8);
+--error 1062
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+COMMIT;
+INSERT INTO t1 values (9,9);
+--error 1062
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ROLLBACK;
+SELECT * from t2;
+TRUNCATE table t2;
+INSERT INTO t1 values (10,10);
+--error 1062
+INSERT INTO t2 select * from t1;
+SELECT * from t1;
+INSERT INTO t2 values (100,100);
+--error 1062
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+COMMIT;
+INSERT INTO t2 values (101,101);
+--error 1062
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
+ROLLBACK;
+SELECT * from t2;
+DROP TABLE t1,t2;
+--replace_column 2 # 5 #
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+show binlog events from 102;
+
# Test for BUG#16559 (ROLLBACK should always have a zero error code in
# binlog). Has to be here and not earlier, as the SELECTs influence
# XIDs differently between normal and ps-protocol (and SHOW BINLOG
@@ -280,16 +347,3 @@ disconnect con3;
connection con4;
select get_lock("a",10); # wait for rollback to finish
-# we check that the error code of the "ROLLBACK" event is 0 and not
-# ER_SERVER_SHUTDOWN (i.e. disconnection just rolls back transaction
-# and does not make slave to stop)
---exec $MYSQL_BINLOG --start-position=547 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-eval select
-(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
-is not null;
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
-eval select
-@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
-@a not like "%#%error_code=%error_code=%";
-drop table t1, t2;
--- 1.7/mysql-test/r/user_var-binlog.result 2006-12-08 10:33:16 +04:00
+++ 1.8/mysql-test/r/user_var-binlog.result 2006-12-08 10:33:16 +04:00
@@ -15,19 +15,21 @@ master-bin.000001 # User var 1 # @`var2`
master-bin.000001 # Query 1 # use `test`; insert into t1 values (@var1),(@var2)
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
-ROLLBACK;
-SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`;
-use test;
-SET TIMESTAMP=10000;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
-SET @@session.sql_mode=0;
-/*!\C latin1 */;
-SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
-INSERT INTO t1 VALUES(@`a b`);
-SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
-SET @`var2`:=_binary 0x61 COLLATE `binary`;
-SET TIMESTAMP=10000;
-insert into t1 values (@var1),(@var2);
+DELIMITER /*!*/;
+ROLLBACK/*!*/;
+SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
+use test/*!*/;
+SET TIMESTAMP=10000/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+INSERT INTO t1 VALUES(@`a b`)/*!*/;
+SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`/*!*/;
+SET @`var2`:=_binary 0x61 COLLATE `binary`/*!*/;
+SET TIMESTAMP=10000/*!*/;
+insert into t1 values (@var1),(@var2)/*!*/;
+DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
| Thread |
|---|
| • bk commit into 5.1 tree (bar:1.2378) | bar | 8 Dec |