# mysqlbinlog_row.test # # Show that mysqlbinlog displays human readable comments to # row-based log events. # # Procedure: # Create a table that represents all-known types in 5.1. # Write rows that contain the mins, maxes, and NULL for each type. # Write a random or "problematic" value (i.e. one that might require # escaping if it's represented as a string-y type) for each type. # Update each of these rows. # Delete each of these rows. # Inspect the binlog. # # Bug#31455 - mysqlbinlog don't print user readable info about RBR events # --source include/have_log_bin.inc set sql_mode=""; SET NAMES 'utf8'; #SHOW VARIABLES LIKE 'character_set%'; --echo # --echo # Preparatory cleanup. --echo # --disable_warnings DROP TABLE IF EXISTS t1, t2, t3; --enable_warnings --echo # --echo # We need a fixed timestamp to avoid varying results. --echo # SET timestamp=1000000000; --echo # --echo # =================================================== --echo # Test #1 - Insert/update/delete with all data types. --echo # =================================================== --echo # --echo # Delete all existing binary logs. --echo # RESET MASTER; --echo # --echo # Create a test table with all data types. --echo # eval CREATE TABLE t1 ( c01 BIT, c02 BIT(64), c03 TINYINT, c04 TINYINT UNSIGNED, c05 TINYINT ZEROFILL, c06 BOOL, c07 SMALLINT, c08 SMALLINT UNSIGNED, c09 SMALLINT ZEROFILL, c10 MEDIUMINT, c11 MEDIUMINT UNSIGNED, c12 MEDIUMINT ZEROFILL, c13 INT, c14 INT UNSIGNED, c15 INT ZEROFILL, c16 BIGINT, c17 BIGINT UNSIGNED, c18 BIGINT ZEROFILL, c19 FLOAT, c20 FLOAT UNSIGNED, c21 FLOAT ZEROFILL, c22 DOUBLE, c23 DOUBLE UNSIGNED, c24 DOUBLE ZEROFILL, c25 DECIMAL, c26 DECIMAL UNSIGNED, c27 DECIMAL ZEROFILL, # c28 DATE, c29 DATETIME, c30 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, c31 TIME, c32 YEAR, # c33 CHAR, c34 CHAR(0), c35 CHAR(1), c36 CHAR(255), c37 NATIONAL CHAR, c38 NATIONAL CHAR(0), c39 NATIONAL CHAR(1), c40 NATIONAL CHAR(255), c41 CHAR CHARACTER SET UCS2, c42 CHAR(0) CHARACTER SET UCS2, c43 CHAR(1) CHARACTER SET UCS2, c44 CHAR(255) CHARACTER SET UCS2, # c45 VARCHAR(0), c46 VARCHAR(1), c47 VARCHAR(255), c48 VARCHAR(261), c49 NATIONAL VARCHAR(0), c50 NATIONAL VARCHAR(1), c51 NATIONAL VARCHAR(255), c52 NATIONAL VARCHAR(261), c53 VARCHAR(0) CHARACTER SET UCS2, c54 VARCHAR(1) CHARACTER SET UCS2, c55 VARCHAR(255) CHARACTER SET UCS2, c56 VARCHAR(261) CHARACTER SET UCS2, # c57 BINARY, c58 BINARY(0), c59 BINARY(1), c60 BINARY(255), # c61 VARBINARY(0), c62 VARBINARY(1), c63 VARBINARY(255), c64 VARBINARY(261), # c65 TINYBLOB, c66 TINYTEXT, c67 TINYTEXT CHARACTER SET UCS2, c68 BLOB, c69 TEXT, c70 TEXT CHARACTER SET UCS2, c71 MEDIUMBLOB, c72 MEDIUMTEXT, c73 MEDIUMTEXT CHARACTER SET UCS2, c74 LONGBLOB, c75 LONGTEXT, c76 LONGTEXT CHARACTER SET UCS2, # c77 ENUM('a','b','c'), c78 SET('a','b','c'), # crn INT -- row number ) ENGINE=$engine_type DEFAULT CHARSET latin1; --echo # --echo # Insert minimum values. --echo # INSERT INTO t1 VALUES ( b'0', -- c01 b'0000000000000000000000000000000000000000000000000000000000000000', -- c02 -128, -- c03 0, -- c04 000, -- c05 false, -- c06 -32768, -- c07 0, -- c08 00000, -- c09 -8388608, -- c10 0, -- c11 00000000, -- c12 -2147483648, -- c13 0, -- c14 0000000000, -- c15 -9223372036854775808, -- c16 0, -- c17 00000000000000000000, -- c18 -3.402823466E+38, -- c19 1.175494351E-38, -- c20 000000000000, -- c21 -1.7976931348623E+308, -- c22 three digits cut for ps-protocol 2.2250738585072E-308, -- c23 three digits cut for ps-protocol 0000000000000000000000, -- c24 -9999999999, -- c25 0, -- c26 0000000000, -- c27 # '1000-01-01', -- c28 '1000-01-01 00:00:00', -- c29 '1970-01-02 00:00:01', -- c30 one day later due to timezone issues '-838:59:59', -- c31 '1901', -- c32 # '', -- c33 '', -- c34 '', -- c35 '', -- c36 '', -- c37 '', -- c38 '', -- c39 '', -- c40 '', -- c41 '', -- c42 '', -- c43 '', -- c44 # '', -- c45 '', -- c46 '', -- c47 '', -- c48 '', -- c49 '', -- c50 '', -- c51 '', -- c52 '', -- c53 '', -- c54 '', -- c55 '', -- c56 # '', -- c57 '', -- c58 '', -- c59 '', -- c60 # '', -- c61 '', -- c62 '', -- c63 '', -- c64 # '', -- c65 '', -- c66 '', -- c67 '', -- c68 '', -- c69 '', -- c70 '', -- c71 '', -- c72 '', -- c73 '', -- c74 '', -- c75 '', -- c76 # 'a', -- c77 '', -- c78 # 1 -- crn -- row number ); --echo # --echo # Insert maximum values. --echo # INSERT INTO t1 VALUES ( b'1', -- c01 b'1111111111111111111111111111111111111111111111111111111111111111', -- c02 127, -- c03 255, -- c04 255, -- c05 true, -- c06 32767, -- c07 65535, -- c08 65535, -- c09 8388607, -- c10 16777215, -- c11 16777215, -- c12 2147483647, -- c13 4294967295, -- c14 4294967295, -- c15 9223372036854775807, -- c16 18446744073709551615, -- c17 18446744073709551615, -- c18 3.402823466E+38, -- c19 3.402823466E+38, -- c20 3.402823466E+38, -- c21 1.7976931348623E+308, -- c22 three digits cut for ps-protocol 1.7976931348623E+308, -- c23 three digits cut for ps-protocol 1.7976931348623E+308, -- c24 three digits cut for ps-protocol 9999999999, -- c25 9999999999, -- c26 9999999999, -- c27 # '9999-12-31', -- c28 '9999-12-31 23:59:59', -- c29 '2038-01-08 03:14:07', -- c30 one day earlier due to timezone issues '838:59:59', -- c31 '2155', -- c32 # x'ff', -- c33 '', -- c34 x'ff', -- c35 REPEAT(x'ff',255), -- c36 _utf8 x'efbfbf', -- c37 '', -- c38 _utf8 x'efbfbf', -- c39 REPEAT(_utf8 x'efbfbf',255), -- c40 _ucs2 x'ffff', -- c41 '', -- c42 _ucs2 x'ffff', -- c43 REPEAT(_ucs2 x'ffff',255), -- c44 # '', -- c45 x'ff', -- c46 REPEAT(x'ff',255), -- c47 REPEAT(x'ff',261), -- c48 '', -- c49 _utf8 x'efbfbf', -- c50 REPEAT(_utf8 x'efbfbf',255), -- c51 REPEAT(_utf8 x'efbfbf',261), -- c52 '', -- c53 _ucs2 x'ffff', -- c54 REPEAT(_ucs2 x'ffff',255), -- c55 REPEAT(_ucs2 x'ffff',261), -- c56 # x'ff', -- c57 '', -- c58 x'ff', -- c59 REPEAT(x'ff',255), -- c60 # '', -- c61 x'ff', -- c62 REPEAT(x'ff',255), -- c63 REPEAT(x'ff',261), -- c64 # 'tinyblob', -- c65 not using maximum value here 'tinytext', -- c66 not using maximum value here 'tinytext-ucs2', -- c67 not using maximum value here 'blob', -- c68 not using maximum value here 'text', -- c69 not using maximum value here 'text-ucs2', -- c70 not using maximum value here 'mediumblob', -- c71 not using maximum value here 'mediumtext', -- c72 not using maximum value here 'mediumtext-ucs2', -- c73 not using maximum value here 'longblob', -- c74 not using maximum value here 'longtext', -- c75 not using maximum value here 'longtext-ucs2', -- c76 not using maximum value here # 'c', -- c77 'a,b,c', -- c78 # 2 -- crn -- row number ); --echo # --echo # Insert a row with NULL values and one with arbitrary values. --echo # INSERT INTO t1 VALUES ( NULL, -- c01 NULL, -- c02 NULL, -- c03 NULL, -- c04 NULL, -- c05 NULL, -- c06 NULL, -- c07 NULL, -- c08 NULL, -- c09 NULL, -- c10 NULL, -- c11 NULL, -- c12 NULL, -- c13 NULL, -- c14 NULL, -- c15 NULL, -- c16 NULL, -- c17 NULL, -- c18 NULL, -- c19 NULL, -- c20 NULL, -- c21 NULL, -- c22 NULL, -- c23 NULL, -- c24 NULL, -- c25 NULL, -- c26 NULL, -- c27 # NULL, -- c28 NULL, -- c29 NULL, -- c30 NULL, -- c31 NULL, -- c32 # NULL, -- c33 NULL, -- c34 NULL, -- c35 NULL, -- c36 NULL, -- c37 NULL, -- c38 NULL, -- c39 NULL, -- c40 NULL, -- c41 NULL, -- c42 NULL, -- c43 NULL, -- c44 # NULL, -- c45 NULL, -- c46 NULL, -- c47 NULL, -- c48 NULL, -- c49 NULL, -- c50 NULL, -- c51 NULL, -- c52 NULL, -- c53 NULL, -- c54 NULL, -- c55 NULL, -- c56 # NULL, -- c57 NULL, -- c58 NULL, -- c59 NULL, -- c60 # NULL, -- c61 NULL, -- c62 NULL, -- c63 NULL, -- c64 # NULL, -- c65 NULL, -- c66 NULL, -- c67 NULL, -- c68 NULL, -- c69 NULL, -- c70 NULL, -- c71 NULL, -- c72 NULL, -- c73 NULL, -- c74 NULL, -- c75 NULL, -- c76 # NULL, -- c77 NULL, -- c78 # 3 -- crn -- row number ), ( b'1', -- c01 b'1111111111111111111111111111111111111111111111111111111111111111', -- c02 127, -- c03 0, -- c04 001, -- c05 true, -- c06 32767, -- c07 0, -- c08 00001, -- c09 8388607, -- c10 0, -- c11 00000001, -- c12 2147483647, -- c13 0, -- c14 0000000001, -- c15 9223372036854775807, -- c16 0, -- c17 00000000000000000001, -- c18 -1.175494351E-38, -- c19 1.175494351E-38, -- c20 000000000000001, -- c21 -2.2250738585072E-308, -- c22 2.2250738585072E-308, -- c23 00000000000000000000001, -- c24 -9999999999, -- c25 9999999999, -- c26 0000000001, -- c27 # '2008-08-04', -- c28 '2008-08-04 16:18:06', -- c29 '2008-08-04 16:18:24', -- c30 '16:18:47', -- c31 '2008', -- c32 # 'a', -- c33 '', -- c34 'e', -- c35 REPEAT('i',255), -- c36 _utf8 x'c3a4', -- c37 '', -- c38 _utf8 x'c3b6', -- c39 REPEAT(_utf8 x'c3bc',255), -- c40 _ucs2 x'00e4', -- c41 '', -- c42 _ucs2 x'00f6', -- c43 REPEAT(_ucs2 x'00fc',255), -- c44 # '', -- c45 'a', -- c46 REPEAT('e',255), -- c47 REPEAT('i',261), -- c48 '', -- c49 _utf8 x'c3a4', -- c50 REPEAT(_utf8 x'c3b6',255), -- c51 REPEAT(_utf8 x'c3bc',261), -- c52 '', -- c53 _ucs2 x'00e4', -- c54 REPEAT(_ucs2 x'00f6',255), -- c55 REPEAT(_ucs2 x'00fc',261), -- c56 # '0', -- c57 '', -- c58 '1', -- c59 REPEAT('1',255), -- c60 # '', -- c61 'b', -- c62 REPEAT('c',255), -- c63 REPEAT('\'',261), -- c64 # 'tinyblob', -- c65 'tinytext', -- c66 'tinytext-ucs2', -- c67 'blob', -- c68 'text', -- c69 'text-ucs2', -- c70 'mediumblob', -- c71 'mediumtext', -- c72 'mediumtext-ucs2', -- c73 'longblob', -- c74 'longtext', -- c75 'longtext-ucs2', -- c76 # 'b', -- c77 'b,c', -- c78 # 4 -- crn -- row number ); --echo # --echo # Show what we have in the table. --echo # Do not display bit type output. It's binary and confuses diff. --echo # Also BINARY with nul-bytes should be avoided. --echo # --replace_column 1 # 2 # 57 # 58 # 59 # 60 # query_vertical SELECT * FROM t1; --echo # --echo # NOTE: For matching FLOAT and DOUBLE values in WHERE conditions, --echo # don't use exact match, but < or > and tweak the numbers a bit. --echo # --echo # Show how much rows are affected by each statement. --echo # --enable_info --echo # --echo # Update min values to max values. --echo # UPDATE t1 SET c01 = b'1', c02 = b'1111111111111111111111111111111111111111111111111111111111111111', c03 = 127, c04 = 255, c05 = 255, c06 = true, c07 = 32767, c08 = 65535, c09 = 65535, c10 = 8388607, c11 = 16777215, c12 = 16777215, c13 = 2147483647, c14 = 4294967295, c15 = 4294967295, c16 = 9223372036854775807, c17 = 18446744073709551615, c18 = 18446744073709551615, c19 = 3.402823466E+38, c20 = 3.402823466E+38, c21 = 3.402823466E+38, c22 = 1.7976931348623E+308, c23 = 1.7976931348623E+308, c24 = 1.7976931348623E+308, c25 = 9999999999, c26 = 9999999999, c27 = 9999999999, # c28 = '9999-12-31', c29 = '9999-12-31 23:59:59', c30 = '2038-01-08 03:14:07', c31 = '838:59:59', c32 = '2155', # c33 = x'ff', c34 = '', c35 = x'ff', c36 = REPEAT(x'ff',255), c37 = _utf8 x'efbfbf', c38 = '', c39 = _utf8 x'efbfbf', c40 = REPEAT(_utf8 x'efbfbf',255), c41 = _ucs2 x'ffff', c42 = '', c43 = _ucs2 x'ffff', c44 = REPEAT(_ucs2 x'ffff',255), # c45 = '', c46 = x'ff', c47 = REPEAT(x'ff',255), c48 = REPEAT(x'ff',261), c49 = '', c50 = _utf8 x'efbfbf', c51 = REPEAT(_utf8 x'efbfbf',255), c52 = REPEAT(_utf8 x'efbfbf',261), c53 = '', c54 = _ucs2 x'ffff', c55 = REPEAT(_ucs2 x'ffff',255), c56 = REPEAT(_ucs2 x'ffff',261), # c57 = x'ff', c58 = '', c59 = x'ff', c60 = REPEAT(x'ff',255), # c61 = '', c62 = x'ff', c63 = REPEAT(x'ff',255), c64 = REPEAT(x'ff',261), # c65 = 'tinyblob', c66 = 'tinytext', c67 = 'tinytext-ucs2', c68 = 'blob', c69 = 'text', c70 = 'text-ucs2', c71 = 'mediumblob', c72 = 'mediumtext', c73 = 'mediumtext-ucs2', c74 = 'longblob', c75 = 'longtext', c76 = 'longtext-ucs2', # c77 = 'c', c78 = 'a,b,c', # crn = crn # WHERE # c01 = b'0' AND c02 = b'0000000000000000000000000000000000000000000000000000000000000000' AND c03 = -128 AND c04 = 0 AND c05 = 000 AND c06 = false AND c07 = -32768 AND c08 = 0 AND c09 = 00000 AND c10 = -8388608 AND c11 = 0 AND c12 = 00000000 AND c13 = -2147483648 AND c14 = 0 AND c15 = 0000000000 AND c16 = -9223372036854775808 AND c17 = 0 AND c18 = 00000000000000000000 AND c19 < -3.402823465E+38 AND c20 < 1.175494352E-38 AND c21 = 000000000000 AND c22 < -1.7976931348622E+308 AND c23 < 2.2250738585073E-308 AND c24 = 0000000000000000000000 AND c25 = -9999999999 AND c26 = 0 AND c27 = 0000000000 AND # c28 = '1000-01-01' AND c29 = '1000-01-01 00:00:00' AND c30 = '1970-01-02 00:00:01' AND c31 = '-838:59:59' AND c32 = '1901' AND # c33 = '' AND c34 = '' AND c35 = '' AND c36 = '' AND c37 = '' AND c38 = '' AND c39 = '' AND c40 = '' AND c41 = '' AND c42 = '' AND c43 = '' AND c44 = '' AND # c45 = '' AND c46 = '' AND c47 = '' AND c48 = '' AND c49 = '' AND c50 = '' AND c51 = '' AND c52 = '' AND c53 = '' AND c54 = '' AND c55 = '' AND c56 = '' AND # # this does not reproduce the inserted value: c57 = '' AND c58 = '' AND # this does not reproduce the inserted value: c59 = '' AND # this does not reproduce the inserted value: c60 = '' AND # c61 = '' AND c62 = '' AND c63 = '' AND c64 = '' AND # c65 = '' AND c66 = '' AND c67 = '' AND c68 = '' AND c69 = '' AND c70 = '' AND c71 = '' AND c72 = '' AND c73 = '' AND c74 = '' AND c75 = '' AND c76 = '' AND # c77 = 'a' AND c78 = '' AND # crn = 1; --echo # --echo # Update max values to min values. --echo # UPDATE t1 SET c01 = b'0', c02 = b'0000000000000000000000000000000000000000000000000000000000000000', c03 = -128, c04 = 0, c05 = 000, c06 = false, c07 = -32768, c08 = 0, c09 = 00000, c10 = -8388608, c11 = 0, c12 = 00000000, c13 = -2147483648, c14 = 0, c15 = 0000000000, c16 = -9223372036854775808, c17 = 0, c18 = 00000000000000000000, c19 = -3.402823466E+38, c20 = 1.175494351E-38, c21 = 000000000000, c22 = -1.7976931348623E+308, c23 = 2.2250738585072E-308, c24 = 0000000000000000000000, c25 = -9999999999, c26 = 0, c27 = 0000000000, # c28 = '1000-01-01', c29 = '1000-01-01 00:00:00', c30 = '1970-01-02 00:00:01', c31 = '-838:59:59', c32 = '1901', # c33 = '', c34 = '', c35 = '', c36 = '', c37 = '', c38 = '', c39 = '', c40 = '', c41 = '', c42 = '', c43 = '', c44 = '', # c45 = '', c46 = '', c47 = '', c48 = '', c49 = '', c50 = '', c51 = '', c52 = '', c53 = '', c54 = '', c55 = '', c56 = '', # c57 = '', c58 = '', c59 = '', c60 = '', # c61 = '', c62 = '', c63 = '', c64 = '', # c65 = '', c66 = '', c67 = '', c68 = '', c69 = '', c70 = '', c71 = '', c72 = '', c73 = '', c74 = '', c75 = '', c76 = '', # c77 = 'a', c78 = '', # crn = crn # WHERE # c01 = b'1' AND # the below does not reproduce the inserted value: #c02 = b'1111111111111111111111111111111111111111111111111111111111111111' AND c03 = 127 AND c04 = 255 AND c05 = 255 AND c06 = true AND c07 = 32767 AND c08 = 65535 AND c09 = 65535 AND c10 = 8388607 AND c11 = 16777215 AND c12 = 16777215 AND c13 = 2147483647 AND c14 = 4294967295 AND c15 = 4294967295 AND c16 = 9223372036854775807 AND c17 = 18446744073709551615 AND c18 = 18446744073709551615 AND c19 > 3.402823465E+38 AND c20 > 3.402823465E+38 AND c21 > 3.402823465E+38 AND c22 > 1.7976931348622E+308 AND c23 > 1.7976931348622E+308 AND c24 > 1.7976931348622E+308 AND c25 = 9999999999 AND c26 = 9999999999 AND c27 = 9999999999 AND # c28 = '9999-12-31' AND c29 = '9999-12-31 23:59:59' AND c30 = '2038-01-08 03:14:07' AND c31 = '838:59:59' AND c32 = '2155' AND # c33 = x'ff' AND c34 = '' AND c35 = x'ff' AND c36 = REPEAT(x'ff',255) AND c37 = _utf8 x'efbfbf' AND c38 = '' AND c39 = _utf8 x'efbfbf' AND c40 = REPEAT(_utf8 x'efbfbf',255) AND c41 = _ucs2 x'ffff' AND c42 = '' AND c43 = _ucs2 x'ffff' AND c44 = REPEAT(_ucs2 x'ffff',255) AND # c45 = '' AND c46 = x'ff' AND c47 = REPEAT(x'ff',255) AND c48 = REPEAT(x'ff',261) AND c49 = '' AND c50 = _utf8 x'efbfbf' AND c51 = REPEAT(_utf8 x'efbfbf',255) AND c52 = REPEAT(_utf8 x'efbfbf',261) AND c53 = '' AND c54 = _ucs2 x'ffff' AND c55 = REPEAT(_ucs2 x'ffff',255) AND c56 = REPEAT(_ucs2 x'ffff',261) AND # c57 = x'ff' AND c58 = '' AND c59 = x'ff' AND c60 = REPEAT(x'ff',255) AND # c61 = '' AND c62 = x'ff' AND c63 = REPEAT(x'ff',255) AND c64 = REPEAT(x'ff',261) AND # c65 = 'tinyblob' AND c66 = 'tinytext' AND c67 = 'tinytext-ucs2' AND c68 = 'blob' AND c69 = 'text' AND c70 = 'text-ucs2' AND c71 = 'mediumblob' AND c72 = 'mediumtext' AND c73 = 'mediumtext-ucs2' AND c74 = 'longblob' AND c75 = 'longtext' AND c76 = 'longtext-ucs2' AND # c77 = 'c' AND c78 = 'a,b,c' AND # crn = 2; --echo # --echo # Update NULL values to arbitrary values. --echo # UPDATE t1 SET c01 = b'1', c02 = b'1111111111111111111111111111111111111111111111111111111111111111', c03 = 127, c04 = 0, c05 = 001, c06 = true, c07 = 32767, c08 = 0, c09 = 00001, c10 = 8388607, c11 = 0, c12 = 00000001, c13 = 2147483647, c14 = 0, c15 = 0000000001, c16 = 9223372036854775807, c17 = 0, c18 = 00000000000000000001, c19 = -1.175494351E-38, c20 = 1.175494351E-38, c21 = 000000000000001, c22 = -2.2250738585072E-308, c23 = 2.2250738585072E-308, c24 = 00000000000000000000001, c25 = -9999999999, c26 = 9999999999, c27 = 0000000001, # c28 = '2008-08-04', c29 = '2008-08-04 16:18:06', c30 = '2008-08-04 16:18:24', c31 = '16:18:47', c32 = '2008', # c33 = 'a', c34 = '', c35 = 'e', c36 = REPEAT('i',255), c37 = _utf8 x'c3a4', c38 = '', c39 = _utf8 x'c3b6', c40 = REPEAT(_utf8 x'c3bc',255), c41 = _ucs2 x'00e4', c42 = '', c43 = _ucs2 x'00f6', c44 = REPEAT(_ucs2 x'00fc',255), # c45 = '', c46 = 'a', c47 = REPEAT('e',255), c48 = REPEAT('i',261), c49 = '', c50 = _utf8 x'c3a4', c51 = REPEAT(_utf8 x'c3b6',255), c52 = REPEAT(_utf8 x'c3bc',261), c53 = '', c54 = _ucs2 x'00e4', c55 = REPEAT(_ucs2 x'00f6',255), c56 = REPEAT(_ucs2 x'00fc',261), # c57 = '0', c58 = '', c59 = '1', c60 = REPEAT('1',255), # c61 = '', c62 = 'b', c63 = REPEAT('c',255), c64 = REPEAT('\'',261), # c65 = 'tinyblob', c66 = 'tinytext', c67 = 'tinytext-ucs2', c68 = 'blob', c69 = 'text', c70 = 'text-ucs2', c71 = 'mediumblob', c72 = 'mediumtext', c73 = 'mediumtext-ucs2', c74 = 'longblob', c75 = 'longtext', c76 = 'longtext-ucs2', # c77 = 'b', c78 = 'b,c', # crn = crn # WHERE # c01 IS NULL AND c02 IS NULL AND c03 IS NULL AND c04 IS NULL AND c05 IS NULL AND c06 IS NULL AND c07 IS NULL AND c08 IS NULL AND c09 IS NULL AND c10 IS NULL AND c11 IS NULL AND c12 IS NULL AND c13 IS NULL AND c14 IS NULL AND c15 IS NULL AND c16 IS NULL AND c17 IS NULL AND c18 IS NULL AND c19 IS NULL AND c20 IS NULL AND c21 IS NULL AND c22 IS NULL AND c23 IS NULL AND c24 IS NULL AND c25 IS NULL AND c26 IS NULL AND c27 IS NULL AND # c28 IS NULL AND c29 IS NULL AND # this got a timestamp instead of NULL: c30 IS NULL AND c31 IS NULL AND c32 IS NULL AND # c33 IS NULL AND c34 IS NULL AND c35 IS NULL AND c36 IS NULL AND c37 IS NULL AND c38 IS NULL AND c39 IS NULL AND c40 IS NULL AND c41 IS NULL AND c42 IS NULL AND c43 IS NULL AND c44 IS NULL AND # c45 IS NULL AND c46 IS NULL AND c47 IS NULL AND c48 IS NULL AND c49 IS NULL AND c50 IS NULL AND c51 IS NULL AND c52 IS NULL AND c53 IS NULL AND c54 IS NULL AND c55 IS NULL AND c56 IS NULL AND # c57 IS NULL AND c58 IS NULL AND c59 IS NULL AND c60 IS NULL AND # c61 IS NULL AND c62 IS NULL AND c63 IS NULL AND c64 IS NULL AND # c65 IS NULL AND c66 IS NULL AND c67 IS NULL AND c68 IS NULL AND c69 IS NULL AND c70 IS NULL AND c71 IS NULL AND c72 IS NULL AND c73 IS NULL AND c74 IS NULL AND c75 IS NULL AND c76 IS NULL AND # c77 IS NULL AND c78 IS NULL AND # crn = 3; --echo # --echo # Update arbitrary values to NULL values. --echo # UPDATE t1 SET c01 = NULL, c02 = NULL, c03 = NULL, c04 = NULL, c05 = NULL, c06 = NULL, c07 = NULL, c08 = NULL, c09 = NULL, c10 = NULL, c11 = NULL, c12 = NULL, c13 = NULL, c14 = NULL, c15 = NULL, c16 = NULL, c17 = NULL, c18 = NULL, c19 = NULL, c20 = NULL, c21 = NULL, c22 = NULL, c23 = NULL, c24 = NULL, c25 = NULL, c26 = NULL, c27 = NULL, # c28 = NULL, c29 = NULL, c30 = NULL, c31 = NULL, c32 = NULL, # c33 = NULL, c34 = NULL, c35 = NULL, c36 = NULL, c37 = NULL, c38 = NULL, c39 = NULL, c40 = NULL, c41 = NULL, c42 = NULL, c43 = NULL, c44 = NULL, # c45 = NULL, c46 = NULL, c47 = NULL, c48 = NULL, c49 = NULL, c50 = NULL, c51 = NULL, c52 = NULL, c53 = NULL, c54 = NULL, c55 = NULL, c56 = NULL, # c57 = NULL, c58 = NULL, c59 = NULL, c60 = NULL, # c61 = NULL, c62 = NULL, c63 = NULL, c64 = NULL, # c65 = NULL, c66 = NULL, c67 = NULL, c68 = NULL, c69 = NULL, c70 = NULL, c71 = NULL, c72 = NULL, c73 = NULL, c74 = NULL, c75 = NULL, c76 = NULL, # c77 = NULL, c78 = NULL, # crn = crn # WHERE # c01 = b'1' AND # the below does not reproduce the inserted value: #c02 = b'1111111111111111111111111111111111111111111111111111111111111111' AND c03 = 127 AND c04 = 0 AND c05 = 001 AND c06 = true AND c07 = 32767 AND c08 = 0 AND c09 = 00001 AND c10 = 8388607 AND c11 = 0 AND c12 = 00000001 AND c13 = 2147483647 AND c14 = 0 AND c15 = 0000000001 AND c16 = 9223372036854775807 AND c17 = 0 AND c18 = 00000000000000000001 AND c19 > -1.175494352E-38 AND c20 < 1.175494352E-38 AND c21 = 000000000000001 AND c22 > -2.2250738585073E-308 AND c23 < 2.2250738585073E-308 AND c24 = 00000000000000000000001 AND c25 = -9999999999 AND c26 = 9999999999 AND c27 = 0000000001 AND # c28 = '2008-08-04' AND c29 = '2008-08-04 16:18:06' AND c30 = '2008-08-04 16:18:24' AND c31 = '16:18:47' AND c32 = '2008' AND # c33 = 'a' AND c34 = '' AND c35 = 'e' AND c36 = REPEAT('i',255) AND c37 = _utf8 x'c3a4' AND c38 = '' AND c39 = _utf8 x'c3b6' AND c40 = REPEAT(_utf8 x'c3bc',255) AND c41 = _ucs2 x'00e4' AND c42 = '' AND c43 = _ucs2 x'00f6' AND c44 = REPEAT(_ucs2 x'00fc',255) AND # c45 = '' AND c46 = 'a' AND c47 = REPEAT('e',255) AND c48 = REPEAT('i',261) AND c49 = '' AND c50 = _utf8 x'c3a4' AND c51 = REPEAT(_utf8 x'c3b6',255) AND c52 = REPEAT(_utf8 x'c3bc',261) AND c53 = '' AND c54 = _ucs2 x'00e4' AND c55 = REPEAT(_ucs2 x'00f6',255) AND c56 = REPEAT(_ucs2 x'00fc',261) AND # c57 = '0' AND c58 = '' AND c59 = '1' AND c60 = REPEAT('1',255) AND # c61 = '' AND c62 = 'b' AND c63 = REPEAT('c',255) AND c64 = REPEAT('\'',261) AND # c65 = 'tinyblob' AND c66 = 'tinytext' AND c67 = 'tinytext-ucs2' AND c68 = 'blob' AND c69 = 'text' AND c70 = 'text-ucs2' AND c71 = 'mediumblob' AND c72 = 'mediumtext' AND c73 = 'mediumtext-ucs2' AND c74 = 'longblob' AND c75 = 'longtext' AND c76 = 'longtext-ucs2' AND # c77 = 'b' AND c78 = 'b,c' AND # crn = 4; --echo # --echo # Show what we have in the table. --echo # Do not display bit type output. It's binary and confuses diff. --echo # Also BINARY with nul-bytes should be avoided. --echo # --replace_column 1 # 2 # 57 # 58 # 59 # 60 # query_vertical SELECT * FROM t1; --echo # --echo # Delete the row that has max values now. --echo # DELETE FROM t1 WHERE # c01 = b'1' AND # the below does not reproduce the inserted value: #c02 = b'1111111111111111111111111111111111111111111111111111111111111111' AND c03 = 127 AND c04 = 255 AND c05 = 255 AND c06 = true AND c07 = 32767 AND c08 = 65535 AND c09 = 65535 AND c10 = 8388607 AND c11 = 16777215 AND c12 = 16777215 AND c13 = 2147483647 AND c14 = 4294967295 AND c15 = 4294967295 AND c16 = 9223372036854775807 AND c17 = 18446744073709551615 AND c18 = 18446744073709551615 AND c19 > 3.402823465E+38 AND c20 > 3.402823465E+38 AND c21 > 3.402823465E+38 AND c22 > 1.7976931348622E+308 AND c23 > 1.7976931348622E+308 AND c24 > 1.7976931348622E+308 AND c25 = 9999999999 AND c26 = 9999999999 AND c27 = 9999999999 AND # c28 = '9999-12-31' AND c29 = '9999-12-31 23:59:59' AND c30 = '2038-01-08 03:14:07' AND c31 = '838:59:59' AND c32 = '2155' AND # c33 = x'ff' AND c34 = '' AND c35 = x'ff' AND c36 = REPEAT(x'ff',255) AND c37 = _utf8 x'efbfbf' AND c38 = '' AND c39 = _utf8 x'efbfbf' AND c40 = REPEAT(_utf8 x'efbfbf',255) AND c41 = _ucs2 x'ffff' AND c42 = '' AND c43 = _ucs2 x'ffff' AND c44 = REPEAT(_ucs2 x'ffff',255) AND # c45 = '' AND c46 = x'ff' AND c47 = REPEAT(x'ff',255) AND c48 = REPEAT(x'ff',261) AND c49 = '' AND c50 = _utf8 x'efbfbf' AND c51 = REPEAT(_utf8 x'efbfbf',255) AND c52 = REPEAT(_utf8 x'efbfbf',261) AND c53 = '' AND c54 = _ucs2 x'ffff' AND c55 = REPEAT(_ucs2 x'ffff',255) AND c56 = REPEAT(_ucs2 x'ffff',261) AND # c57 = x'ff' AND c58 = '' AND c59 = x'ff' AND c60 = REPEAT(x'ff',255) AND # c61 = '' AND c62 = x'ff' AND c63 = REPEAT(x'ff',255) AND c64 = REPEAT(x'ff',261) AND # c65 = 'tinyblob' AND c66 = 'tinytext' AND c67 = 'tinytext-ucs2' AND c68 = 'blob' AND c69 = 'text' AND c70 = 'text-ucs2' AND c71 = 'mediumblob' AND c72 = 'mediumtext' AND c73 = 'mediumtext-ucs2' AND c74 = 'longblob' AND c75 = 'longtext' AND c76 = 'longtext-ucs2' AND # c77 = 'c' AND c78 = 'a,b,c' AND # crn = 1; --echo # --echo # Delete the row that has min values now. --echo # DELETE FROM t1 WHERE # c01 = b'0' AND c02 = b'0000000000000000000000000000000000000000000000000000000000000000' AND c03 = -128 AND c04 = 0 AND c05 = 000 AND c06 = false AND c07 = -32768 AND c08 = 0 AND c09 = 00000 AND c10 = -8388608 AND c11 = 0 AND c12 = 00000000 AND c13 = -2147483648 AND c14 = 0 AND c15 = 0000000000 AND c16 = -9223372036854775808 AND c17 = 0 AND c18 = 00000000000000000000 AND c19 < -3.402823465E+38 AND c20 < 1.175494352E-38 AND c21 = 000000000000 AND c22 < -1.7976931348622E+308 AND c23 < 2.2250738585073E-308 AND c24 = 0000000000000000000000 AND c25 = -9999999999 AND c26 = 0 AND c27 = 0000000000 AND # c28 = '1000-01-01' AND c29 = '1000-01-01 00:00:00' AND c30 = '1970-01-02 00:00:01' AND c31 = '-838:59:59' AND c32 = '1901' AND # c33 = '' AND c34 = '' AND c35 = '' AND c36 = '' AND c37 = '' AND c38 = '' AND c39 = '' AND c40 = '' AND c41 = '' AND c42 = '' AND c43 = '' AND c44 = '' AND # c45 = '' AND c46 = '' AND c47 = '' AND c48 = '' AND c49 = '' AND c50 = '' AND c51 = '' AND c52 = '' AND c53 = '' AND c54 = '' AND c55 = '' AND c56 = '' AND # # this does not reproduce the inserted value: c57 = '' AND c58 = '' AND # this does not reproduce the inserted value: c59 = '' AND # this does not reproduce the inserted value: c60 = '' AND # c61 = '' AND c62 = '' AND c63 = '' AND c64 = '' AND # c65 = '' AND c66 = '' AND c67 = '' AND c68 = '' AND c69 = '' AND c70 = '' AND c71 = '' AND c72 = '' AND c73 = '' AND c74 = '' AND c75 = '' AND c76 = '' AND # c77 = 'a' AND c78 = '' AND # crn = 2; --echo # --echo # Delete the row that has arbitrary values now. --echo # DELETE FROM t1 WHERE # c01 = b'1' AND # the below does not reproduce the inserted value: #c02 = b'1111111111111111111111111111111111111111111111111111111111111111' AND c03 = 127 AND c04 = 0 AND c05 = 001 AND c06 = true AND c07 = 32767 AND c08 = 0 AND c09 = 00001 AND c10 = 8388607 AND c11 = 0 AND c12 = 00000001 AND c13 = 2147483647 AND c14 = 0 AND c15 = 0000000001 AND c16 = 9223372036854775807 AND c17 = 0 AND c18 = 00000000000000000001 AND c19 > -1.175494352E-38 AND c20 < 1.175494352E-38 AND c21 = 000000000000001 AND c22 > -2.2250738585073E-308 AND c23 < 2.2250738585073E-308 AND c24 = 00000000000000000000001 AND c25 = -9999999999 AND c26 = 9999999999 AND c27 = 0000000001 AND # c28 = '2008-08-04' AND c29 = '2008-08-04 16:18:06' AND c30 = '2008-08-04 16:18:24' AND c31 = '16:18:47' AND c32 = '2008' AND # c33 = 'a' AND c34 = '' AND c35 = 'e' AND c36 = REPEAT('i',255) AND c37 = _utf8 x'c3a4' AND c38 = '' AND c39 = _utf8 x'c3b6' AND c40 = REPEAT(_utf8 x'c3bc',255) AND c41 = _ucs2 x'00e4' AND c42 = '' AND c43 = _ucs2 x'00f6' AND c44 = REPEAT(_ucs2 x'00fc',255) AND # c45 = '' AND c46 = 'a' AND c47 = REPEAT('e',255) AND c48 = REPEAT('i',261) AND c49 = '' AND c50 = _utf8 x'c3a4' AND c51 = REPEAT(_utf8 x'c3b6',255) AND c52 = REPEAT(_utf8 x'c3bc',261) AND c53 = '' AND c54 = _ucs2 x'00e4' AND c55 = REPEAT(_ucs2 x'00f6',255) AND c56 = REPEAT(_ucs2 x'00fc',261) AND # c57 = '0' AND c58 = '' AND c59 = '1' AND c60 = REPEAT('1',255) AND # c61 = '' AND c62 = 'b' AND c63 = REPEAT('c',255) AND c64 = REPEAT('\'',261) AND # c65 = 'tinyblob' AND c66 = 'tinytext' AND c67 = 'tinytext-ucs2' AND c68 = 'blob' AND c69 = 'text' AND c70 = 'text-ucs2' AND c71 = 'mediumblob' AND c72 = 'mediumtext' AND c73 = 'mediumtext-ucs2' AND c74 = 'longblob' AND c75 = 'longtext' AND c76 = 'longtext-ucs2' AND # c77 = 'b' AND c78 = 'b,c' AND # crn = 3; --echo # --echo # Delete the row that has NULL values now. --echo # DELETE FROM t1 WHERE # c01 IS NULL AND c02 IS NULL AND c03 IS NULL AND c04 IS NULL AND c05 IS NULL AND c06 IS NULL AND c07 IS NULL AND c08 IS NULL AND c09 IS NULL AND c10 IS NULL AND c11 IS NULL AND c12 IS NULL AND c13 IS NULL AND c14 IS NULL AND c15 IS NULL AND c16 IS NULL AND c17 IS NULL AND c18 IS NULL AND c19 IS NULL AND c20 IS NULL AND c21 IS NULL AND c22 IS NULL AND c23 IS NULL AND c24 IS NULL AND c25 IS NULL AND c26 IS NULL AND c27 IS NULL AND # c28 IS NULL AND c29 IS NULL AND # this got a timestamp instead of NULL: c30 IS NULL AND c31 IS NULL AND c32 IS NULL AND # c33 IS NULL AND c34 IS NULL AND c35 IS NULL AND c36 IS NULL AND c37 IS NULL AND c38 IS NULL AND c39 IS NULL AND c40 IS NULL AND c41 IS NULL AND c42 IS NULL AND c43 IS NULL AND c44 IS NULL AND # c45 IS NULL AND c46 IS NULL AND c47 IS NULL AND c48 IS NULL AND c49 IS NULL AND c50 IS NULL AND c51 IS NULL AND c52 IS NULL AND c53 IS NULL AND c54 IS NULL AND c55 IS NULL AND c56 IS NULL AND # c57 IS NULL AND c58 IS NULL AND c59 IS NULL AND c60 IS NULL AND # c61 IS NULL AND c62 IS NULL AND c63 IS NULL AND c64 IS NULL AND # c65 IS NULL AND c66 IS NULL AND c67 IS NULL AND c68 IS NULL AND c69 IS NULL AND c70 IS NULL AND c71 IS NULL AND c72 IS NULL AND c73 IS NULL AND c74 IS NULL AND c75 IS NULL AND c76 IS NULL AND # c77 IS NULL AND c78 IS NULL AND # crn = 4; --echo # --echo # Show what we have in the table. Should be empty now. --echo # query_vertical SELECT * FROM t1; --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 # 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 = #/ /thread_id=[0-9]*/thread_id=#/ /table id [0-9]*/table id #/ /mapped to number [0-9]*/mapped to number #/ /server v [^ ]*/server v #.##.##/ /(@[0-9]*=[0-9-]*[.][0-9]{1,3})[0-9e+-]*[^ ]*[ ]*(.*(FLOAT|DOUBLE).*[*].)/\1... \2/ /CRC32 0x[0-9a-f]*/CRC32 XXX/ /collation_server=[0-9]+/collation_server=X/ /xid=\d*/xid=/ --exec $MYSQL_BINLOG --base64-output=decode-rows -v -v $MYSQLD_DATADIR/master-bin.000001 --echo # --echo # Cleanup. --echo # DROP TABLE t1; --echo # --echo # ========================================= --echo # Test #2 - Multi-row insert/update/delete. --echo # ========================================= --echo # --echo # Delete all existing binary logs. --echo # RESET MASTER; --echo # --echo # Create a test table with selected data types. --echo # eval CREATE TABLE t1 ( c28 DATE, c47 VARCHAR(24), crn INT -- row number ) ENGINE=$engine_type DEFAULT CHARSET latin1; --echo # --echo # Show how much rows are affected by each statement. --echo # --enable_info --echo # --echo # Multi-row insert. --echo # INSERT INTO t1 VALUES ('2008-08-01','VARCHAR-01',1), ('2008-08-02','VARCHAR-02',2), ('2008-08-03','VARCHAR-03',3), ('2008-08-04','VARCHAR-04',4), ('2008-08-05','VARCHAR-05',5), ('2008-08-06','VARCHAR-06',6), ('2008-08-07','VARCHAR-07',7), ('2008-08-08','VARCHAR-08',8), ('2008-08-09','VARCHAR-09',9); --echo # --echo # Multi-row update. --echo # UPDATE t1 SET c28 = ADDDATE(c28,10) WHERE crn < 8; --echo # --echo # Show what we have in the table. --echo # SELECT * FROM t1; --echo # --echo # Multi-row delete. --echo # DELETE FROM t1 WHERE crn < 8; --echo # --echo # Show what we have in the table. --echo # SELECT * FROM t1; --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 # 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 = #/ /thread_id=[0-9]*/thread_id=#/ /table id [0-9]*/table id #/ /mapped to number [0-9]*/mapped to number #/ /server v [^ ]*/server v #.##.##/ /(@[0-9]*=[0-9-]*[.][0-9]{1,3})[0-9e+-]*[^ ]*[ ]*(.*(FLOAT|DOUBLE).*[*].)/\1... \2/ /CRC32 0x[0-9a-f]*/CRC32 XXX/ /collation_server=[0-9]+/collation_server=X/ /xid=\d*/xid=/ --exec $MYSQL_BINLOG --base64-output=decode-rows -v -v $MYSQLD_DATADIR/master-bin.000001 --echo # --echo # Cleanup. --echo # DROP TABLE t1; --echo # --echo # ==================================== --echo # Test #3 - Multi-table update/delete. --echo # ==================================== --echo # --echo # Delete all existing binary logs. --echo # RESET MASTER; --echo # --echo # Create test tables with selected data types. --echo # eval CREATE TABLE t1 ( c_1_1 DATE, c_1_2 VARCHAR(255), c_1_n INT -- row number ) ENGINE=$engine_type DEFAULT CHARSET latin1; # eval CREATE TABLE t2 ( c_2_1 DATE, c_2_2 VARCHAR(255), c_2_n INT -- row number ) ENGINE=$engine_type DEFAULT CHARSET latin1; # eval CREATE TABLE t3 ( c_3_1 DATE, c_3_2 VARCHAR(255), c_3_n INT -- row number ) ENGINE=$engine_type DEFAULT CHARSET latin1; --echo # --echo # Show how much rows are affected by each statement. --echo # --enable_info --echo # --echo # Insert data. --echo # INSERT INTO t1 VALUES ('2008-01-01','VARCHAR-01-01',11), ('2008-01-02','VARCHAR-01-02',2), ('2008-01-03','VARCHAR-01-03',3), ('2008-01-04','VARCHAR-01-04',4), ('2008-01-05','VARCHAR-01-05',5), ('2008-01-06','VARCHAR-01-06',6), ('2008-01-07','VARCHAR-01-07',7), ('2008-01-08','VARCHAR-01-08',18), ('2008-01-09','VARCHAR-01-09',19); # INSERT INTO t2 VALUES ('2008-02-01','VARCHAR-02-01',21), ('2008-02-02','VARCHAR-02-02',2), ('2008-02-03','VARCHAR-02-03',3), ('2008-02-04','VARCHAR-02-04',4), ('2008-02-05','VARCHAR-02-05',5), ('2008-02-06','VARCHAR-02-06',6), ('2008-02-07','VARCHAR-02-07',7), ('2008-02-08','VARCHAR-02-08',28), ('2008-02-09','VARCHAR-02-09',29); # INSERT INTO t3 VALUES ('2008-03-01','VARCHAR-03-01',31), ('2008-03-02','VARCHAR-03-02',2), ('2008-03-03','VARCHAR-03-03',3), ('2008-03-04','VARCHAR-03-04',4), ('2008-03-05','VARCHAR-03-05',5), ('2008-03-06','VARCHAR-03-06',6), ('2008-03-07','VARCHAR-03-07',7), ('2008-03-08','VARCHAR-03-08',38), ('2008-03-09','VARCHAR-03-09',39); --echo # --echo # Multi-table update. --echo # UPDATE t1,t2,t3 SET c_1_1 = ADDDATE(c_1_1,INTERVAL 10 YEAR), c_2_1 = ADDDATE(c_2_1,INTERVAL 20 YEAR), c_3_1 = ADDDATE(c_3_1,INTERVAL 30 YEAR) WHERE c_1_n = c_2_n AND c_2_n = c_3_n; --echo # --echo # Show what we have in the tables. --echo # SELECT * FROM t1; SELECT * FROM t2; SELECT * FROM t3; --echo # --echo # Multi-table delete. --echo # DELETE FROM t1,t2,t3 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE c_1_n = c_2_n AND c_2_n = c_3_n; --echo # --echo # Show what we have in the tables. --echo # SELECT * FROM t1; SELECT * FROM t2; SELECT * FROM t3; --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 # 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 = #/ /thread_id=[0-9]*/thread_id=#/ /table id [0-9]*/table id #/ /mapped to number [0-9]*/mapped to number #/ /server v [^ ]*/server v #.##.##/ /(@[0-9]*=[0-9-]*[.][0-9]{1,3})[0-9e+-]*[^ ]*[ ]*(.*(FLOAT|DOUBLE).*[*].)/\1... \2/ /CRC32 0x[0-9a-f]*/CRC32 XXX/ /collation_server=[0-9]+/collation_server=X/ /xid=\d*/xid=/ --exec $MYSQL_BINLOG --base64-output=decode-rows -v -v $MYSQLD_DATADIR/master-bin.000001 --echo # --echo # Cleanup. --echo # DROP TABLE t1, t2, t3; --echo # --echo # =========================== --echo # Test #4 - LOAD DATA INFILE. --echo # =========================== --echo # --echo # Delete all existing binary logs. --echo # RESET MASTER; --echo # --echo # Create a test table with selected data types. --echo # eval CREATE TABLE t1 ( c1 INT DEFAULT 100, c2 INT, c3 VARCHAR(60) ) ENGINE=$engine_type DEFAULT CHARSET latin1; --echo # --echo # Show how much rows are affected by each statement. --echo # --enable_info --echo # --echo # Load data. --echo # LOAD DATA INFILE '../../std_data/loaddata5.dat' INTO TABLE t1 FIELDS TERMINATED BY '' ENCLOSED BY '' (c1,c2) SET c3 = 'Wow'; --echo # --echo # Show what we have in the table. --echo # SELECT * FROM t1; --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 # 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 = #/ /thread_id=[0-9]*/thread_id=#/ /table id [0-9]*/table id #/ /mapped to number [0-9]*/mapped to number #/ /server v [^ ]*/server v #.##.##/ /(@[0-9]*=[0-9-]*[.][0-9]{1,3})[0-9e+-]*[^ ]*[ ]*(.*(FLOAT|DOUBLE).*[*].)/\1... \2/ /CRC32 0x[0-9a-f]*/CRC32 XXX/ /collation_server=[0-9]+/collation_server=X/ /xid=\d*/xid=/ --exec $MYSQL_BINLOG --base64-output=decode-rows -v -v $MYSQLD_DATADIR/master-bin.000001 --echo # --echo # Cleanup. --echo # DROP TABLE t1; --echo # --echo # Beginning of 10.2 test --echo # --echo # MDEV-25460: Assertion `!is_set() || (m_status == DA_OK_BULK && --echo # is_bulk_op())' failed in Diagnostics_area::set_ok_status in my_ok --echo # from mysql_sql_stmt_prepare --echo # CREATE TEMPORARY TABLE a (c INT) ENGINE=InnoDB; CREATE TABLE b (c INT) ENGINE=InnoDB; --error ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR PREPARE s FROM 'SET STATEMENT binlog_format=ROW FOR SELECT * FROM b'; DROP TABLE b; DROP TEMPORARY TABLE a; CREATE TEMPORARY TABLE t (c INT); --error ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR PREPARE s FROM 'SET STATEMENT binlog_format=ROW FOR SELECT 1'; DROP TEMPORARY TABLE t; --echo # --echo # End of 10.2 test --echo #