mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
6112a0f93d
(This commit is exclusively for 10.2 branch. Do not merge it to 10.3) In case of a pattern of non-STMT_END-marked Rows-log-event (A) followed by a STMT_END marked one (B) mysqlbinlog mixes up the base64 encoded rows events with their pseudo sql representation produced by the verbose option: BINLOG ' base64 encoded data for A ### verbose section for A base64 encoded data for B ### verbose section for B '/*!*/; In effect the produced BINLOG '...' query is not valid and is rejected with the error. Examples of this way malformed BINLOG could have been found in binlog_row_annotate.result that gets corrected with the patch. The issue is fixed with introduction an auxiliary IO_CACHE to hold on the verbose comments until the terminal STMT_END event is found. The new cache is emptied out after two pre-existing ones are done at that time. The correctly produced output now for the above case is as the following: BINLOG ' base64 encoded data for A base64 encoded data for B '/*!*/; ### verbose section for A ### verbose section for B Thanks to Alexey Midenkov for the problem recognition and attempt to tackle, and to Venkatesh Duggirala who produced a patch for the upstream whose idea is exploited here, as well as to MDEV-23077 reporter LukeXwang who also contributed a piece of a patch aiming at this issue. |
||
---|---|---|
.. | ||
binlog_base64_flag.result | ||
binlog_bug23533.result | ||
binlog_bug36391.result | ||
binlog_checkpoint.result | ||
binlog_checksum.result | ||
binlog_commit_wait.result | ||
binlog_database.result | ||
binlog_delete_and_flush_index.result | ||
binlog_dmls_on_tmp_tables_readonly.result | ||
binlog_drop_if_exists.result | ||
binlog_flush_binlogs_delete_domain.result | ||
binlog_format_switch_in_tmp_table.result | ||
binlog_grant.result | ||
binlog_gtid_delete_domain_debug.result | ||
binlog_implicit_commit.result | ||
binlog_incident.result | ||
binlog_index.result | ||
binlog_innodb.result | ||
binlog_innodb_row.result | ||
binlog_innodb_stm.result | ||
binlog_invalid_read_in_rotate.result | ||
binlog_ioerr.result | ||
binlog_killed.result | ||
binlog_killed_simulate.result | ||
binlog_max_binlog_stmt_cache_size.result | ||
binlog_max_extension.result | ||
binlog_mdev342.result | ||
binlog_mdev717.result | ||
binlog_mixed_cache_stat.result | ||
binlog_mixed_load_data.result | ||
binlog_mysqlbinlog-cp932.result | ||
binlog_mysqlbinlog2.result | ||
binlog_mysqlbinlog_base64.result | ||
binlog_mysqlbinlog_row.result | ||
binlog_mysqlbinlog_row_frag.result | ||
binlog_mysqlbinlog_row_innodb.result | ||
binlog_mysqlbinlog_row_myisam.result | ||
binlog_mysqlbinlog_row_trans.result | ||
binlog_mysqlbinlog_stop_never.result | ||
binlog_no_uniqfile_crash.result | ||
binlog_old_versions.result | ||
binlog_parallel_replication_marks_row.result | ||
binlog_parallel_replication_marks_stm_mix.result | ||
binlog_query_filter_rules.result | ||
binlog_row_annotate.result | ||
binlog_row_binlog.result | ||
binlog_row_cache_stat.result | ||
binlog_row_ctype_cp932.result | ||
binlog_row_ctype_ucs.result | ||
binlog_row_drop_tbl.result | ||
binlog_row_drop_tmp_tbl.result | ||
binlog_row_insert_select.result | ||
binlog_row_mix_innodb_myisam.result | ||
binlog_row_mysqlbinlog_db_filter.result | ||
binlog_row_mysqlbinlog_options.result | ||
binlog_row_mysqlbinlog_verbose.result | ||
binlog_server_id.result | ||
binlog_sf.result | ||
binlog_show_binlog_event_random_pos.result | ||
binlog_spurious_ddl_errors.result | ||
binlog_sql_mode.result | ||
binlog_start_comment.result | ||
binlog_statement_insert_delayed.result | ||
binlog_stm_binlog.result | ||
binlog_stm_blackhole.result | ||
binlog_stm_cache_stat.result | ||
binlog_stm_ctype_cp932.result | ||
binlog_stm_ctype_ucs.result | ||
binlog_stm_datetime_ranges_mdev15289.result | ||
binlog_stm_do_db.result | ||
binlog_stm_drop_tbl.result | ||
binlog_stm_drop_tmp_tbl.result | ||
binlog_stm_insert_select.result | ||
binlog_stm_mix_innodb_myisam.result | ||
binlog_stm_ps.result | ||
binlog_stm_row.result | ||
binlog_stm_unsafe_warning.result | ||
binlog_stm_user_variables.result | ||
binlog_switch_inside_trans.result | ||
binlog_tmp_table.result | ||
binlog_tmp_table_row.result | ||
binlog_trigger.result | ||
binlog_truncate_innodb.result | ||
binlog_truncate_kill.result | ||
binlog_truncate_myisam.result | ||
binlog_unsafe.result | ||
binlog_variables_log_bin.result | ||
binlog_variables_log_bin_index.result | ||
binlog_variables_relay_log.result | ||
binlog_variables_relay_log_index.result | ||
binlog_write_error.result | ||
binlog_xa_recover.result | ||
flashback-largebinlog.result | ||
flashback.result | ||
load_data_stm_view.result | ||
mysqladmin.result | ||
temptable_uservar_disconnect-7938.result |