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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
1aae3e1d
Commit
1aae3e1d
authored
Oct 19, 2005
by
lars@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0
into mysql.com:/users/lthalmann/bk/mysql-5.0-hexdump
parents
bee76b78
4ccb1c6e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
228 additions
and
142 deletions
+228
-142
client/mysqlbinlog.cc
client/mysqlbinlog.cc
+28
-16
sql/log_event.cc
sql/log_event.cc
+152
-94
sql/log_event.h
sql/log_event.h
+48
-32
No files found.
client/mysqlbinlog.cc
View file @
1aae3e1d
...
@@ -62,6 +62,7 @@ static const char *load_default_groups[]= { "mysqlbinlog","client",0 };
...
@@ -62,6 +62,7 @@ static const char *load_default_groups[]= { "mysqlbinlog","client",0 };
void
sql_print_error
(
const
char
*
format
,
...);
void
sql_print_error
(
const
char
*
format
,
...);
static
bool
one_database
=
0
,
to_last_remote_log
=
0
,
disable_log_bin
=
0
;
static
bool
one_database
=
0
,
to_last_remote_log
=
0
,
disable_log_bin
=
0
;
static
bool
opt_hexdump
=
0
;
static
const
char
*
database
=
0
;
static
const
char
*
database
=
0
;
static
my_bool
force_opt
=
0
,
short_form
=
0
,
remote_opt
=
0
;
static
my_bool
force_opt
=
0
,
short_form
=
0
,
remote_opt
=
0
;
static
ulonglong
offset
=
0
;
static
ulonglong
offset
=
0
;
...
@@ -489,12 +490,13 @@ static bool check_database(const char *log_dbname)
...
@@ -489,12 +490,13 @@ static bool check_database(const char *log_dbname)
int
process_event
(
LAST_EVENT_INFO
*
las
t_event_info
,
Log_event
*
ev
,
int
process_event
(
PRINT_EVENT_INFO
*
prin
t_event_info
,
Log_event
*
ev
,
my_off_t
pos
)
my_off_t
pos
)
{
{
char
ll_buff
[
21
];
char
ll_buff
[
21
];
Log_event_type
ev_type
=
ev
->
get_type_code
();
Log_event_type
ev_type
=
ev
->
get_type_code
();
DBUG_ENTER
(
"process_event"
);
DBUG_ENTER
(
"process_event"
);
print_event_info
->
short_form
=
short_form
;
/*
/*
Format events are not concerned by --offset and such, we always need to
Format events are not concerned by --offset and such, we always need to
...
@@ -522,12 +524,17 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
...
@@ -522,12 +524,17 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
}
}
if
(
!
short_form
)
if
(
!
short_form
)
fprintf
(
result_file
,
"# at %s
\n
"
,
llstr
(
pos
,
ll_buff
));
fprintf
(
result_file
,
"# at %s
\n
"
,
llstr
(
pos
,
ll_buff
));
if
(
!
opt_hexdump
)
print_event_info
->
hexdump_from
=
0
;
/* Disabled */
else
print_event_info
->
hexdump_from
=
pos
;
switch
(
ev_type
)
{
switch
(
ev_type
)
{
case
QUERY_EVENT
:
case
QUERY_EVENT
:
if
(
check_database
(((
Query_log_event
*
)
ev
)
->
db
))
if
(
check_database
(((
Query_log_event
*
)
ev
)
->
db
))
goto
end
;
goto
end
;
ev
->
print
(
result_file
,
short_form
,
las
t_event_info
);
ev
->
print
(
result_file
,
prin
t_event_info
);
break
;
break
;
case
CREATE_FILE_EVENT
:
case
CREATE_FILE_EVENT
:
{
{
...
@@ -547,7 +554,8 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
...
@@ -547,7 +554,8 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
filename and use LOCAL), prepared in the 'case EXEC_LOAD_EVENT'
filename and use LOCAL), prepared in the 'case EXEC_LOAD_EVENT'
below.
below.
*/
*/
ce
->
print
(
result_file
,
short_form
,
last_event_info
,
TRUE
);
ce
->
print
(
result_file
,
print_event_info
,
TRUE
);
// If this binlog is not 3.23 ; why this test??
// If this binlog is not 3.23 ; why this test??
if
(
description_event
->
binlog_version
>=
3
)
if
(
description_event
->
binlog_version
>=
3
)
{
{
...
@@ -558,13 +566,13 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
...
@@ -558,13 +566,13 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
break
;
break
;
}
}
case
APPEND_BLOCK_EVENT
:
case
APPEND_BLOCK_EVENT
:
ev
->
print
(
result_file
,
short_form
,
las
t_event_info
);
ev
->
print
(
result_file
,
prin
t_event_info
);
if
(
load_processor
.
process
((
Append_block_log_event
*
)
ev
))
if
(
load_processor
.
process
((
Append_block_log_event
*
)
ev
))
break
;
// Error
break
;
// Error
break
;
break
;
case
EXEC_LOAD_EVENT
:
case
EXEC_LOAD_EVENT
:
{
{
ev
->
print
(
result_file
,
short_form
,
las
t_event_info
);
ev
->
print
(
result_file
,
prin
t_event_info
);
Execute_load_log_event
*
exv
=
(
Execute_load_log_event
*
)
ev
;
Execute_load_log_event
*
exv
=
(
Execute_load_log_event
*
)
ev
;
Create_file_log_event
*
ce
=
load_processor
.
grab_event
(
exv
->
file_id
);
Create_file_log_event
*
ce
=
load_processor
.
grab_event
(
exv
->
file_id
);
/*
/*
...
@@ -574,7 +582,7 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
...
@@ -574,7 +582,7 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
*/
*/
if
(
ce
)
if
(
ce
)
{
{
ce
->
print
(
result_file
,
short_form
,
las
t_event_info
,
TRUE
);
ce
->
print
(
result_file
,
prin
t_event_info
,
TRUE
);
my_free
((
char
*
)
ce
->
fname
,
MYF
(
MY_WME
));
my_free
((
char
*
)
ce
->
fname
,
MYF
(
MY_WME
));
delete
ce
;
delete
ce
;
}
}
...
@@ -586,7 +594,8 @@ Create_file event for file_id: %u\n",exv->file_id);
...
@@ -586,7 +594,8 @@ Create_file event for file_id: %u\n",exv->file_id);
case
FORMAT_DESCRIPTION_EVENT
:
case
FORMAT_DESCRIPTION_EVENT
:
delete
description_event
;
delete
description_event
;
description_event
=
(
Format_description_log_event
*
)
ev
;
description_event
=
(
Format_description_log_event
*
)
ev
;
ev
->
print
(
result_file
,
short_form
,
last_event_info
);
print_event_info
->
common_header_len
=
description_event
->
common_header_len
;
ev
->
print
(
result_file
,
print_event_info
);
/*
/*
We don't want this event to be deleted now, so let's hide it (I
We don't want this event to be deleted now, so let's hide it (I
(Guilhem) should later see if this triggers a non-serious Valgrind
(Guilhem) should later see if this triggers a non-serious Valgrind
...
@@ -596,7 +605,7 @@ Create_file event for file_id: %u\n",exv->file_id);
...
@@ -596,7 +605,7 @@ Create_file event for file_id: %u\n",exv->file_id);
ev
=
0
;
ev
=
0
;
break
;
break
;
case
BEGIN_LOAD_QUERY_EVENT
:
case
BEGIN_LOAD_QUERY_EVENT
:
ev
->
print
(
result_file
,
short_form
,
las
t_event_info
);
ev
->
print
(
result_file
,
prin
t_event_info
);
load_processor
.
process
((
Begin_load_query_log_event
*
)
ev
);
load_processor
.
process
((
Begin_load_query_log_event
*
)
ev
);
break
;
break
;
case
EXECUTE_LOAD_QUERY_EVENT
:
case
EXECUTE_LOAD_QUERY_EVENT
:
...
@@ -613,7 +622,7 @@ Create_file event for file_id: %u\n",exv->file_id);
...
@@ -613,7 +622,7 @@ Create_file event for file_id: %u\n",exv->file_id);
if
(
fname
)
if
(
fname
)
{
{
exlq
->
print
(
result_file
,
short_form
,
las
t_event_info
,
fname
);
exlq
->
print
(
result_file
,
prin
t_event_info
,
fname
);
my_free
(
fname
,
MYF
(
MY_WME
));
my_free
(
fname
,
MYF
(
MY_WME
));
}
}
else
else
...
@@ -622,7 +631,7 @@ Begin_load_query event for file_id: %u\n", exlq->file_id);
...
@@ -622,7 +631,7 @@ Begin_load_query event for file_id: %u\n", exlq->file_id);
break
;
break
;
}
}
default:
default:
ev
->
print
(
result_file
,
short_form
,
las
t_event_info
);
ev
->
print
(
result_file
,
prin
t_event_info
);
}
}
}
}
...
@@ -669,6 +678,9 @@ static struct my_option my_long_options[] =
...
@@ -669,6 +678,9 @@ static struct my_option my_long_options[] =
0
,
0
},
0
,
0
},
{
"help"
,
'?'
,
"Display this help and exit."
,
{
"help"
,
'?'
,
"Display this help and exit."
,
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"hexdump"
,
'H'
,
"Augment output with hexadecimal and ASCII event dump."
,
(
gptr
*
)
&
opt_hexdump
,
(
gptr
*
)
&
opt_hexdump
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"host"
,
'h'
,
"Get the binlog from server."
,
(
gptr
*
)
&
host
,
(
gptr
*
)
&
host
,
{
"host"
,
'h'
,
"Get the binlog from server."
,
(
gptr
*
)
&
host
,
(
gptr
*
)
&
host
,
0
,
GET_STR_ALLOC
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
GET_STR_ALLOC
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"offset"
,
'o'
,
"Skip the first N entries."
,
(
gptr
*
)
&
offset
,
(
gptr
*
)
&
offset
,
{
"offset"
,
'o'
,
"Skip the first N entries."
,
(
gptr
*
)
&
offset
,
(
gptr
*
)
&
offset
,
...
@@ -1002,7 +1014,7 @@ static int dump_remote_log_entries(const char* logname)
...
@@ -1002,7 +1014,7 @@ static int dump_remote_log_entries(const char* logname)
{
{
char
buf
[
128
];
char
buf
[
128
];
LAST_EVENT_INFO
las
t_event_info
;
PRINT_EVENT_INFO
prin
t_event_info
;
ulong
len
;
ulong
len
;
uint
logname_len
;
uint
logname_len
;
NET
*
net
;
NET
*
net
;
...
@@ -1125,7 +1137,7 @@ could be out of memory");
...
@@ -1125,7 +1137,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
(
&
last_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
;
...
@@ -1144,7 +1156,7 @@ could be out of memory");
...
@@ -1144,7 +1156,7 @@ could be out of memory");
goto
err
;
goto
err
;
}
}
if
((
error
=
process_event
(
&
last_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
);
...
@@ -1273,7 +1285,7 @@ static int dump_local_log_entries(const char* logname)
...
@@ -1273,7 +1285,7 @@ static int dump_local_log_entries(const char* logname)
{
{
File
fd
=
-
1
;
File
fd
=
-
1
;
IO_CACHE
cache
,
*
file
=
&
cache
;
IO_CACHE
cache
,
*
file
=
&
cache
;
LAST_EVENT_INFO
las
t_event_info
;
PRINT_EVENT_INFO
prin
t_event_info
;
byte
tmp_buff
[
BIN_LOG_HEADER_SIZE
];
byte
tmp_buff
[
BIN_LOG_HEADER_SIZE
];
int
error
=
0
;
int
error
=
0
;
...
@@ -1345,7 +1357,7 @@ static int dump_local_log_entries(const char* logname)
...
@@ -1345,7 +1357,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
(
&
last_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
;
...
...
sql/log_event.cc
View file @
1aae3e1d
...
@@ -696,7 +696,6 @@ failed my_b_read"));
...
@@ -696,7 +696,6 @@ failed my_b_read"));
*/
*/
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
uint
data_len
=
uint4korr
(
head
+
EVENT_LEN_OFFSET
);
uint
data_len
=
uint4korr
(
head
+
EVENT_LEN_OFFSET
);
char
*
buf
=
0
;
char
*
buf
=
0
;
const
char
*
error
=
0
;
const
char
*
error
=
0
;
...
@@ -876,15 +875,76 @@ Log_event* Log_event::read_log_event(const char* buf, uint event_len,
...
@@ -876,15 +875,76 @@ Log_event* Log_event::read_log_event(const char* buf, uint event_len,
Log_event::print_header()
Log_event::print_header()
*/
*/
void
Log_event
::
print_header
(
FILE
*
file
)
void
Log_event
::
print_header
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
)
{
{
char
llbuff
[
22
];
char
llbuff
[
22
];
my_off_t
hexdump_from
=
print_event_info
->
hexdump_from
;
fputc
(
'#'
,
file
);
fputc
(
'#'
,
file
);
print_timestamp
(
file
);
print_timestamp
(
file
);
fprintf
(
file
,
" server id %d end_log_pos %s "
,
server_id
,
fprintf
(
file
,
" server id %d end_log_pos %s "
,
server_id
,
llstr
(
log_pos
,
llbuff
));
llstr
(
log_pos
,
llbuff
));
/* mysqlbinlog --hexdump */
if
(
print_event_info
->
hexdump_from
)
{
fprintf
(
file
,
"
\n
"
);
uchar
*
ptr
=
(
uchar
*
)
temp_buf
;
my_off_t
size
=
uint4korr
(
ptr
+
EVENT_LEN_OFFSET
)
-
LOG_EVENT_MINIMAL_HEADER_LEN
;
my_off_t
i
;
/* Header len * 4 >= header len * (2 chars + space + extra space) */
char
*
h
,
hex_string
[
LOG_EVENT_MINIMAL_HEADER_LEN
*
4
]
=
{
0
};
char
*
c
,
char_string
[
16
+
1
]
=
{
0
};
/* Pretty-print event common header if header is exactly 19 bytes */
if
(
print_event_info
->
common_header_len
==
LOG_EVENT_MINIMAL_HEADER_LEN
)
{
fprintf
(
file
,
"# Position Timestamp Type Master ID "
"Size Master Pos Flags
\n
"
);
fprintf
(
file
,
"# %8.8lx %02x %02x %02x %02x %02x "
"%02x %02x %02x %02x %02x %02x %02x %02x "
"%02x %02x %02x %02x %02x %02x
\n
"
,
hexdump_from
,
ptr
[
0
],
ptr
[
1
],
ptr
[
2
],
ptr
[
3
],
ptr
[
4
],
ptr
[
5
],
ptr
[
6
],
ptr
[
7
],
ptr
[
8
],
ptr
[
9
],
ptr
[
10
],
ptr
[
11
],
ptr
[
12
],
ptr
[
13
],
ptr
[
14
],
ptr
[
15
],
ptr
[
16
],
ptr
[
17
],
ptr
[
18
]);
ptr
+=
LOG_EVENT_MINIMAL_HEADER_LEN
;
hexdump_from
+=
LOG_EVENT_MINIMAL_HEADER_LEN
;
}
/* Rest of event (without common header) */
for
(
i
=
0
,
c
=
char_string
,
h
=
hex_string
;
i
<
size
;
i
++
,
ptr
++
)
{
my_snprintf
(
h
,
4
,
"%02x "
,
*
ptr
);
h
+=
3
;
*
c
++=
my_isalnum
(
&
my_charset_bin
,
*
ptr
)
?
*
ptr
:
'.'
;
if
(
i
%
16
==
15
)
{
fprintf
(
file
,
"# %8.8lx %-48.48s |%16s|
\n
"
,
hexdump_from
+
(
i
&
0xfffffff0
),
hex_string
,
char_string
);
hex_string
[
0
]
=
0
;
char_string
[
0
]
=
0
;
c
=
char_string
;
h
=
hex_string
;
}
else
if
(
i
%
8
==
7
)
*
h
++
=
' '
;
}
*
c
=
'\0'
;
/* Non-full last line */
if
(
hex_string
[
0
])
{
printf
(
"# %8.8lx %-48.48s |%s|
\n
# "
,
hexdump_from
+
(
i
&
0xfffffff0
),
hex_string
,
char_string
);
}
}
}
}
/*
/*
Log_event::print_timestamp()
Log_event::print_timestamp()
*/
*/
...
@@ -1367,25 +1427,25 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
...
@@ -1367,25 +1427,25 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Query_log_event
::
print_query_header
(
FILE
*
file
,
bool
short_form
,
void
Query_log_event
::
print_query_header
(
FILE
*
file
,
LAST_EVENT_INFO
*
las
t_event_info
)
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
// TODO: print the catalog ??
// TODO: print the catalog ??
char
buff
[
40
],
*
end
;
// Enough for SET TIMESTAMP
char
buff
[
40
],
*
end
;
// Enough for SET TIMESTAMP
bool
different_db
=
1
;
bool
different_db
=
1
;
uint32
tmp
;
uint32
tmp
;
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
%s
\t
thread_id=%lu
\t
exec_time=%lu
\t
error_code=%d
\n
"
,
fprintf
(
file
,
"
\t
%s
\t
thread_id=%lu
\t
exec_time=%lu
\t
error_code=%d
\n
"
,
get_type_str
(),
(
ulong
)
thread_id
,
(
ulong
)
exec_time
,
error_code
);
get_type_str
(),
(
ulong
)
thread_id
,
(
ulong
)
exec_time
,
error_code
);
}
}
if
(
!
(
flags
&
LOG_EVENT_SUPPRESS_USE_F
)
&&
db
)
if
(
!
(
flags
&
LOG_EVENT_SUPPRESS_USE_F
)
&&
db
)
{
{
if
(
different_db
=
memcmp
(
las
t_event_info
->
db
,
db
,
db_len
+
1
))
if
(
different_db
=
memcmp
(
prin
t_event_info
->
db
,
db
,
db_len
+
1
))
memcpy
(
las
t_event_info
->
db
,
db
,
db_len
+
1
);
memcpy
(
prin
t_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;
\n
"
,
db
);
}
}
...
@@ -1405,12 +1465,12 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
...
@@ -1405,12 +1465,12 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
if
(
likely
(
flags2_inited
))
/* likely as this will mainly read 5.0 logs */
if
(
likely
(
flags2_inited
))
/* likely as this will mainly read 5.0 logs */
{
{
/* tmp is a bitmask of bits which have changed. */
/* tmp is a bitmask of bits which have changed. */
if
(
likely
(
las
t_event_info
->
flags2_inited
))
if
(
likely
(
prin
t_event_info
->
flags2_inited
))
/* All bits which have changed */
/* All bits which have changed */
tmp
=
(
las
t_event_info
->
flags2
)
^
flags2
;
tmp
=
(
prin
t_event_info
->
flags2
)
^
flags2
;
else
/* that's the first Query event we read */
else
/* that's the first Query event we read */
{
{
las
t_event_info
->
flags2_inited
=
1
;
prin
t_event_info
->
flags2_inited
=
1
;
tmp
=
~
((
uint32
)
0
);
/* all bits have changed */
tmp
=
~
((
uint32
)
0
);
/* all bits have changed */
}
}
...
@@ -1425,7 +1485,7 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
...
@@ -1425,7 +1485,7 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
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
,
";
\n
"
);
las
t_event_info
->
flags2
=
flags2
;
prin
t_event_info
->
flags2
=
flags2
;
}
}
}
}
...
@@ -1444,37 +1504,37 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
...
@@ -1444,37 +1504,37 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
if
(
likely
(
sql_mode_inited
))
if
(
likely
(
sql_mode_inited
))
{
{
if
(
unlikely
(
!
las
t_event_info
->
sql_mode_inited
))
/* first Query event */
if
(
unlikely
(
!
prin
t_event_info
->
sql_mode_inited
))
/* first Query event */
{
{
las
t_event_info
->
sql_mode_inited
=
1
;
prin
t_event_info
->
sql_mode_inited
=
1
;
/* force a difference to force write */
/* force a difference to force write */
las
t_event_info
->
sql_mode
=
~
sql_mode
;
prin
t_event_info
->
sql_mode
=
~
sql_mode
;
}
}
if
(
unlikely
(
las
t_event_info
->
sql_mode
!=
sql_mode
))
if
(
unlikely
(
prin
t_event_info
->
sql_mode
!=
sql_mode
))
{
{
fprintf
(
file
,
"SET @@session.sql_mode=%lu;
\n
"
,(
ulong
)
sql_mode
);
fprintf
(
file
,
"SET @@session.sql_mode=%lu;
\n
"
,(
ulong
)
sql_mode
);
las
t_event_info
->
sql_mode
=
sql_mode
;
prin
t_event_info
->
sql_mode
=
sql_mode
;
}
}
}
}
if
(
las
t_event_info
->
auto_increment_increment
!=
auto_increment_increment
||
if
(
prin
t_event_info
->
auto_increment_increment
!=
auto_increment_increment
||
las
t_event_info
->
auto_increment_offset
!=
auto_increment_offset
)
prin
t_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;
\n
"
,
auto_increment_increment
,
auto_increment_offset
);
auto_increment_increment
,
auto_increment_offset
);
las
t_event_info
->
auto_increment_increment
=
auto_increment_increment
;
prin
t_event_info
->
auto_increment_increment
=
auto_increment_increment
;
las
t_event_info
->
auto_increment_offset
=
auto_increment_offset
;
prin
t_event_info
->
auto_increment_offset
=
auto_increment_offset
;
}
}
/* TODO: print the catalog when we feature SET CATALOG */
/* TODO: print the catalog when we feature SET CATALOG */
if
(
likely
(
charset_inited
))
if
(
likely
(
charset_inited
))
{
{
if
(
unlikely
(
!
las
t_event_info
->
charset_inited
))
/* first Query event */
if
(
unlikely
(
!
prin
t_event_info
->
charset_inited
))
/* first Query event */
{
{
las
t_event_info
->
charset_inited
=
1
;
prin
t_event_info
->
charset_inited
=
1
;
las
t_event_info
->
charset
[
0
]
=
~
charset
[
0
];
// force a difference to force write
prin
t_event_info
->
charset
[
0
]
=
~
charset
[
0
];
// force a difference to force write
}
}
if
(
unlikely
(
bcmp
(
las
t_event_info
->
charset
,
charset
,
6
)))
if
(
unlikely
(
bcmp
(
prin
t_event_info
->
charset
,
charset
,
6
)))
{
{
fprintf
(
file
,
"SET "
fprintf
(
file
,
"SET "
"@@session.character_set_client=%d,"
"@@session.character_set_client=%d,"
...
@@ -1484,24 +1544,23 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
...
@@ -1484,24 +1544,23 @@ void Query_log_event::print_query_header(FILE* file, bool short_form,
uint2korr
(
charset
),
uint2korr
(
charset
),
uint2korr
(
charset
+
2
),
uint2korr
(
charset
+
2
),
uint2korr
(
charset
+
4
));
uint2korr
(
charset
+
4
));
memcpy
(
las
t_event_info
->
charset
,
charset
,
6
);
memcpy
(
prin
t_event_info
->
charset
,
charset
,
6
);
}
}
}
}
if
(
time_zone_len
)
if
(
time_zone_len
)
{
{
if
(
bcmp
(
las
t_event_info
->
time_zone_str
,
time_zone_str
,
time_zone_len
+
1
))
if
(
bcmp
(
prin
t_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';
\n
"
,
time_zone_str
);
memcpy
(
las
t_event_info
->
time_zone_str
,
time_zone_str
,
time_zone_len
+
1
);
memcpy
(
prin
t_event_info
->
time_zone_str
,
time_zone_str
,
time_zone_len
+
1
);
}
}
}
}
}
}
void
Query_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Query_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
)
LAST_EVENT_INFO
*
last_event_info
)
{
{
print_query_header
(
file
,
short_form
,
las
t_event_info
);
print_query_header
(
file
,
prin
t_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
);
fputs
(
";
\n
"
,
file
);
}
}
...
@@ -1799,11 +1858,11 @@ void Start_log_event_v3::pack_info(Protocol *protocol)
...
@@ -1799,11 +1858,11 @@ void Start_log_event_v3::pack_info(Protocol *protocol)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Start_log_event_v3
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Start_log_event_v3
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Start: binlog v %d, server v %s created "
,
binlog_version
,
fprintf
(
file
,
"
\t
Start: binlog v %d, server v %s created "
,
binlog_version
,
server_version
);
server_version
);
print_timestamp
(
file
);
print_timestamp
(
file
);
...
@@ -2527,19 +2586,19 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len,
...
@@ -2527,19 +2586,19 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len,
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Load_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Load_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
print
(
file
,
short_form
,
las
t_event_info
,
0
);
print
(
file
,
prin
t_event_info
,
0
);
}
}
void
Load_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
,
void
Load_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
,
bool
commented
)
bool
commented
)
{
{
DBUG_ENTER
(
"Load_log_event::print"
);
DBUG_ENTER
(
"Load_log_event::print"
);
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Query
\t
thread_id=%ld
\t
exec_time=%ld
\n
"
,
fprintf
(
file
,
"
\t
Query
\t
thread_id=%ld
\t
exec_time=%ld
\n
"
,
thread_id
,
exec_time
);
thread_id
,
exec_time
);
}
}
...
@@ -2553,9 +2612,9 @@ void Load_log_event::print(FILE* file, bool short_form, LAST_EVENT_INFO* last_ev
...
@@ -2553,9 +2612,9 @@ void Load_log_event::print(FILE* file, bool short_form, LAST_EVENT_INFO* last_ev
But if commented, the "use" is going to be commented so we should not
But if commented, the "use" is going to be commented so we should not
update the last_db.
update the last_db.
*/
*/
if
((
different_db
=
memcmp
(
las
t_event_info
->
db
,
db
,
db_len
+
1
))
&&
if
((
different_db
=
memcmp
(
prin
t_event_info
->
db
,
db
,
db_len
+
1
))
&&
!
commented
)
!
commented
)
memcpy
(
las
t_event_info
->
db
,
db
,
db_len
+
1
);
memcpy
(
prin
t_event_info
->
db
,
db
,
db_len
+
1
);
}
}
if
(
db
&&
db
[
0
]
&&
different_db
)
if
(
db
&&
db
[
0
]
&&
different_db
)
...
@@ -2944,13 +3003,13 @@ void Rotate_log_event::pack_info(Protocol *protocol)
...
@@ -2944,13 +3003,13 @@ void Rotate_log_event::pack_info(Protocol *protocol)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Rotate_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Rotate_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
char
buf
[
22
];
char
buf
[
22
];
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Rotate to "
);
fprintf
(
file
,
"
\t
Rotate to "
);
if
(
new_log_ident
)
if
(
new_log_ident
)
my_fwrite
(
file
,
(
byte
*
)
new_log_ident
,
(
uint
)
ident_len
,
my_fwrite
(
file
,
(
byte
*
)
new_log_ident
,
(
uint
)
ident_len
,
...
@@ -3168,16 +3227,15 @@ bool Intvar_log_event::write(IO_CACHE* file)
...
@@ -3168,16 +3227,15 @@ bool Intvar_log_event::write(IO_CACHE* file)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Intvar_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Intvar_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
)
LAST_EVENT_INFO
*
last_event_info
)
{
{
char
llbuff
[
22
];
char
llbuff
[
22
];
const
char
*
msg
;
const
char
*
msg
;
LINT_INIT
(
msg
);
LINT_INIT
(
msg
);
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Intvar
\n
"
);
fprintf
(
file
,
"
\t
Intvar
\n
"
);
}
}
...
@@ -3258,12 +3316,12 @@ bool Rand_log_event::write(IO_CACHE* file)
...
@@ -3258,12 +3316,12 @@ bool Rand_log_event::write(IO_CACHE* file)
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Rand_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Rand_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
char
llbuff
[
22
],
llbuff2
[
22
];
char
llbuff
[
22
],
llbuff2
[
22
];
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Rand
\n
"
);
fprintf
(
file
,
"
\t
Rand
\n
"
);
}
}
fprintf
(
file
,
"SET @@RAND_SEED1=%s, @@RAND_SEED2=%s;
\n
"
,
fprintf
(
file
,
"SET @@RAND_SEED1=%s, @@RAND_SEED2=%s;
\n
"
,
...
@@ -3328,14 +3386,14 @@ bool Xid_log_event::write(IO_CACHE* file)
...
@@ -3328,14 +3386,14 @@ bool Xid_log_event::write(IO_CACHE* file)
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Xid_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Xid_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
char
buf
[
64
];
char
buf
[
64
];
longlong10_to_str
(
xid
,
buf
,
10
);
longlong10_to_str
(
xid
,
buf
,
10
);
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Xid = %s
\n
"
,
buf
);
fprintf
(
file
,
"
\t
Xid = %s
\n
"
,
buf
);
fflush
(
file
);
fflush
(
file
);
}
}
...
@@ -3526,11 +3584,11 @@ bool User_var_log_event::write(IO_CACHE* file)
...
@@ -3526,11 +3584,11 @@ bool User_var_log_event::write(IO_CACHE* file)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
User_var_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
User_var_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
{
{
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
User_var
\n
"
);
fprintf
(
file
,
"
\t
User_var
\n
"
);
}
}
...
@@ -3701,11 +3759,11 @@ int User_var_log_event::exec_event(struct st_relay_log_info* rli)
...
@@ -3701,11 +3759,11 @@ int User_var_log_event::exec_event(struct st_relay_log_info* rli)
#ifdef HAVE_REPLICATION
#ifdef HAVE_REPLICATION
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Unknown_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Unknown_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fputc
(
'\n'
,
file
);
fputc
(
'\n'
,
file
);
fprintf
(
file
,
"# %s"
,
"Unknown event
\n
"
);
fprintf
(
file
,
"# %s"
,
"Unknown event
\n
"
);
}
}
...
@@ -3772,12 +3830,12 @@ Slave_log_event::~Slave_log_event()
...
@@ -3772,12 +3830,12 @@ Slave_log_event::~Slave_log_event()
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Slave_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Slave_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
char
llbuff
[
22
];
char
llbuff
[
22
];
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fputc
(
'\n'
,
file
);
fputc
(
'\n'
,
file
);
fprintf
(
file
,
"\
fprintf
(
file
,
"\
Slave: master_host: '%s' master_port: %d master_log: '%s' master_pos: %s
\n
"
,
Slave: master_host: '%s' master_port: %d master_log: '%s' master_pos: %s
\n
"
,
...
@@ -3857,12 +3915,12 @@ int Slave_log_event::exec_event(struct st_relay_log_info* rli)
...
@@ -3857,12 +3915,12 @@ int Slave_log_event::exec_event(struct st_relay_log_info* rli)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Stop_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
)
void
Stop_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fprintf
(
file
,
"
\t
Stop
\n
"
);
fprintf
(
file
,
"
\t
Stop
\n
"
);
fflush
(
file
);
fflush
(
file
);
}
}
...
@@ -4036,19 +4094,20 @@ Create_file_log_event::Create_file_log_event(const char* buf, uint len,
...
@@ -4036,19 +4094,20 @@ Create_file_log_event::Create_file_log_event(const char* buf, uint len,
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Create_file_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Create_file_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
,
LAST_EVENT_INFO
*
last_event_info
,
bool
enable_local
)
bool
enable_local
)
{
{
if
(
short_form
)
if
(
print_event_info
->
short_form
)
{
{
if
(
enable_local
&&
check_fname_outside_temp_buf
())
if
(
enable_local
&&
check_fname_outside_temp_buf
())
Load_log_event
::
print
(
file
,
1
,
las
t_event_info
);
Load_log_event
::
print
(
file
,
prin
t_event_info
);
return
;
return
;
}
}
if
(
enable_local
)
if
(
enable_local
)
{
{
Load_log_event
::
print
(
file
,
short_form
,
last_event_info
,
!
check_fname_outside_temp_buf
());
Load_log_event
::
print
(
file
,
print_event_info
,
!
check_fname_outside_temp_buf
());
/*
/*
That one is for "file_id: etc" below: in mysqlbinlog we want the #, in
That one is for "file_id: etc" below: in mysqlbinlog we want the #, in
SHOW BINLOG EVENTS we don't.
SHOW BINLOG EVENTS we don't.
...
@@ -4060,10 +4119,9 @@ void Create_file_log_event::print(FILE* file, bool short_form,
...
@@ -4060,10 +4119,9 @@ void Create_file_log_event::print(FILE* file, bool short_form,
}
}
void
Create_file_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Create_file_log_event
::
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
)
LAST_EVENT_INFO
*
last_event_info
)
{
{
print
(
file
,
short_form
,
last_event_info
,
0
);
print
(
file
,
print_event_info
,
0
);
}
}
#endif
/* MYSQL_CLIENT */
#endif
/* MYSQL_CLIENT */
...
@@ -4223,12 +4281,12 @@ bool Append_block_log_event::write(IO_CACHE* file)
...
@@ -4223,12 +4281,12 @@ bool Append_block_log_event::write(IO_CACHE* file)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Append_block_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Append_block_log_event
::
print
(
FILE
*
file
,
LAST_EVENT_INFO
*
las
t_event_info
)
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fputc
(
'\n'
,
file
);
fputc
(
'\n'
,
file
);
fprintf
(
file
,
"#%s: file_id: %d block_len: %d
\n
"
,
fprintf
(
file
,
"#%s: file_id: %d block_len: %d
\n
"
,
get_type_str
(),
file_id
,
block_len
);
get_type_str
(),
file_id
,
block_len
);
...
@@ -4367,12 +4425,12 @@ bool Delete_file_log_event::write(IO_CACHE* file)
...
@@ -4367,12 +4425,12 @@ bool Delete_file_log_event::write(IO_CACHE* file)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Delete_file_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Delete_file_log_event
::
print
(
FILE
*
file
,
LAST_EVENT_INFO
*
las
t_event_info
)
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fputc
(
'\n'
,
file
);
fputc
(
'\n'
,
file
);
fprintf
(
file
,
"#Delete_file: file_id=%u
\n
"
,
file_id
);
fprintf
(
file
,
"#Delete_file: file_id=%u
\n
"
,
file_id
);
}
}
...
@@ -4463,12 +4521,12 @@ bool Execute_load_log_event::write(IO_CACHE* file)
...
@@ -4463,12 +4521,12 @@ bool Execute_load_log_event::write(IO_CACHE* file)
*/
*/
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Execute_load_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Execute_load_log_event
::
print
(
FILE
*
file
,
LAST_EVENT_INFO
*
las
t_event_info
)
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
if
(
short_form
)
if
(
print_event_info
->
short_form
)
return
;
return
;
print_header
(
file
);
print_header
(
file
,
print_event_info
);
fputc
(
'\n'
,
file
);
fputc
(
'\n'
,
file
);
fprintf
(
file
,
"#Exec_load: file_id=%d
\n
"
,
fprintf
(
file
,
"#Exec_load: file_id=%d
\n
"
,
file_id
);
file_id
);
...
@@ -4675,18 +4733,18 @@ Execute_load_query_log_event::write_post_header_for_derived(IO_CACHE* file)
...
@@ -4675,18 +4733,18 @@ Execute_load_query_log_event::write_post_header_for_derived(IO_CACHE* file)
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
void
Execute_load_query_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Execute_load_query_log_event
::
print
(
FILE
*
file
,
LAST_EVENT_INFO
*
las
t_event_info
)
PRINT_EVENT_INFO
*
prin
t_event_info
)
{
{
print
(
file
,
short_form
,
las
t_event_info
,
0
);
print
(
file
,
prin
t_event_info
,
0
);
}
}
void
Execute_load_query_log_event
::
print
(
FILE
*
file
,
bool
short_form
,
void
Execute_load_query_log_event
::
print
(
FILE
*
file
,
LAST_EVENT_INFO
*
las
t_event_info
,
PRINT_EVENT_INFO
*
prin
t_event_info
,
const
char
*
local_fname
)
const
char
*
local_fname
)
{
{
print_query_header
(
file
,
short_form
,
las
t_event_info
);
print_query_header
(
file
,
prin
t_event_info
);
if
(
local_fname
)
if
(
local_fname
)
{
{
...
@@ -4707,7 +4765,7 @@ void Execute_load_query_log_event::print(FILE* file, bool short_form,
...
@@ -4707,7 +4765,7 @@ void Execute_load_query_log_event::print(FILE* file, bool short_form,
fprintf
(
file
,
";
\n
"
);
fprintf
(
file
,
";
\n
"
);
}
}
if
(
!
short_form
)
if
(
!
print_event_info
->
short_form
)
fprintf
(
file
,
"# file_id: %d
\n
"
,
file_id
);
fprintf
(
file
,
"# file_id: %d
\n
"
,
file_id
);
}
}
#endif
#endif
...
...
sql/log_event.h
View file @
1aae3e1d
...
@@ -451,12 +451,23 @@ struct st_relay_log_info;
...
@@ -451,12 +451,23 @@ struct st_relay_log_info;
#ifdef MYSQL_CLIENT
#ifdef MYSQL_CLIENT
/*
/*
A structure for mysqlbinlog to remember the last db, flags2, sql_mode etc; it
A structure for mysqlbinlog to know how to print events
is passed to events' print() methods, so that they print only the necessary
USE and SET commands.
This structure is passed to the event's print() methods,
There are two types of settings stored here:
1. Last db, flags2, sql_mode etc comes from the last printed event.
They are stored so that only the necessary USE and SET commands
are printed.
2. Other information on how to print the events, e.g. short_form,
hexdump_from. These are not dependent on the last event.
*/
*/
typedef
struct
st_
las
t_event_info
typedef
struct
st_
prin
t_event_info
{
{
/*
Settings for database, sql_mode etc that comes from the last event
that was printed.
*/
// TODO: have the last catalog here ??
// TODO: have the last catalog here ??
char
db
[
FN_REFLEN
+
1
];
// TODO: make this a LEX_STRING when thd->db is
char
db
[
FN_REFLEN
+
1
];
// TODO: make this a LEX_STRING when thd->db is
bool
flags2_inited
;
bool
flags2_inited
;
...
@@ -467,12 +478,12 @@ typedef struct st_last_event_info
...
@@ -467,12 +478,12 @@ typedef struct st_last_event_info
bool
charset_inited
;
bool
charset_inited
;
char
charset
[
6
];
// 3 variables, each of them storable in 2 bytes
char
charset
[
6
];
// 3 variables, each of them storable in 2 bytes
char
time_zone_str
[
MAX_TIME_ZONE_NAME_LENGTH
];
char
time_zone_str
[
MAX_TIME_ZONE_NAME_LENGTH
];
st_
las
t_event_info
()
st_
prin
t_event_info
()
:
flags2_inited
(
0
),
sql_mode_inited
(
0
),
:
flags2_inited
(
0
),
sql_mode_inited
(
0
),
auto_increment_increment
(
1
),
auto_increment_offset
(
1
),
charset_inited
(
0
)
auto_increment_increment
(
1
),
auto_increment_offset
(
1
),
charset_inited
(
0
)
{
{
/*
/*
Currently we only use static
LAS
T_EVENT_INFO objects, so zeroed at
Currently we only use static
PRIN
T_EVENT_INFO objects, so zeroed at
program's startup, but these explicit bzero() is for the day someone
program's startup, but these explicit bzero() is for the day someone
creates dynamic instances.
creates dynamic instances.
*/
*/
...
@@ -480,7 +491,13 @@ typedef struct st_last_event_info
...
@@ -480,7 +491,13 @@ typedef struct st_last_event_info
bzero
(
charset
,
sizeof
(
charset
));
bzero
(
charset
,
sizeof
(
charset
));
bzero
(
time_zone_str
,
sizeof
(
time_zone_str
));
bzero
(
time_zone_str
,
sizeof
(
time_zone_str
));
}
}
}
LAST_EVENT_INFO
;
/* Settings on how to print the events */
bool
short_form
;
my_off_t
hexdump_from
;
uint8
common_header_len
;
}
PRINT_EVENT_INFO
;
#endif
#endif
...
@@ -589,9 +606,9 @@ class Log_event
...
@@ -589,9 +606,9 @@ class Log_event
static
Log_event
*
read_log_event
(
IO_CACHE
*
file
,
static
Log_event
*
read_log_event
(
IO_CACHE
*
file
,
const
Format_description_log_event
*
description_event
);
const
Format_description_log_event
*
description_event
);
/* print*() functions are used by mysqlbinlog */
/* print*() functions are used by mysqlbinlog */
virtual
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
)
=
0
;
virtual
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
)
=
0
;
void
print_timestamp
(
FILE
*
file
,
time_t
*
ts
=
0
);
void
print_timestamp
(
FILE
*
file
,
time_t
*
ts
=
0
);
void
print_header
(
FILE
*
file
);
void
print_header
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
=
0
);
#endif
#endif
static
void
*
operator
new
(
size_t
size
)
static
void
*
operator
new
(
size_t
size
)
...
@@ -751,8 +768,8 @@ class Query_log_event: public Log_event
...
@@ -751,8 +768,8 @@ class Query_log_event: public Log_event
uint32
q_len_arg
);
uint32
q_len_arg
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print_query_header
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print_query_header
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Query_log_event
(
const
char
*
buf
,
uint
event_len
,
Query_log_event
(
const
char
*
buf
,
uint
event_len
,
...
@@ -806,7 +823,7 @@ class Slave_log_event: public Log_event
...
@@ -806,7 +823,7 @@ class Slave_log_event: public Log_event
void
pack_info
(
Protocol
*
protocol
);
void
pack_info
(
Protocol
*
protocol
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Slave_log_event
(
const
char
*
buf
,
uint
event_len
);
Slave_log_event
(
const
char
*
buf
,
uint
event_len
);
...
@@ -894,8 +911,8 @@ class Load_log_event: public Log_event
...
@@ -894,8 +911,8 @@ class Load_log_event: public Log_event
bool
use_rli_only_for_errors
);
bool
use_rli_only_for_errors
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
void
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
,
bool
commented
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
,
bool
commented
);
#endif
#endif
/*
/*
...
@@ -984,7 +1001,7 @@ class Start_log_event_v3: public Log_event
...
@@ -984,7 +1001,7 @@ class Start_log_event_v3: public Log_event
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
Start_log_event_v3
()
{}
Start_log_event_v3
()
{}
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Start_log_event_v3
(
const
char
*
buf
,
Start_log_event_v3
(
const
char
*
buf
,
...
@@ -1079,7 +1096,7 @@ class Intvar_log_event: public Log_event
...
@@ -1079,7 +1096,7 @@ class Intvar_log_event: public Log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Intvar_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
Intvar_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
...
@@ -1120,7 +1137,7 @@ class Rand_log_event: public Log_event
...
@@ -1120,7 +1137,7 @@ class Rand_log_event: public Log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Rand_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
Rand_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
...
@@ -1157,7 +1174,7 @@ class Xid_log_event: public Log_event
...
@@ -1157,7 +1174,7 @@ class Xid_log_event: public Log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Xid_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
Xid_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
...
@@ -1199,7 +1216,7 @@ class User_var_log_event: public Log_event
...
@@ -1199,7 +1216,7 @@ class User_var_log_event: public Log_event
void
pack_info
(
Protocol
*
protocol
);
void
pack_info
(
Protocol
*
protocol
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
User_var_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
User_var_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
);
...
@@ -1225,7 +1242,7 @@ class Stop_log_event: public Log_event
...
@@ -1225,7 +1242,7 @@ class Stop_log_event: public Log_event
{}
{}
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Stop_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
)
:
Stop_log_event
(
const
char
*
buf
,
const
Format_description_log_event
*
description_event
)
:
...
@@ -1263,7 +1280,7 @@ class Rotate_log_event: public Log_event
...
@@ -1263,7 +1280,7 @@ class Rotate_log_event: public Log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Rotate_log_event
(
const
char
*
buf
,
uint
event_len
,
Rotate_log_event
(
const
char
*
buf
,
uint
event_len
,
...
@@ -1316,8 +1333,8 @@ class Create_file_log_event: public Load_log_event
...
@@ -1316,8 +1333,8 @@ class Create_file_log_event: public Load_log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
void
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
,
bool
enable_local
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
,
bool
enable_local
);
#endif
#endif
Create_file_log_event
(
const
char
*
buf
,
uint
event_len
,
Create_file_log_event
(
const
char
*
buf
,
uint
event_len
,
...
@@ -1384,7 +1401,7 @@ class Append_block_log_event: public Log_event
...
@@ -1384,7 +1401,7 @@ class Append_block_log_event: public Log_event
virtual
int
get_create_or_append
()
const
;
virtual
int
get_create_or_append
()
const
;
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Append_block_log_event
(
const
char
*
buf
,
uint
event_len
,
Append_block_log_event
(
const
char
*
buf
,
uint
event_len
,
...
@@ -1419,8 +1436,8 @@ class Delete_file_log_event: public Log_event
...
@@ -1419,8 +1436,8 @@ class Delete_file_log_event: public Log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
void
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
,
bool
enable_local
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
,
bool
enable_local
);
#endif
#endif
Delete_file_log_event
(
const
char
*
buf
,
uint
event_len
,
Delete_file_log_event
(
const
char
*
buf
,
uint
event_len
,
...
@@ -1455,7 +1472,7 @@ class Execute_load_log_event: public Log_event
...
@@ -1455,7 +1472,7 @@ class Execute_load_log_event: public Log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
#endif
#endif
Execute_load_log_event
(
const
char
*
buf
,
uint
event_len
,
Execute_load_log_event
(
const
char
*
buf
,
uint
event_len
,
...
@@ -1540,11 +1557,10 @@ class Execute_load_query_log_event: public Query_log_event
...
@@ -1540,11 +1557,10 @@ class Execute_load_query_log_event: public Query_log_event
int
exec_event
(
struct
st_relay_log_info
*
rli
);
int
exec_event
(
struct
st_relay_log_info
*
rli
);
#endif
/* HAVE_REPLICATION */
#endif
/* HAVE_REPLICATION */
#else
#else
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
print_event_info
=
0
);
LAST_EVENT_INFO
*
last_event_info
=
0
);
/* Prints the query as LOAD DATA LOCAL and with rewritten filename */
/* Prints the query as LOAD DATA LOCAL and with rewritten filename */
void
print
(
FILE
*
file
,
bool
short_form
,
LAST_EVENT_INFO
*
las
t_event_info
,
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
,
const
char
*
local_fname
);
const
char
*
local_fname
);
#endif
#endif
Execute_load_query_log_event
(
const
char
*
buf
,
uint
event_len
,
Execute_load_query_log_event
(
const
char
*
buf
,
uint
event_len
,
const
Format_description_log_event
*
description_event
);
const
Format_description_log_event
*
description_event
);
...
@@ -1573,7 +1589,7 @@ class Unknown_log_event: public Log_event
...
@@ -1573,7 +1589,7 @@ class Unknown_log_event: public Log_event
Log_event
(
buf
,
description_event
)
Log_event
(
buf
,
description_event
)
{}
{}
~
Unknown_log_event
()
{}
~
Unknown_log_event
()
{}
void
print
(
FILE
*
file
,
bool
short_form
=
0
,
LAST_EVENT_INFO
*
las
t_event_info
=
0
);
void
print
(
FILE
*
file
,
PRINT_EVENT_INFO
*
prin
t_event_info
=
0
);
Log_event_type
get_type_code
()
{
return
UNKNOWN_EVENT
;}
Log_event_type
get_type_code
()
{
return
UNKNOWN_EVENT
;}
bool
is_valid
()
const
{
return
1
;
}
bool
is_valid
()
const
{
return
1
;
}
};
};
...
...
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