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
|
# ==== Purpose ====
#
# This test checks that mysqlbinlog reads and prints the correct numeric
# signedness metadata when using '--print-table-metadata'
# It also shows that the type YEAR is not shown as UNSIGNED
#
# ==== Requirements ====
#
# + TC1: Fields should be correctly marked as signed or unsigned.
#
# ==== Implementation ====
#
# 1. Create a table with a signed and unsigned column.
# Get the binlog in use and flush logs
# 2. Execute mysqlbinlog with '--print-table-metadata'
# Check column metadata correctly reports what columns are signed or not
# 3. Cleanup
#
# ==== References ====
#
# Bug#31956206: MYSQLBINLOG READS THE WRONG METADATA FOR NUMERIC FIELDS.
#
# This test checks table map events
-- source include/have_binlog_format_row.inc
--echo
--echo # 1.Create a table with a signed and unsigned column.
--echo # Get the binlog in use and flush logs
CREATE TABLE `t1` (
`col_key` CHAR(255) DEFAULT "",
`col_year_key` YEAR DEFAULT NULL,
`col_float_key` FLOAT UNSIGNED,
`col_bigint_key` BIGINT DEFAULT NULL,
PRIMARY KEY (`col_key`)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('key', '1985', 1.7, 23);
let $MYSQLD_DATADIR=`select @@datadir`;
let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
FLUSH LOGS;
--echo
--echo # 2. Execute mysqlbinlog with '--print-table-metadata'
--echo # Check column metadata correctly reports what columns are signed or not
--echo # YEAR is considered unsigned, but not shown as such
--exec $MYSQL_BINLOG --print-table-metadata $MYSQLD_DATADIR/$binlog_file > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_signed_metata.output
--let $assert_text= Check the YEAR metadata is marked signed and therefore, omitted info about signedness
--let $assert_file = $MYSQLTEST_VARDIR/tmp/mysqlbinlog_signed_metata.output
--let $assert_select = # YEAR,
--let $assert_count = 1
--source include/assert_grep.inc
--let $assert_text= Check that FLOAT metadata is marked as unsigned
--let $assert_file = $MYSQLTEST_VARDIR/tmp/mysqlbinlog_signed_metata.output
--let $assert_select = # FLOAT UNSIGNED,
--let $assert_count = 1
--source include/assert_grep.inc
--let $assert_text= Check that BIGINT metadata is marked signed and therefore, omitted info about signedness
--let $assert_file = $MYSQLTEST_VARDIR/tmp/mysqlbinlog_signed_metata.output
--let $assert_select = # BIGINT\)
--let $assert_count = 1
--source include/assert_grep.inc
--echo
--echo # 3. Cleanup
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_signed_metata.output
DROP TABLE t1;
RESET MASTER;
|