1################################################################################
2# WL#4618 RBR: extended table metadata in the binary log
3#
4# Below metadata is logged into Table_map_log_event
5# - signedness of numeric columns
6# - charsets of character columns
7# - column names
8# - set/enum character sets and string values
9# - primary key
10#
11# The first two are always logged. The others are controlled by system
12# variable --binlog-row-metadata
13#
14# The test will verify if the metadata can be logged and printed by mysqlbinlog
15# correctly.
16# mysqlbinlog --print-table-metadata will print the extra metadata
17################################################################################
18--source include/have_debug.inc
19--source include/have_binlog_format_row.inc
20--source include/have_utf32.inc
21--let $MYSQLD_DATADIR= `select @@datadir`
22--let $binlog_file= $MYSQLD_DATADIR/master-bin.000001
23
24--echo #
25--echo # Verify that SET string values and character sets can be printed correctly
26--echo #
27
28SET NAMES utf8;
29CREATE TABLE t1(
30  c_set_1 SET("set1_v1_å", "set1_v2_ä", "set1_v3_ö"),
31  c_set_2 SET("set2_v1_å", "set2_v2_ä", "set2_v3_ö") CHARACTER SET utf32);
32
33SET GLOBAL binlog_row_metadata = MINIMAL;
34INSERT INTO t1 VALUES("set1_v1_å", "set2_v2_ä");
35--source include/print_optional_metadata.inc
36
37RESET MASTER;
38SET GLOBAL binlog_row_metadata = FULL;
39INSERT INTO t1 VALUES("set1_v1_å", "set2_v2_ä");
40--source include/print_optional_metadata.inc
41INSERT INTO t1 VALUES("set1_v3_ö", "set2_v3_ö");
42INSERT INTO t1 VALUES("set1_v1_å", "set2_v1_å");
43SELECT c_set_1, HEX(c_set_1) FROM t1;
44SELECT c_set_2, HEX(c_set_2) FROM t1;
45
46DROP TABLE t1;
47RESET MASTER;
48
49--echo #
50--echo # Verify that ENUM string values and character sets can be printed correctly
51--echo #
52
53CREATE TABLE t1(
54  c_enum_1 ENUM("enum1_v1_å", "enum1_v2_ä", "enum1_v3_ö"),
55  c_enum_2 ENUM("enum2_v1_å", "enum2_v2_ä", "enum2_v3_ö") CHARACTER SET utf32);
56
57SET GLOBAL binlog_row_metadata = MINIMAL;
58INSERT INTO t1 VALUES("enum1_v1_å", "enum2_v2_ä");
59--source include/print_optional_metadata.inc
60
61
62RESET MASTER;
63SET GLOBAL binlog_row_metadata = FULL;
64INSERT INTO t1 VALUES("enum1_v1_å", "enum2_v2_ä");
65--source include/print_optional_metadata.inc
66INSERT INTO t1 VALUES("enum1_v3_ö", "enum2_v3_ö");
67INSERT INTO t1 VALUES("enum1_v1_å", "enum2_v1_å");
68SELECT c_enum_1, HEX(c_enum_1) FROM t1;
69SELECT c_enum_2, HEX(c_enum_2) FROM t1;
70
71DROP TABLE t1;
72RESET MASTER;
73
74SET GLOBAL binlog_row_metadata = NO_LOG;
75