You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
5.1 KiB
146 lines
5.1 KiB
# ==== Purpose ====
|
|
#
|
|
# Run mysqlbinlog and filter out nondeterministic output.
|
|
#
|
|
# ==== Usage ====
|
|
#
|
|
# --let $mysqlbinlog_parameters= "PARAMETERS"
|
|
# [--let $mysqlbinlog_pipe= "| FILTER > FILE"]
|
|
# --source include/mysqlbinlog.inc
|
|
#
|
|
# Parameters:
|
|
#
|
|
# $binlog_fullpath
|
|
# Filename to use.
|
|
#
|
|
# $binlog_position
|
|
# Position to use.
|
|
#
|
|
# $mysqlbinlog_parameters
|
|
# Parameters to pass to mysqlbinlog
|
|
#
|
|
# $mysqlbinlog_skip_binlog_statements
|
|
# Remove all BINLOG statements from the output.
|
|
# This requires 'source include/have_util_sed.inc' in the main test script.
|
|
#
|
|
# $mysqlbinlog_only_decoded_rows
|
|
# Only include decoded rows. This adds the argument -v and filters
|
|
# the output so only files beginning with '###' are printed.
|
|
# This requires 'source include/have_grep.inc' in the main test script.
|
|
#
|
|
# $mysqlbinlog_pipe
|
|
# Optional redirection of output.
|
|
#
|
|
# $mysqlbinlog_capture_output
|
|
# Instead of writing the output from the command to the result log,
|
|
# save it in the mysqltest variable $result
|
|
#
|
|
# $mysqlbinlog_skip_replace
|
|
# DEBUGGING ONLY: Print unfiltered output to the log. This should
|
|
# never be used in production since output will be
|
|
# nondeterministic.
|
|
#
|
|
# $mysqlbinlog_allow_error
|
|
# If set, it is allowed for the command to fail with error 1. This
|
|
# is useful in conjuction with $mysqlbinlog_only_decoded_rows, in case
|
|
# no decoded rows are found.
|
|
|
|
--let $include_filename= mysqlbinlog.inc
|
|
--source include/begin_include_file.inc
|
|
|
|
|
|
--let $mysqlbinlog_extra_parameters=
|
|
if ($binlog_fullpath)
|
|
{
|
|
--let $mysqlbinlog_extra_parameters= $binlog_fullpath
|
|
}
|
|
if ($binlog_position)
|
|
{
|
|
--let $mysqlbinlog_extra_parameters= $mysqlbinlog_extra_parameters --start-position=$binlog_position
|
|
}
|
|
|
|
--let $mysqlbinlog_sed_pipe=
|
|
if ($mysqlbinlog_skip_binlog_statements)
|
|
{
|
|
if ($SED == '')
|
|
{
|
|
--die !!!ERROR IN TEST: source include/have_util_sed.inc before using mysqlbinlog.inc with $mysqlbinlog_skip_binlog_statements set
|
|
}
|
|
--let $mysqlbinlog_sed_pipe= | $SED '/^BINLOG/,/\\/\\*!\\*\\//d'
|
|
}
|
|
|
|
--let $mysqlbinlog_grep_pipe=
|
|
if ($mysqlbinlog_only_decoded_rows)
|
|
{
|
|
if ($GREP == '')
|
|
{
|
|
--die !!!ERROR IN TEST: source include/have_grep.inc before using mysqlbinlog.inc with $mysqlbinlog_only_decoded_rows set
|
|
}
|
|
--let $mysqlbinlog_grep_pipe= | $GREP '^### '
|
|
--let $mysqlbinlog_extra_parameters= $mysqlbinlog_extra_parameters -v
|
|
}
|
|
|
|
if ($mysqlbinlog_skip_replace)
|
|
{
|
|
--echo DO_NOT_CHECK_IN_THIS_LINE: printing unfiltered mysqlbinlog output. This should only be used for debugging. Never check in a result file that contains unfiltered mysqlbinlog output.
|
|
}
|
|
if (!$mysqlbinlog_skip_replace)
|
|
{
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
replace_regex
|
|
/TIMESTAMP=[0-9]*/TIMESTAMP=#/
|
|
/#[0-9]*[ ]*[0-9]*:[0-9]*:[0-9]* server id [0-9]*/# # server id #/
|
|
/SQL_LOAD_MB-[a-f0-9]-[a-f0-9]/SQL_LOAD_MB-#-#/
|
|
/exec_time=[0-9]*/exec_time=#/
|
|
/last_committed=[0-9]*/last_committed=#/
|
|
/sequence_number=[0-9]*/sequence_number=#/
|
|
/original_committed_timestamp=[0-9]*.immediate_commit_timestamp=[0-9]*/original_committed_timestamp=# immediate_commit_timestamp=#/
|
|
/transaction_length=[0-9]*/transaction_length=#/
|
|
/end_log_pos [0-9]*/end_log_pos #/
|
|
/# at [0-9]*/# at #/
|
|
/Xid = [0-9]*/Xid = #/
|
|
/thread_id=[0-9]*/thread_id=#/
|
|
/table id [0-9]*/table id #/
|
|
/mapped to number [0-9]*/mapped to number #/
|
|
/server v [^ ]*/server v #/
|
|
/Start: binlog v [0-9]*/Start: binlog v #/
|
|
/created [0-9]*[ ]*[0-9]*:[0-9]*:[0-9]* at startup/created # at startup/
|
|
/(@[0-9]*=[0-9-]*[.][0-9]{1,3})[0-9e+-]*[^ ]*[ ]*(.*(FLOAT|DOUBLE).*[*].)/\1... \2/
|
|
/# immediate_commit_timestamp=[0-9]* \([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*.[0-9]* GMT\)/# immediate_commit_timestamp= MICROSECONDS-FROM-EPOCH (YYYY-MM-DD HOURS:MINUTES:SECONDS TZ)/
|
|
/# original_commit_timestamp=[0-9]* \([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*.[0-9]* GMT\)/# original_commit_timestamp= MICROSECONDS-FROM-EPOCH (YYYY-MM-DD HOURS:MINUTES:SECONDS TZ)/
|
|
/SET @@session.original_commit_timestamp=[0-9]*/SET @@session.original_commit_timestamp= MICROSECONDS-FROM-EPOCH/
|
|
/SET @@session.original_server_version=[0-9]*/SET @@session.original_server_version= ORIGINAL_SERVER_VERSION/
|
|
/SET @@session.immediate_server_version=[0-9]*/SET @@session.immediate_server_version= IMMEDIATE_SERVER_VERSION/
|
|
/SET @@SESSION.GTID_NEXT= '.*'/SET @@SESSION.GTID_NEXT= '#'/
|
|
/CRC32 0x[0-9a-f]{8}/CRC32 #/
|
|
/# [a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}:/# #:/;
|
|
}
|
|
|
|
--let $mysqlbinlog_cmd= $MYSQL_BINLOG $mysqlbinlog_parameters $mysqlbinlog_extra_parameters $mysqlbinlog_grep_pipe $mysqlbinlog_sed_pipe $mysqlbinlog_pipe
|
|
|
|
if ($rpl_debug)
|
|
{
|
|
--echo DEBUG: Executing '$mysqlbinlog_cmd'
|
|
}
|
|
|
|
if (!$mysqlbinlog_capture_output)
|
|
{
|
|
if ($mysqlbinlog_allow_error)
|
|
{
|
|
--error 0, 1
|
|
--exec $mysqlbinlog_cmd
|
|
}
|
|
if (!$mysqlbinlog_allow_error)
|
|
{
|
|
--exec $mysqlbinlog_cmd
|
|
}
|
|
}
|
|
if ($mysqlbinlog_capture_output)
|
|
{
|
|
--let $command= $mysqlbinlog_cmd
|
|
--source include/get_command_output.inc
|
|
|
|
}
|
|
|
|
--let $include_filename= mysqlbinlog.inc
|
|
--source include/end_include_file.inc
|
|
|