mirror of
https://github.com/MariaDB/server.git
synced 2025-01-24 15:54:37 +01:00
29f0dcb563
* Finished Monty and Jani's merge * Some InnoDB tests still fail (because it's old xtradb code run against newer testsuite). They are expected to go after mergning with the latest xtradb.
167 lines
4.4 KiB
Text
167 lines
4.4 KiB
Text
# mysqlbinlog_big.test
|
|
#
|
|
# Show that mysqlbinlog can handle big rows.
|
|
#
|
|
|
|
#
|
|
# The *huge* output of mysqlbinlog will be redirected to
|
|
# $MYSQLTEST_VARDIR/$mysqlbinlog_output
|
|
#
|
|
--let $mysqlbinlog_output= tmp/mysqlbinlog_big_1.out
|
|
|
|
#--source include/have_myisam.inc
|
|
--let $engine_type= MyISAM
|
|
|
|
#
|
|
# This test case is insensitive to the binlog format
|
|
# because we don't display the output of mysqlbinlog.
|
|
#
|
|
#--source include/have_binlog_format_row.inc
|
|
|
|
--source include/have_log_bin.inc
|
|
|
|
# This is a big test.
|
|
--source include/big_test.inc
|
|
|
|
--echo #
|
|
--echo # We need big packets.
|
|
--echo #
|
|
connect (con1, localhost, root,,);
|
|
connection con1;
|
|
SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
|
|
SET @@global.max_allowed_packet= 1024*1024*1024;
|
|
connect (con2, localhost, root,,);
|
|
connection con2;
|
|
|
|
--echo #
|
|
--echo # Preparatory cleanup.
|
|
--echo #
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
|
|
--echo #
|
|
--echo # We need a fixed timestamp to avoid varying results.
|
|
--echo #
|
|
SET timestamp=1000000000;
|
|
|
|
--echo #
|
|
--echo # We need big packets.
|
|
--echo #
|
|
--echo # Capture initial value to reset at the end of the test
|
|
# use let $<var> = query_get_value as FLUSH statements
|
|
# in the test will set @<var> values to NULL
|
|
let $orig_max_allowed_packet =
|
|
query_get_value(SELECT @@global.max_allowed_packet, @@global.max_allowed_packet, 1);
|
|
|
|
--echo # Now adjust max_allowed_packet
|
|
SET @@global.max_allowed_packet= 1024*1024*1024;
|
|
|
|
--echo max_allowed_packet is a global variable.
|
|
--echo In order for the preceding change in max_allowed_packets' value
|
|
--echo to be seen and used, we must start a new connection.
|
|
--echo The change does not take effect with the current one.
|
|
--echo For simplicity, we just disconnect / reconnect connection default here.
|
|
--echo Disconnecting default connection...
|
|
disconnect default;
|
|
--echo Reconnecting default connection...
|
|
connect (default, localhost,root,,);
|
|
--echo default connection established, continuing with the test
|
|
|
|
--echo #
|
|
--echo # Delete all existing binary logs.
|
|
--echo #
|
|
RESET MASTER;
|
|
|
|
--echo #
|
|
--echo # Create a test table.
|
|
--echo #
|
|
eval CREATE TABLE t1 (
|
|
c1 LONGTEXT
|
|
) ENGINE=$engine_type DEFAULT CHARSET latin1;
|
|
|
|
--echo #
|
|
--echo # Show how many rows are affected by each statement.
|
|
--echo #
|
|
--enable_info
|
|
|
|
--echo #
|
|
--echo # Insert some big rows.
|
|
--echo #
|
|
|
|
--echo 256MB
|
|
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 16777216));
|
|
|
|
--echo 32MB
|
|
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 2097152));
|
|
|
|
--echo 4MB
|
|
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 262144));
|
|
|
|
--echo 512KB
|
|
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 32768));
|
|
|
|
--echo #
|
|
--echo # Show what we have in the table.
|
|
--echo # Do not display the column value itself, just its length.
|
|
--echo #
|
|
--sorted_result
|
|
query_vertical SELECT LENGTH(c1) FROM t1;
|
|
|
|
--echo #
|
|
--echo # Grow the rows by updating.
|
|
--echo #
|
|
UPDATE t1 SET c1 = CONCAT(c1, c1);
|
|
|
|
--echo #
|
|
--echo # Show what we have in the table.
|
|
--echo # Do not display the column value itself, just its length.
|
|
--echo #
|
|
--sorted_result
|
|
query_vertical SELECT LENGTH(c1) FROM t1;
|
|
|
|
--echo #
|
|
--echo # Delete the rows.
|
|
--echo #
|
|
DELETE FROM t1 WHERE c1 >= 'ManyMegaByteBlck';
|
|
|
|
--echo #
|
|
--echo # Hide how many rows are affected by each statement.
|
|
--echo #
|
|
--disable_info
|
|
|
|
--echo #
|
|
--echo # Flush all log buffers to the log file.
|
|
--echo #
|
|
FLUSH LOGS;
|
|
|
|
--echo #
|
|
--echo # Call mysqlbinlog to display the log file contents.
|
|
--echo # NOTE: The output of mysqlbinlog is redirected to
|
|
--echo # \$MYSQLTEST_VARDIR/$mysqlbinlog_output
|
|
--echo # If you want to examine it, disable remove_file
|
|
--echo # at the bottom of the test script.
|
|
--echo #
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
|
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/ /exec_time=[0-9]*/exec_time=#/ /end_log_pos [0-9]*/end_log_pos #/ /# at [0-9]*/# at #/ /Xid = [0-9]*/Xid = #/
|
|
--exec $MYSQL_BINLOG -v -v $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/$mysqlbinlog_output
|
|
|
|
--echo #
|
|
--echo # Cleanup.
|
|
--echo #
|
|
--echo # reset variable value to pass testcase checks
|
|
eval SET @@global.max_allowed_packet = $orig_max_allowed_packet;
|
|
DROP TABLE t1;
|
|
|
|
connection con1;
|
|
SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
|
|
|
|
--echo remove_file \$MYSQLTEST_VARDIR/$mysqlbinlog_output
|
|
#
|
|
# NOTE: If you want to see the *huge* mysqlbinlog output, disable next line:
|
|
#
|
|
--remove_file $MYSQLTEST_VARDIR/$mysqlbinlog_output
|
|
|
|
disconnect con1
|
|
disconnect con2
|