Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
864ad7da
Commit
864ad7da
authored
Dec 08, 2006
by
bar@bar.intranet.mysql.r18.ru
Browse files
Options
Browse Files
Download
Plain Diff
After merge fix
parents
19725c0b
0d4b26fa
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
952 additions
and
738 deletions
+952
-738
client/mysqlbinlog.cc
client/mysqlbinlog.cc
+27
-11
mysql-test/r/binlog_stm_mix_innodb_myisam.result
mysql-test/r/binlog_stm_mix_innodb_myisam.result
+2
-2
mysql-test/r/mysqlbinlog.result
mysql-test/r/mysqlbinlog.result
+148
-93
mysql-test/r/mysqlbinlog2.result
mysql-test/r/mysqlbinlog2.result
+578
-508
mysql-test/r/rpl_stm_charset.result
mysql-test/r/rpl_stm_charset.result
+80
-78
mysql-test/r/rpl_timezone.result
mysql-test/r/rpl_timezone.result
+32
-0
mysql-test/r/user_var-binlog.result
mysql-test/r/user_var-binlog.result
+15
-13
mysql-test/t/mysqlbinlog.test
mysql-test/t/mysqlbinlog.test
+24
-0
sql/log_event.cc
sql/log_event.cc
+44
-33
sql/log_event.h
sql/log_event.h
+2
-0
No files found.
client/mysqlbinlog.cc
View file @
864ad7da
...
...
@@ -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* 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
];
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 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
;
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 char* logname)
// 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
;
...
...
mysql-test/r/binlog_stm_mix_innodb_myisam.result
View file @
864ad7da
...
...
@@ -374,8 +374,8 @@ is not null;
is not null
1
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 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
drop table t1, t2;
mysql-test/r/mysqlbinlog.result
View file @
864ad7da
This diff is collapsed.
Click to expand it.
mysql-test/r/mysqlbinlog2.result
View file @
864ad7da
This diff is collapsed.
Click to expand it.
mysql-test/r/rpl_stm_charset.result
View file @
864ad7da
...
...
@@ -176,84 +176,86 @@ hex(c1) hex(c2)
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
ROLLBACK;
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;
drop database if exists mysqltest2;
SET TIMESTAMP=1000000000;
drop database if exists mysqltest3;
SET TIMESTAMP=1000000000;
create database mysqltest2 character set latin2;
SET TIMESTAMP=1000000000;
/*!\C latin1 */;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30;
create database mysqltest3;
SET TIMESTAMP=1000000000;
/*!\C latin1 */;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=64;
drop database mysqltest3;
SET TIMESTAMP=1000000000;
create database mysqltest3;
use mysqltest2;
SET TIMESTAMP=1000000000;
create table t1 (a int auto_increment primary key, b varchar(100));
SET INSERT_ID=1;
SET TIMESTAMP=1000000000;
/*!\C cp850 */;
SET @@session.character_set_client=4,@@session.collation_connection=27,@@session.collation_server=64;
insert into t1 (b) values(@@character_set_server);
SET INSERT_ID=2;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(@@collation_server);
SET INSERT_ID=3;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(@@character_set_client);
SET INSERT_ID=4;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(@@character_set_connection);
SET INSERT_ID=5;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(@@collation_connection);
SET TIMESTAMP=1000000000;
/*!\C latin1 */;
SET @@session.character_set_client=8,@@session.collation_connection=5,@@session.collation_server=64;
truncate table t1;
SET INSERT_ID=1;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(@@collation_connection);
SET INSERT_ID=2;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(LEAST("Mller","Muffler"));
SET INSERT_ID=3;
SET TIMESTAMP=1000000000;
/*!\C latin1 */;
SET @@session.character_set_client=8,@@session.collation_connection=31,@@session.collation_server=64;
insert into t1 (b) values(@@collation_connection);
SET INSERT_ID=4;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(LEAST("Mller","Muffler"));
SET TIMESTAMP=1000000000;
truncate table t1;
SET INSERT_ID=1;
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
SET TIMESTAMP=1000000000;
insert into t1 (b) values(collation(@a));
SET TIMESTAMP=1000000000;
drop database mysqltest2;
SET TIMESTAMP=1000000000;
drop database mysqltest3;
use test;
SET TIMESTAMP=1000000000;
/*!\C latin1 */;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30;
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
SET TIMESTAMP=1000000000;
/*!\C koi8r */;
SET @@session.character_set_client=7,@@session.collation_connection=51,@@session.collation_server=30;
INSERT INTO t1 (c1, c2) VALUES (', ',', ');
DELIMITER /*!*/;
ROLLBACK/*!*/;
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/*!*/;
drop database if exists mysqltest2/*!*/;
SET TIMESTAMP=1000000000/*!*/;
drop database if exists mysqltest3/*!*/;
SET TIMESTAMP=1000000000/*!*/;
create database mysqltest2 character set latin2/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30/*!*/;
create database mysqltest3/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=64/*!*/;
drop database mysqltest3/*!*/;
SET TIMESTAMP=1000000000/*!*/;
create database mysqltest3/*!*/;
use mysqltest2/*!*/;
SET TIMESTAMP=1000000000/*!*/;
create table t1 (a int auto_increment primary key, b varchar(100))/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C cp850 *//*!*/;
SET @@session.character_set_client=4,@@session.collation_connection=27,@@session.collation_server=64/*!*/;
insert into t1 (b) values(@@character_set_server)/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(@@collation_server)/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(@@character_set_client)/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(@@character_set_connection)/*!*/;
SET INSERT_ID=5/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(@@collation_connection)/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=5,@@session.collation_server=64/*!*/;
truncate table t1/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(@@collation_connection)/*!*/;
SET INSERT_ID=2/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(LEAST("Mller","Muffler"))/*!*/;
SET INSERT_ID=3/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=31,@@session.collation_server=64/*!*/;
insert into t1 (b) values(@@collation_connection)/*!*/;
SET INSERT_ID=4/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(LEAST("Mller","Muffler"))/*!*/;
SET TIMESTAMP=1000000000/*!*/;
truncate table t1/*!*/;
SET INSERT_ID=1/*!*/;
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 (b) values(collation(@a))/*!*/;
SET TIMESTAMP=1000000000/*!*/;
drop database mysqltest2/*!*/;
SET TIMESTAMP=1000000000/*!*/;
drop database mysqltest3/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30/*!*/;
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255))/*!*/;
SET TIMESTAMP=1000000000/*!*/;
/*!\C koi8r *//*!*/;
SET @@session.character_set_client=7,@@session.collation_connection=51,@@session.collation_server=30/*!*/;
INSERT INTO t1 (c1, c2) VALUES (', ',', ')/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
...
...
mysql-test/r/rpl_timezone.result
View file @
864ad7da
...
...
@@ -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;
...
...
mysql-test/r/user_var-binlog.result
View file @
864ad7da
...
...
@@ -15,19 +15,21 @@ master-bin.000001 # User var 1 # @`var2`=_binary 0x61 COLLATE binary
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*/;
...
...
mysql-test/t/mysqlbinlog.test
View file @
864ad7da
...
...
@@ -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
;
...
...
sql/log_event.cc
View file @
864ad7da
...
...
@@ -1183,7 +1183,7 @@ void Log_event::print_base64(IO_CACHE* file,
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(IO_CACHE* file,
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(IO_CACHE* file,
"@@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(IO_CACHE* file,
}
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(IO_CACHE* file,
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(IO_CACHE* file,
{
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_EVENT_INFO* print_event_info)
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* file, PRINT_EVENT_INFO* print_event_info)
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_arg, PRINT_EVENT_INFO* print_event_info,
}
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_arg, PRINT_EVENT_INFO* print_event_info,
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, PRINT_EVENT_INFO* print_event_info)
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, PRINT_EVENT_INFO* print_event_info)
print_header
(
&
cache
,
print_event_info
,
FALSE
);
my_b_printf
(
&
cache
,
"
\t
Rand
\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, PRINT_EVENT_INFO* print_event_info)
print_header
(
&
cache
,
print_event_info
,
FALSE
);
my_b_printf
(
&
cache
,
"
\t
Xid = %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* file, PRINT_EVENT_INFO* print_event_info)
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* file, PRINT_EVENT_INFO* print_event_info)
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* file, PRINT_EVENT_INFO* print_event_info)
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* file, PRINT_EVENT_INFO* print_event_info)
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(FILE* file,
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
)
...
...
sql/log_event.h
View file @
864ad7da
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment