Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MDEV-25277: mysqlbinlog --verbose cannot read row events with compres…
…sed columns: Don't know how to handle column type: 140 Problem: ======= Mysqlbinlog cannot show the type of a compressed column when two levels of verbosity is provided. Solution: ======== Extend the log event printing logic to handle and tag compressed types. Behavioral Changes: ================== Old: When mysqlbinlog is called in verbose mode and the database uses compressed columns, an error is returned to the user. New: The output will append “ COMPRESSED” on the type of compressed columns Reviewed By =========== Andrei Elkin <andrei.elkin@mariadb.com>
- Loading branch information
Showing
3 changed files
with
97 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| CREATE TABLE t1 (a TEXT, ac TEXT COMPRESSED, b TINYTEXT, bc TINYTEXT COMPRESSED, c MEDIUMTEXT, cc MEDIUMTEXT COMPRESSED, d LONGTEXT, dc LONGTEXT COMPRESSED, e VARCHAR(10), ec VARCHAR(10) COMPRESSED); | ||
| # Isolate row event into its own binary log | ||
| FLUSH BINARY LOGS; | ||
| INSERT INTO t1 VALUES ('mya', 'myac', 'myb', 'mybc', 'myc', 'mycc', 'myd', 'mydc', 'mye', 'myec'); | ||
| FLUSH BINARY LOGS; | ||
| # MYSQLBINLOG --base64-output=decode-rows -vv datadir/binlog_file --result-file=result_binlog | ||
| include/assert_grep.inc [Ensure compressed TEXT fields are annotated correctly] | ||
| include/assert_grep.inc [Ensure compressed TINYTEXT fields are annotated correctly] | ||
| include/assert_grep.inc [Ensure compressed MEDIUMTEXT fields are annotated correctly] | ||
| include/assert_grep.inc [Ensure compressed LONGTEXT fields are annotated correctly] | ||
| include/assert_grep.inc [Ensure compressed VARSTRING fields are annotated correctly] | ||
| include/assert_grep.inc [Ensure COMPRESSED only shows up for corresponding fields] | ||
| include/assert_grep.inc [Ensure non-compressed TEXT fields are annotated correctly] | ||
| include/assert_grep.inc [Ensure non-compressed VARSTRING fields are annotated correctly] | ||
| DROP TABLE t1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| # | ||
| # Purpose: | ||
| # This test validates that mysqlbinlog is able to annotate compressed column | ||
| # types with two levels of verbosity. | ||
| # | ||
| # Methodology: | ||
| # Validate that the output from mysqlbinlog -vv after creating and inserting | ||
| # into a table with compressed and uncompressed fields correctly annotates | ||
| # which columns are compressed | ||
| # | ||
| # References: | ||
| # MDEV-25277: mysqlbinlog --verbose cannot read row events with compressed | ||
| # columns: Don't know how to handle column type: 140 | ||
| # | ||
| --source include/have_binlog_format_row.inc | ||
|
|
||
| CREATE TABLE t1 (a TEXT, ac TEXT COMPRESSED, b TINYTEXT, bc TINYTEXT COMPRESSED, c MEDIUMTEXT, cc MEDIUMTEXT COMPRESSED, d LONGTEXT, dc LONGTEXT COMPRESSED, e VARCHAR(10), ec VARCHAR(10) COMPRESSED); | ||
|
|
||
| --echo # Isolate row event into its own binary log | ||
| FLUSH BINARY LOGS; | ||
| INSERT INTO t1 VALUES ('mya', 'myac', 'myb', 'mybc', 'myc', 'mycc', 'myd', 'mydc', 'mye', 'myec'); | ||
| FLUSH BINARY LOGS; | ||
|
|
||
| --let $binlog_file= query_get_value(SHOW BINARY LOGS, Log_name, 2) | ||
| --let $datadir= `SELECT @@datadir` | ||
| --let $result_binlog= $MYSQLTEST_VARDIR/tmp/$binlog_file | ||
|
|
||
| --echo # MYSQLBINLOG --base64-output=decode-rows -vv datadir/binlog_file --result-file=result_binlog | ||
| --exec $MYSQL_BINLOG --base64-output=decode-rows -vv $datadir/$binlog_file --result-file=$result_binlog | ||
|
|
||
| --let $assert_file= $result_binlog | ||
| --let $assert_count= 1 | ||
|
|
||
| --let $assert_text= Ensure compressed TEXT fields are annotated correctly | ||
| --let $assert_select=\WTEXT COMPRESSED | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure compressed TINYTEXT fields are annotated correctly | ||
| --let $assert_select=\WTINYTEXT COMPRESSED | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure compressed MEDIUMTEXT fields are annotated correctly | ||
| --let $assert_select=\WMEDIUMTEXT COMPRESSED | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure compressed LONGTEXT fields are annotated correctly | ||
| --let $assert_select=\WLONGTEXT COMPRESSED | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure compressed VARSTRING fields are annotated correctly | ||
| --let $assert_select=\WVARSTRING\(\d+\) COMPRESSED | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure COMPRESSED only shows up for corresponding fields | ||
| --let $assert_count= 5 | ||
| --let $assert_select= COMPRESSED | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure non-compressed TEXT fields are annotated correctly | ||
| --let $assert_count= 8 | ||
| --let $assert_select=/*.*TEXT | ||
| --source include/assert_grep.inc | ||
|
|
||
| --let $assert_text= Ensure non-compressed VARSTRING fields are annotated correctly | ||
| --let $assert_count= 2 | ||
| --let $assert_select=/*.*VARSTRING | ||
| --source include/assert_grep.inc | ||
|
|
||
| # Cleanup | ||
| DROP TABLE t1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters