summaryrefslogtreecommitdiff
path: root/mysql-test/t/mysqlbinlog_row_big.test
blob: 14e818e7214ffc950200ba8574d400f308744122 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# 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 # 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 #
SET @@global.max_allowed_packet= 1024*1024*1024;

--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 much rows are affected by each statement.
--echo #
--enable_info

--echo #
--echo # Insert a big row.
--echo #
#
# 256MB
#INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 16777216));
#
# 32MB
INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 2097152));
#
# 4MB
#INSERT INTO t1 VALUES (REPEAT('ManyMegaByteBlck', 262144));
#
# 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 #
query_vertical SELECT LENGTH(c1) FROM t1;

--echo #
--echo # Grow the row 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 #
query_vertical SELECT LENGTH(c1) FROM t1;

--echo #
--echo # Delete the row.
--echo #
DELETE FROM t1 WHERE c1 >= 'ManyMegaByteBlck';

--echo #
--echo # Hide how much 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 #
DROP TABLE t1;

--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