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

Unexpected change in error code on INSERT .. PARTITION causes replication abort

Details

    Description

      In the provided test case, before I run INSERT, I execute a seemingly harmless, albeit useless, ALTER on a non-existent table, which expectedly fails with ER_NO_SUCH_TABLE.

      But after that, the next INSERT on the existing table fails with ER_WRONG_PARTITION_NAME. It is expected to fail, but without the previous unrelated ALTER it fails with ER_NO_PARTITION_FOR_GIVEN_VALUE.

      It wouldn't be so bad, but the whole sequence is executed on a master, the failed ALTER isn't written to the binary log, but INSERT might be, for example if it's run on a non-transactional table. In this case INSERT is written with ER_WRONG_PARTITION_NAME, but on a slave it causes ER_NO_PARTITION_FOR_GIVEN_VALUE, and this discrepancy causes replication failure.

      --source include/have_partition.inc
      --source include/master-slave.inc
      --source include/have_binlog_format_statement.inc
       
      CREATE TABLE IF NOT EXISTS t1 (a INT) 
      ENGINE=MyISAM
      PARTITION BY LIST(a) ( 
        PARTITION p0 VALUES IN (9, NULL), 
        PARTITION p1 VALUES IN (8, 2, 7), 
        PARTITION p2 VALUES IN (6, 4, 5), 
        PARTITION p3 VALUES IN (3, 1, 0) 
      );
      ALTER TABLE t1 DROP PARTITION p0;
       
      ####### Game changer
      --error ER_NO_SUCH_TABLE
      ALTER TABLE non_existent TRUNCATE PARTITION p1,p2;
      #######
       
      --error ER_NO_PARTITION_FOR_GIVEN_VALUE,ER_WRONG_PARTITION_NAME
      INSERT INTO t1 PARTITION (p1,p2,p3) VALUES (0),(9);
      SHOW WARNINGS;
       
      --sync_slave_with_master

      140305 23:11:27 [ERROR] Slave SQL: Query caused different errors on master and slave.     Error on master: message (format)='Incorrect partition name' error code=1567 ; Error on slave: actual message='Table has no partition for value 9', error code=1526. Default database: 'test'. Query: 'INSERT INTO t1 PARTITION (p1,p2,p3) VALUES (0),(9)', Internal MariaDB error code: 0
      140305 23:11:27 [ERROR] Slave SQL: Table has no partition for value 9, Internal MariaDB error code: 1526

      Attachments

        Activity

          Still reproducible on all existing versions.
          I can't say whether it's reproducible on MySQL 8.x, as it refuses to create a partitioned MyISAM table in the provided test case.

          Please also note the strangely looking error text (the "(format)" part):

          Error on master: message (format)='Incorrect partition name'
          

          Not sure whether it's a typo or it's trying to say something which I don't understand.

          elenst Elena Stepanova added a comment - Still reproducible on all existing versions. I can't say whether it's reproducible on MySQL 8.x, as it refuses to create a partitioned MyISAM table in the provided test case. Please also note the strangely looking error text (the "(format)" part): Error on master: message (format)='Incorrect partition name' Not sure whether it's a typo or it's trying to say something which I don't understand.

          Nice find. The error handling code in partitioning was referencing not valid memory values.

          Patch: https://lists.mariadb.org/hyperkitty/list/commits@lists.mariadb.org/thread/KSYDN7F5W3SFDSTULRF2BOAOTCP6MJGI/

          knielsen Kristian Nielsen added a comment - Nice find. The error handling code in partitioning was referencing not valid memory values. Patch: https://lists.mariadb.org/hyperkitty/list/commits@lists.mariadb.org/thread/KSYDN7F5W3SFDSTULRF2BOAOTCP6MJGI/

          It's been such a long time, I have no remembrance whatsoever why I categorized it as "replication", while even the description says it's just a victim here. Sorry about it.

          elenst Elena Stepanova added a comment - It's been such a long time, I have no remembrance whatsoever why I categorized it as "replication", while even the description says it's just a victim here. Sorry about it.

          Pushed to 10.5

          knielsen Kristian Nielsen added a comment - Pushed to 10.5

          People

            knielsen Kristian Nielsen
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

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