• Mattias Jonsson's avatar
    Bug#57778: failed primary key add to partitioned innodb table inconsistent and crashes · 27266242
    Mattias Jonsson authored
    It was possible to issue an ALTER TABLE ADD PRIMARY KEY on
    an partitioned InnoDB table that failed and crashed the server.
    
    The problem was that it succeeded to create the PK on at least
    one partition, and then failed on a subsequent partition, due to
    duplicate key violation. Since the partitions that already had added
    the PK was not reverted all partitions was not consistent with the
    table definition, which caused the crash.
    
    The solution was to add a revert step to ha_partition::add_index()
    that dropped the index for the already succeeded partitions, on failure.
    
    mysql-test/r/partition.result:
      updated result
    mysql-test/t/partition.test:
      Added test
    sql/ha_partition.cc:
      Only allow ADD/DROP flags in pairs, so that they can be reverted on failures.
      If add_index() fails for a partition, revert (drop the index) for the previous
      partitions.
    sql/handler.h:
      Added some extra info in a comment.
    27266242
handler.h 78.7 KB