Bug #97054 Table with subpartitions can not add column after upgrade
Submitted: 27 Sep 2019 15:46 Modified: 26 Nov 2019 15:44
Reporter: Pepe Rodriguez Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: DDL Severity:S2 (Serious)
Version:8.0.11 OS:Any
Assigned to: CPU Architecture:Any

[27 Sep 2019 15:46] Pepe Rodriguez
Description:
A table with sub-partitions can not add a column after upgrade, if the upgrade is done from 8.0.11-16 to MySQL 8.0.17 or 8.0.18 (latest) version. 

This failure does not occur if the upgrade is done from 8.0.17 to 8.0.18. 

How to repeat:
Steps:

  1. Initialize MySQL 8.0.11-16.
  2. Execute:
     create schema db1;
     CREATE TABLE db1.Two (id INT, purchased DATE) PARTITION BY RANGE( YEAR(purchased)) (partition CUST_ID_LESS_2010 values less than (2010));
     CREATE TABLE db1.TsT (id INT, purchased DATE) PARTITION BY RANGE( YEAR(purchased))
          SUBPARTITION BY HASH( TO_DAYS(purchased) )
              SUBPARTITIONS 2 (PARTITION p0 VALUES LESS THAN (1990), PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN MAXVALUE);
     INSERT INTO db1.Two values (1,'1970-01-01');              
     INSERT INTO db1.TsT values (1,'1970-01-01');
  3. Live-upgrade in to MySQL 8.0.17 or MySQL 8.0.18.
  4. Execute:
     use db1;
     ALTER TABLE Two ADD COLUMN col2 VARCHAR(15); ==> Works
     ALTER TABLE TsT ADD COLUMN col2 VARCHAR(15); ==> Fails: ERROR 3664 (HY000) at line 4 in file: 'SQLIN.sql': Failed to delete SDI 'db1.TsT' in tablespace 'db1/TsT#P#p0#SP#p0sp0'.

So, if the upgrade is done TO MySQL 8.0.17 the failure is present but if MySQL 8.0.17 is used to initialize, the error is not present in MySQL 8.0.18.

Suggested fix:
ALTER TABLE ADD COLUMN should work after upgrade.
[26 Nov 2019 15:44] Paul DuBois
Posted by developer:
 
Fixed in 8.0.19.

When upgrading a database with a subpartioned table from MySQL 8.0.16
or lower and then executing ALTER TABLE ADD COLUMN, an assertion or
error would occur.