Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-32950

Mariadb-binlog --flashback Should Warn/Error If Finding Statement Logged Transactions

    XMLWordPrintable

Details

    Description

      The mariadb-binlog command-line tool, when run with --flashback, currently outputs strange looking events if encountering Statement-binlogged transactions. For example, a simple insert is binlogged using statement format as

      #231205  8:11:45 server id 1  end_log_pos 429 CRC32 0xe3e74907 	GTID 0-1-2
      /*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
      /*!100001 SET @@session.gtid_domain_id=0*//*!*/;
      /*!100001 SET @@session.server_id=1*//*!*/;
      /*!100001 SET @@session.gtid_seq_no=2*//*!*/;
      START TRANSACTION
      /*!*/;
      # at 429
      #231205  8:11:45 server id 1  end_log_pos 0 CRC32 0x98b9da3a 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
      use `test`/*!*/;
      SET TIMESTAMP=1701789105/*!*/;
      SET @@session.pseudo_thread_id=8/*!*/;
      SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
      SET @@session.sql_mode=1411383296/*!*/;
      SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
      /*!\C latin1 *//*!*/;
      SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
      SET @@session.lc_time_names=0/*!*/;
      SET @@session.collation_database=DEFAULT/*!*/;
      insert into t1 values (1)
      /*!*/;
      # at 521
      #231205  8:11:45 server id 1  end_log_pos 594 CRC32 0xdd3b6158 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
      SET TIMESTAMP=1701789105/*!*/;
      COMMIT
      /*!*/;
      # at 594
      

      where mariadb-binlog --flashback will transform this into

      #231205  8:11:45 server id 1  end_log_pos 594 CRC32 0xdd3b6158 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
      SET TIMESTAMP=1701789105/*!*/;
      START TRANSACTION
      /*!*/;
      #231205  8:11:45 server id 1  end_log_pos 0 CRC32 0x98b9da3a 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
      use `test`/*!*/;
      SET TIMESTAMP=1701789105/*!*/;
      SET @@session.pseudo_thread_id=8/*!*/;
      SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
      SET @@session.sql_mode=1411383296/*!*/;
      SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
      /*!\C latin1 *//*!*/;
      SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
      SET @@session.lc_time_names=0/*!*/;
      SET @@session.collation_database=DEFAULT/*!*/;
      COMMIT
      /*!*/;
      COMMIT
      /*!*/;
      

      Mariadb-binlog should at least issue a warning when encountering statement logged transactions when in flashback mode, as it is not supported; or error and stop altogether.

      Attachments

        Issue Links

          Activity

            People

              bnestere Brandon Nesterenko
              bnestere Brandon Nesterenko
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.