mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
Problem: when loading mysqlbinlog dumps, CREATE PROCEDURE having semicolons in their bodies failed. Fix: Using safe delimiter "/*!*/;" to dump log entries.
This commit is contained in:

parent
153c57fa13
commit
a70028a855
@ -94,8 +94,10 @@ static bool stop_passed= 0;
|
|||||||
*/
|
*/
|
||||||
Format_description_log_event* description_event;
|
Format_description_log_event* description_event;
|
||||||
|
|
||||||
static int dump_local_log_entries(const char* logname);
|
static int dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
|
||||||
static int dump_remote_log_entries(const char* logname);
|
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_log_entries(const char* logname);
|
||||||
static int dump_remote_file(NET* net, const char* fname);
|
static int dump_remote_file(NET* net, const char* fname);
|
||||||
static void die(const char* fmt, ...);
|
static void die(const char* fmt, ...);
|
||||||
@ -950,8 +952,22 @@ static MYSQL* safe_connect()
|
|||||||
|
|
||||||
static int dump_log_entries(const char* logname)
|
static int dump_log_entries(const char* logname)
|
||||||
{
|
{
|
||||||
return (remote_opt ? dump_remote_log_entries(logname) :
|
int rc;
|
||||||
dump_local_log_entries(logname));
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1016,11 +1032,11 @@ static int check_master_version(MYSQL* mysql,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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];
|
char buf[128];
|
||||||
PRINT_EVENT_INFO print_event_info;
|
|
||||||
ulong len;
|
ulong len;
|
||||||
uint logname_len;
|
uint logname_len;
|
||||||
NET* net;
|
NET* net;
|
||||||
@ -1143,7 +1159,7 @@ could be out of memory");
|
|||||||
len= 1; // fake Rotate, so don't increment old_off
|
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);
|
error= ((error < 0) ? 0 : 1);
|
||||||
goto err;
|
goto err;
|
||||||
@ -1162,7 +1178,7 @@ could be out of memory");
|
|||||||
goto err;
|
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));
|
my_close(file,MYF(MY_WME));
|
||||||
error= ((error < 0) ? 0 : 1);
|
error= ((error < 0) ? 0 : 1);
|
||||||
@ -1288,11 +1304,11 @@ at offset %lu ; this could be a log format error or read error",
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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;
|
File fd = -1;
|
||||||
IO_CACHE cache,*file= &cache;
|
IO_CACHE cache,*file= &cache;
|
||||||
PRINT_EVENT_INFO print_event_info;
|
|
||||||
byte tmp_buff[BIN_LOG_HEADER_SIZE];
|
byte tmp_buff[BIN_LOG_HEADER_SIZE];
|
||||||
int error= 0;
|
int error= 0;
|
||||||
|
|
||||||
@ -1364,7 +1380,7 @@ static int dump_local_log_entries(const char* logname)
|
|||||||
// file->error == 0 means EOF, that's OK, we break in this case
|
// file->error == 0 means EOF, that's OK, we break in this case
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((error= process_event(&print_event_info, ev, old_off)))
|
if ((error= process_event(print_event_info, ev, old_off)))
|
||||||
{
|
{
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
error= 0;
|
error= 0;
|
||||||
|
@ -9,15 +9,17 @@ master-bin.000001 98 User var 1 138 @`v`=_ucs2 0x006100620063 COLLATE ucs2_gener
|
|||||||
master-bin.000001 138 Query 1 227 use `test`; insert into t2 values (@v)
|
master-bin.000001 138 Query 1 227 use `test`; insert into t2 values (@v)
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`;
|
ROLLBACK/*!*/;
|
||||||
use test;
|
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
|
||||||
SET TIMESTAMP=10000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=10000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
insert into t2 values (@v);
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t2 values (@v)/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
@ -275,8 +275,8 @@ is not null;
|
|||||||
is not null
|
is not null
|
||||||
1
|
1
|
||||||
select
|
select
|
||||||
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%",
|
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
|
||||||
@a not like "%#%error_code=%error_code=%";
|
@a not like "%#%error_code=%error_code=%";
|
||||||
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
|
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
|
||||||
1 1
|
1 1
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
@ -15,31 +15,33 @@ flush logs;
|
|||||||
--- Local --
|
--- Local --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
use test;
|
ROLLBACK/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
drop table if exists t1,t2;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
drop table if exists t1,t2/*!*/;
|
||||||
create table t1 (word varchar(20));
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
create table t1 (word varchar(20))/*!*/;
|
||||||
create table t2 (id int auto_increment not null primary key);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
create table t2 (id int auto_increment not null primary key)/*!*/;
|
||||||
insert into t1 values ("abirvalg");
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=1;
|
insert into t1 values ("abirvalg")/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=1/*!*/;
|
||||||
insert into t2 values ();
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
insert into t2 values ()/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-1-0' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-1-0' INTO table t1/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-2-0' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-2-0' INTO table t1/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-3-0' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-3-0' INTO table t1/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-4-0' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-4-0' INTO table t1/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -47,13 +49,15 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- Broken LOAD DATA --
|
--- Broken LOAD DATA --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
use test;
|
DELIMITER /*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
insert into t1 values ("Alas");
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t1 values ("Alas")/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -61,8 +65,10 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- --database --
|
--- --database --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
SET INSERT_ID=1;
|
ROLLBACK/*!*/;
|
||||||
|
SET INSERT_ID=1/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -70,13 +76,15 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- --position --
|
--- --position --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
use test;
|
DELIMITER /*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
insert into t1 values ("Alas");
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t1 values ("Alas")/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -84,31 +92,33 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- Remote --
|
--- Remote --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
use test;
|
ROLLBACK/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
drop table if exists t1,t2;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
drop table if exists t1,t2/*!*/;
|
||||||
create table t1 (word varchar(20));
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
create table t1 (word varchar(20))/*!*/;
|
||||||
create table t2 (id int auto_increment not null primary key);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
create table t2 (id int auto_increment not null primary key)/*!*/;
|
||||||
insert into t1 values ("abirvalg");
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=1;
|
insert into t1 values ("abirvalg")/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=1/*!*/;
|
||||||
insert into t2 values ();
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
insert into t2 values ()/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-1-2' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-1-2' INTO table t1/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-2-2' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-2-2' INTO table t1/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-3-2' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-3-2' INTO table t1/*!*/;
|
||||||
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-4-2' INTO table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-4-2' INTO table t1/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -116,13 +126,15 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- Broken LOAD DATA --
|
--- Broken LOAD DATA --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
use test;
|
DELIMITER /*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
insert into t1 values ("Alas");
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t1 values ("Alas")/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -130,8 +142,10 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- --database --
|
--- --database --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
SET INSERT_ID=1;
|
ROLLBACK/*!*/;
|
||||||
|
SET INSERT_ID=1/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -139,13 +153,15 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- --position --
|
--- --position --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
use test;
|
DELIMITER /*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
insert into t1 values ("Alas");
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t1 values ("Alas")/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -153,22 +169,26 @@ ROLLBACK /* added by mysqlbinlog */;
|
|||||||
--- reading stdin --
|
--- reading stdin --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
use test;
|
ROLLBACK/*!*/;
|
||||||
SET TIMESTAMP=1108844556;
|
use test/*!*/;
|
||||||
BEGIN;
|
SET TIMESTAMP=1108844556/*!*/;
|
||||||
SET TIMESTAMP=1108844555;
|
BEGIN/*!*/;
|
||||||
insert t1 values (1);
|
SET TIMESTAMP=1108844555/*!*/;
|
||||||
|
insert t1 values (1)/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
use test;
|
DELIMITER /*!*/;
|
||||||
SET TIMESTAMP=1108844556;
|
use test/*!*/;
|
||||||
BEGIN;
|
SET TIMESTAMP=1108844556/*!*/;
|
||||||
SET TIMESTAMP=1108844555;
|
BEGIN/*!*/;
|
||||||
insert t1 values (1);
|
SET TIMESTAMP=1108844555/*!*/;
|
||||||
|
insert t1 values (1)/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
@ -194,4 +214,39 @@ select * from t5 /* must be (1),(1) */;
|
|||||||
a
|
a
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
|
drop procedure if exists p1;
|
||||||
|
flush logs;
|
||||||
|
create procedure p1()
|
||||||
|
begin
|
||||||
|
select 1;
|
||||||
|
end;
|
||||||
|
//
|
||||||
|
flush logs;
|
||||||
|
call p1();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop procedure p1;
|
||||||
|
call p1();
|
||||||
|
ERROR 42000: PROCEDURE test.p1 does not exist
|
||||||
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
|
DELIMITER /*!*/;
|
||||||
|
use test/*!*/;
|
||||||
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
|
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 DEFINER=`root`@`localhost` procedure p1()
|
||||||
|
begin
|
||||||
|
select 1;
|
||||||
|
end/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
|
# End of log file
|
||||||
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
call p1();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop procedure p1;
|
||||||
drop table t1, t2, t03, t04, t3, t4, t5;
|
drop table t1, t2, t03, t04, t3, t4, t5;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -176,84 +176,86 @@ hex(c1) hex(c2)
|
|||||||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
ROLLBACK/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
drop database if exists mysqltest2;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
drop database if exists mysqltest2/*!*/;
|
||||||
drop database if exists mysqltest3;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
drop database if exists mysqltest3/*!*/;
|
||||||
create database mysqltest2 character set latin2;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
create database mysqltest2 character set latin2/*!*/;
|
||||||
/*!\C latin1 */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30;
|
/*!\C latin1 *//*!*/;
|
||||||
create database mysqltest3;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
create database mysqltest3/*!*/;
|
||||||
/*!\C latin1 */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=64;
|
/*!\C latin1 *//*!*/;
|
||||||
drop database mysqltest3;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=64/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
drop database mysqltest3/*!*/;
|
||||||
create database mysqltest3;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
use mysqltest2;
|
create database mysqltest3/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use mysqltest2/*!*/;
|
||||||
create table t1 (a int auto_increment primary key, b varchar(100));
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=1;
|
create table t1 (a int auto_increment primary key, b varchar(100))/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=1/*!*/;
|
||||||
/*!\C cp850 */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=4,@@session.collation_connection=27,@@session.collation_server=64;
|
/*!\C cp850 *//*!*/;
|
||||||
insert into t1 (b) values(@@character_set_server);
|
SET @@session.character_set_client=4,@@session.collation_connection=27,@@session.collation_server=64/*!*/;
|
||||||
SET INSERT_ID=2;
|
insert into t1 (b) values(@@character_set_server)/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=2/*!*/;
|
||||||
insert into t1 (b) values(@@collation_server);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=3;
|
insert into t1 (b) values(@@collation_server)/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=3/*!*/;
|
||||||
insert into t1 (b) values(@@character_set_client);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=4;
|
insert into t1 (b) values(@@character_set_client)/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=4/*!*/;
|
||||||
insert into t1 (b) values(@@character_set_connection);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=5;
|
insert into t1 (b) values(@@character_set_connection)/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=5/*!*/;
|
||||||
insert into t1 (b) values(@@collation_connection);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
insert into t1 (b) values(@@collation_connection)/*!*/;
|
||||||
/*!\C latin1 */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=5,@@session.collation_server=64;
|
/*!\C latin1 *//*!*/;
|
||||||
truncate table t1;
|
SET @@session.character_set_client=8,@@session.collation_connection=5,@@session.collation_server=64/*!*/;
|
||||||
SET INSERT_ID=1;
|
truncate table t1/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=1/*!*/;
|
||||||
insert into t1 (b) values(@@collation_connection);
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=2;
|
insert into t1 (b) values(@@collation_connection)/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=2/*!*/;
|
||||||
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=3;
|
insert into t1 (b) values(LEAST("M<>ller","Muffler"))/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=3/*!*/;
|
||||||
/*!\C latin1 */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=31,@@session.collation_server=64;
|
/*!\C latin1 *//*!*/;
|
||||||
insert into t1 (b) values(@@collation_connection);
|
SET @@session.character_set_client=8,@@session.collation_connection=31,@@session.collation_server=64/*!*/;
|
||||||
SET INSERT_ID=4;
|
insert into t1 (b) values(@@collation_connection)/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET INSERT_ID=4/*!*/;
|
||||||
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
insert into t1 (b) values(LEAST("M<>ller","Muffler"))/*!*/;
|
||||||
truncate table t1;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET INSERT_ID=1;
|
truncate table t1/*!*/;
|
||||||
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
|
SET INSERT_ID=1/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`/*!*/;
|
||||||
insert into t1 (b) values(collation(@a));
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
insert into t1 (b) values(collation(@a))/*!*/;
|
||||||
drop database mysqltest2;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
drop database mysqltest2/*!*/;
|
||||||
drop database mysqltest3;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
use test;
|
drop database mysqltest3/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
use test/*!*/;
|
||||||
/*!\C latin1 */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30;
|
/*!\C latin1 *//*!*/;
|
||||||
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30/*!*/;
|
||||||
SET TIMESTAMP=1000000000;
|
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255))/*!*/;
|
||||||
/*!\C koi8r */;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
SET @@session.character_set_client=7,@@session.collation_connection=51,@@session.collation_server=30;
|
/*!\C koi8r *//*!*/;
|
||||||
INSERT INTO t1 (c1, c2) VALUES ('<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
SET @@session.character_set_client=7,@@session.collation_connection=51,@@session.collation_server=30/*!*/;
|
||||||
|
INSERT INTO t1 (c1, c2) VALUES ('<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>')/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
@ -43,27 +43,29 @@ t
|
|||||||
2004-06-11 09:39:02
|
2004-06-11 09:39:02
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
use test;
|
ROLLBACK/*!*/;
|
||||||
SET TIMESTAMP=100000000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=100000000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
create table t1 (t timestamp);
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET TIMESTAMP=100000000;
|
create table t1 (t timestamp)/*!*/;
|
||||||
create table t2 (t char(32));
|
SET TIMESTAMP=100000000/*!*/;
|
||||||
SET TIMESTAMP=100000000;
|
create table t2 (t char(32))/*!*/;
|
||||||
SET @@session.time_zone='Europe/Moscow';
|
SET TIMESTAMP=100000000/*!*/;
|
||||||
insert into t1 values ('20050101000000'), ('20050611093902');
|
SET @@session.time_zone='Europe/Moscow'/*!*/;
|
||||||
SET TIMESTAMP=100000000;
|
insert into t1 values ('20050101000000'), ('20050611093902')/*!*/;
|
||||||
SET @@session.time_zone='UTC';
|
SET TIMESTAMP=100000000/*!*/;
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
SET @@session.time_zone='UTC'/*!*/;
|
||||||
SET TIMESTAMP=100000000;
|
insert into t1 values ('20040101000000'), ('20040611093902')/*!*/;
|
||||||
delete from t1;
|
SET TIMESTAMP=100000000/*!*/;
|
||||||
SET TIMESTAMP=100000000;
|
delete from t1/*!*/;
|
||||||
SET @@session.time_zone='Europe/Moscow';
|
SET TIMESTAMP=100000000/*!*/;
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
SET @@session.time_zone='Europe/Moscow'/*!*/;
|
||||||
|
insert into t1 values ('20040101000000'), ('20040611093902')/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
@ -15,19 +15,21 @@ master-bin.000001 273 User var 1 311 @`var2`=_binary 0x61 COLLATE binary
|
|||||||
master-bin.000001 311 Query 1 411 use `test`; insert into t1 values (@var1),(@var2)
|
master-bin.000001 311 Query 1 411 use `test`; insert into t1 values (@var1),(@var2)
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
ROLLBACK;
|
DELIMITER /*!*/;
|
||||||
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`;
|
ROLLBACK/*!*/;
|
||||||
use test;
|
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
|
||||||
SET TIMESTAMP=10000;
|
use test/*!*/;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET TIMESTAMP=10000/*!*/;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
/*!\C latin1 */;
|
SET @@session.sql_mode=0/*!*/;
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
/*!\C latin1 *//*!*/;
|
||||||
INSERT INTO t1 VALUES(@`a b`);
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
|
INSERT INTO t1 VALUES(@`a b`)/*!*/;
|
||||||
SET @`var2`:=_binary 0x61 COLLATE `binary`;
|
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`/*!*/;
|
||||||
SET TIMESTAMP=10000;
|
SET @`var2`:=_binary 0x61 COLLATE `binary`/*!*/;
|
||||||
insert into t1 values (@var1),(@var2);
|
SET TIMESTAMP=10000/*!*/;
|
||||||
|
insert into t1 values (@var1),(@var2)/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
@ -290,6 +290,6 @@ eval select
|
|||||||
is not null;
|
is not null;
|
||||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
eval select
|
eval select
|
||||||
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%",
|
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
|
||||||
@a not like "%#%error_code=%error_code=%";
|
@a not like "%#%error_code=%error_code=%";
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
@ -134,6 +134,30 @@ flush logs;
|
|||||||
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
|
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
|
||||||
select * from t5 /* must be (1),(1) */;
|
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
|
# clean up
|
||||||
drop table t1, t2, t03, t04, t3, t4, t5;
|
drop table t1, t2, t03, t04, t3, t4, t5;
|
||||||
|
|
||||||
|
@ -1506,15 +1506,16 @@ void Query_log_event::print_query_header(FILE* file,
|
|||||||
if (different_db= memcmp(print_event_info->db, db, db_len + 1))
|
if (different_db= memcmp(print_event_info->db, db, db_len + 1))
|
||||||
memcpy(print_event_info->db, db, db_len + 1);
|
memcpy(print_event_info->db, db, db_len + 1);
|
||||||
if (db[0] && different_db)
|
if (db[0] && different_db)
|
||||||
fprintf(file, "use %s;\n", db);
|
fprintf(file, "use %s%s\n", db, print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
|
|
||||||
end=int10_to_str((long) when, strmov(buff,"SET TIMESTAMP="),10);
|
end=int10_to_str((long) when, strmov(buff,"SET TIMESTAMP="),10);
|
||||||
*end++=';';
|
end= strmov(end, print_event_info->delimiter);
|
||||||
*end++='\n';
|
*end++='\n';
|
||||||
my_fwrite(file, (byte*) buff, (uint) (end-buff),MYF(MY_NABP | MY_WME));
|
my_fwrite(file, (byte*) buff, (uint) (end-buff),MYF(MY_NABP | MY_WME));
|
||||||
if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
|
if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
|
||||||
fprintf(file,"SET @@session.pseudo_thread_id=%lu;\n",(ulong)thread_id);
|
fprintf(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
|
If flags2_inited==0, this is an event from 3.23 or 4.0; nothing to
|
||||||
@ -1543,7 +1544,7 @@ void Query_log_event::print_query_header(FILE* file,
|
|||||||
"@@session.sql_auto_is_null", &need_comma);
|
"@@session.sql_auto_is_null", &need_comma);
|
||||||
print_set_option(file, tmp, OPTION_RELAXED_UNIQUE_CHECKS, ~flags2,
|
print_set_option(file, tmp, OPTION_RELAXED_UNIQUE_CHECKS, ~flags2,
|
||||||
"@@session.unique_checks", &need_comma);
|
"@@session.unique_checks", &need_comma);
|
||||||
fprintf(file,";\n");
|
fprintf(file,"%s\n", print_event_info->delimiter);
|
||||||
print_event_info->flags2= flags2;
|
print_event_info->flags2= flags2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1571,15 +1572,17 @@ void Query_log_event::print_query_header(FILE* file,
|
|||||||
}
|
}
|
||||||
if (unlikely(print_event_info->sql_mode != sql_mode))
|
if (unlikely(print_event_info->sql_mode != sql_mode))
|
||||||
{
|
{
|
||||||
fprintf(file,"SET @@session.sql_mode=%lu;\n",(ulong)sql_mode);
|
fprintf(file,"SET @@session.sql_mode=%lu%s\n",
|
||||||
|
(ulong)sql_mode, print_event_info->delimiter);
|
||||||
print_event_info->sql_mode= sql_mode;
|
print_event_info->sql_mode= sql_mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (print_event_info->auto_increment_increment != auto_increment_increment ||
|
if (print_event_info->auto_increment_increment != auto_increment_increment ||
|
||||||
print_event_info->auto_increment_offset != auto_increment_offset)
|
print_event_info->auto_increment_offset != auto_increment_offset)
|
||||||
{
|
{
|
||||||
fprintf(file,"SET @@session.auto_increment_increment=%lu, @@session.auto_increment_offset=%lu;\n",
|
fprintf(file,"SET @@session.auto_increment_increment=%lu, @@session.auto_increment_offset=%lu%s\n",
|
||||||
auto_increment_increment,auto_increment_offset);
|
auto_increment_increment,auto_increment_offset,
|
||||||
|
print_event_info->delimiter);
|
||||||
print_event_info->auto_increment_increment= auto_increment_increment;
|
print_event_info->auto_increment_increment= auto_increment_increment;
|
||||||
print_event_info->auto_increment_offset= auto_increment_offset;
|
print_event_info->auto_increment_offset= auto_increment_offset;
|
||||||
}
|
}
|
||||||
@ -1598,16 +1601,19 @@ void Query_log_event::print_query_header(FILE* file,
|
|||||||
CHARSET_INFO *cs_info= get_charset(uint2korr(charset), MYF(MY_WME));
|
CHARSET_INFO *cs_info= get_charset(uint2korr(charset), MYF(MY_WME));
|
||||||
if (cs_info)
|
if (cs_info)
|
||||||
{
|
{
|
||||||
fprintf(file, "/*!\\C %s */;\n", cs_info->csname); /* for mysql client */
|
/* for mysql client */
|
||||||
|
fprintf(file, "/*!\\C %s */%s\n",
|
||||||
|
cs_info->csname, print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
fprintf(file,"SET "
|
fprintf(file,"SET "
|
||||||
"@@session.character_set_client=%d,"
|
"@@session.character_set_client=%d,"
|
||||||
"@@session.collation_connection=%d,"
|
"@@session.collation_connection=%d,"
|
||||||
"@@session.collation_server=%d"
|
"@@session.collation_server=%d"
|
||||||
";\n",
|
"%s\n",
|
||||||
uint2korr(charset),
|
uint2korr(charset),
|
||||||
uint2korr(charset+2),
|
uint2korr(charset+2),
|
||||||
uint2korr(charset+4));
|
uint2korr(charset+4),
|
||||||
|
print_event_info->delimiter);
|
||||||
memcpy(print_event_info->charset, charset, 6);
|
memcpy(print_event_info->charset, charset, 6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1615,7 +1621,8 @@ void Query_log_event::print_query_header(FILE* file,
|
|||||||
{
|
{
|
||||||
if (bcmp(print_event_info->time_zone_str, time_zone_str, time_zone_len+1))
|
if (bcmp(print_event_info->time_zone_str, time_zone_str, time_zone_len+1))
|
||||||
{
|
{
|
||||||
fprintf(file,"SET @@session.time_zone='%s';\n", time_zone_str);
|
fprintf(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);
|
memcpy(print_event_info->time_zone_str, time_zone_str, time_zone_len+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1626,7 +1633,7 @@ void Query_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
{
|
{
|
||||||
print_query_header(file, print_event_info);
|
print_query_header(file, print_event_info);
|
||||||
my_fwrite(file, (byte*) query, q_len, MYF(MY_NABP | MY_WME));
|
my_fwrite(file, (byte*) query, q_len, MYF(MY_NABP | MY_WME));
|
||||||
fputs(";\n", file);
|
fprintf(file, "%s\n", print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
#endif /* MYSQL_CLIENT */
|
#endif /* MYSQL_CLIENT */
|
||||||
|
|
||||||
@ -1980,9 +1987,9 @@ void Start_log_event_v3::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
and rollback unfinished transaction.
|
and rollback unfinished transaction.
|
||||||
Probably this can be done with RESET CONNECTION (syntax to be defined).
|
Probably this can be done with RESET CONNECTION (syntax to be defined).
|
||||||
*/
|
*/
|
||||||
fprintf(file,"RESET CONNECTION;\n");
|
fprintf(file,"RESET CONNECTION%s\n", print_event_info->delimiter);
|
||||||
#else
|
#else
|
||||||
fprintf(file,"ROLLBACK;\n");
|
fprintf(file,"ROLLBACK%s\n", print_event_info->delimiter);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
fflush(file);
|
fflush(file);
|
||||||
@ -2716,13 +2723,14 @@ void Load_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (db && db[0] && different_db)
|
if (db && db[0] && different_db)
|
||||||
fprintf(file, "%suse %s;\n",
|
fprintf(file, "%suse %s%s\n",
|
||||||
commented ? "# " : "",
|
commented ? "# " : "",
|
||||||
db);
|
db, print_event_info->delimiter);
|
||||||
|
|
||||||
if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
|
if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
|
||||||
fprintf(file,"%sSET @@session.pseudo_thread_id=%lu;\n",
|
fprintf(file,"%sSET @@session.pseudo_thread_id=%lu%s\n",
|
||||||
commented ? "# " : "", (ulong)thread_id);
|
commented ? "# " : "", (ulong)thread_id,
|
||||||
|
print_event_info->delimiter);
|
||||||
fprintf(file, "%sLOAD DATA ",
|
fprintf(file, "%sLOAD DATA ",
|
||||||
commented ? "# " : "");
|
commented ? "# " : "");
|
||||||
if (check_fname_outside_temp_buf())
|
if (check_fname_outside_temp_buf())
|
||||||
@ -2774,7 +2782,7 @@ void Load_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info,
|
|||||||
fputc(')', file);
|
fputc(')', file);
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(file, ";\n");
|
fprintf(file, "%s\n", print_event_info->delimiter);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
#endif /* MYSQL_CLIENT */
|
#endif /* MYSQL_CLIENT */
|
||||||
@ -3351,7 +3359,8 @@ void Intvar_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
msg="INVALID_INT";
|
msg="INVALID_INT";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(file, "%s=%s;\n", msg, llstr(val,llbuff));
|
fprintf(file, "%s=%s%s\n",
|
||||||
|
msg, llstr(val,llbuff), print_event_info->delimiter);
|
||||||
fflush(file);
|
fflush(file);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -3426,8 +3435,9 @@ void Rand_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
print_header(file, print_event_info);
|
print_header(file, print_event_info);
|
||||||
fprintf(file, "\tRand\n");
|
fprintf(file, "\tRand\n");
|
||||||
}
|
}
|
||||||
fprintf(file, "SET @@RAND_SEED1=%s, @@RAND_SEED2=%s;\n",
|
fprintf(file, "SET @@RAND_SEED1=%s, @@RAND_SEED2=%s%s\n",
|
||||||
llstr(seed1, llbuff),llstr(seed2, llbuff2));
|
llstr(seed1, llbuff),llstr(seed2, llbuff2),
|
||||||
|
print_event_info->delimiter);
|
||||||
fflush(file);
|
fflush(file);
|
||||||
}
|
}
|
||||||
#endif /* MYSQL_CLIENT */
|
#endif /* MYSQL_CLIENT */
|
||||||
@ -3499,7 +3509,7 @@ void Xid_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
fprintf(file, "\tXid = %s\n", buf);
|
fprintf(file, "\tXid = %s\n", buf);
|
||||||
fflush(file);
|
fflush(file);
|
||||||
}
|
}
|
||||||
fprintf(file, "COMMIT;\n");
|
fprintf(file, "COMMIT%s\n", print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
#endif /* MYSQL_CLIENT */
|
#endif /* MYSQL_CLIENT */
|
||||||
|
|
||||||
@ -3700,7 +3710,7 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
|
|
||||||
if (is_null)
|
if (is_null)
|
||||||
{
|
{
|
||||||
fprintf(file, ":=NULL;\n");
|
fprintf(file, ":=NULL%s\n", print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3708,12 +3718,12 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
case REAL_RESULT:
|
case REAL_RESULT:
|
||||||
double real_val;
|
double real_val;
|
||||||
float8get(real_val, val);
|
float8get(real_val, val);
|
||||||
fprintf(file, ":=%.14g;\n", real_val);
|
fprintf(file, ":=%.14g%s\n", real_val, print_event_info->delimiter);
|
||||||
break;
|
break;
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
char int_buf[22];
|
char int_buf[22];
|
||||||
longlong10_to_str(uint8korr(val), int_buf, -10);
|
longlong10_to_str(uint8korr(val), int_buf, -10);
|
||||||
fprintf(file, ":=%s;\n", int_buf);
|
fprintf(file, ":=%s%s\n", int_buf, print_event_info->delimiter);
|
||||||
break;
|
break;
|
||||||
case DECIMAL_RESULT:
|
case DECIMAL_RESULT:
|
||||||
{
|
{
|
||||||
@ -3729,7 +3739,7 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
bin2decimal(val+2, &dec, precision, scale);
|
bin2decimal(val+2, &dec, precision, scale);
|
||||||
decimal2string(&dec, str_buf, &str_len, 0, 0, 0);
|
decimal2string(&dec, str_buf, &str_len, 0, 0, 0);
|
||||||
str_buf[str_len]= 0;
|
str_buf[str_len]= 0;
|
||||||
fprintf(file, ":=%s;\n",str_buf);
|
fprintf(file, ":=%s%s\n",str_buf, print_event_info->delimiter);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
@ -3765,9 +3775,10 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||||||
Generate an unusable command (=> syntax error) is probably the best
|
Generate an unusable command (=> syntax error) is probably the best
|
||||||
thing we can do here.
|
thing we can do here.
|
||||||
*/
|
*/
|
||||||
fprintf(file, ":=???;\n");
|
fprintf(file, ":=???%s\n", print_event_info->delimiter);
|
||||||
else
|
else
|
||||||
fprintf(file, ":=_%s %s COLLATE `%s`;\n", cs->csname, hex_str, cs->name);
|
fprintf(file, ":=_%s %s COLLATE `%s`%s\n",
|
||||||
|
cs->csname, hex_str, cs->name, print_event_info->delimiter);
|
||||||
my_afree(hex_str);
|
my_afree(hex_str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -4866,12 +4877,12 @@ void Execute_load_query_log_event::print(FILE* file,
|
|||||||
fprintf(file, " INTO");
|
fprintf(file, " INTO");
|
||||||
my_fwrite(file, (byte*) query + fn_pos_end, q_len-fn_pos_end,
|
my_fwrite(file, (byte*) query + fn_pos_end, q_len-fn_pos_end,
|
||||||
MYF(MY_NABP | MY_WME));
|
MYF(MY_NABP | MY_WME));
|
||||||
fprintf(file, ";\n");
|
fprintf(file, "%s\n", print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my_fwrite(file, (byte*) query, q_len, MYF(MY_NABP | MY_WME));
|
my_fwrite(file, (byte*) query, q_len, MYF(MY_NABP | MY_WME));
|
||||||
fprintf(file, ";\n");
|
fprintf(file, "%s\n", print_event_info->delimiter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!print_event_info->short_form)
|
if (!print_event_info->short_form)
|
||||||
|
@ -519,12 +519,14 @@ typedef struct st_print_event_info
|
|||||||
bzero(db, sizeof(db));
|
bzero(db, sizeof(db));
|
||||||
bzero(charset, sizeof(charset));
|
bzero(charset, sizeof(charset));
|
||||||
bzero(time_zone_str, sizeof(time_zone_str));
|
bzero(time_zone_str, sizeof(time_zone_str));
|
||||||
|
strcpy(delimiter, ";");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Settings on how to print the events */
|
/* Settings on how to print the events */
|
||||||
bool short_form;
|
bool short_form;
|
||||||
my_off_t hexdump_from;
|
my_off_t hexdump_from;
|
||||||
uint8 common_header_len;
|
uint8 common_header_len;
|
||||||
|
char delimiter[16];
|
||||||
|
|
||||||
} PRINT_EVENT_INFO;
|
} PRINT_EVENT_INFO;
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user