Bug #120244 Unexpected error `'0' for column '' at row -1` triggered by ALTER
Submitted: 10 Apr 12:40
Reporter: chi zhang Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server: DDL Severity:S1 (Critical)
Version:9.6.0 OS:Any
Assigned to: CPU Architecture:Any

[10 Apr 12:40] chi zhang
Description:
Hi,

The following test case triggers an unexpected error `Incorrect DECIMAL value: '0' for column '' at row -1`

```
CREATE TABLE t0(c0 FLOAT  COLUMN_FORMAT DYNAMIC STORAGE DISK) ;
UPDATE t0 SET c0=DEFAULT WHERE CAST((! ((+ ('')))) AS SIGNED);
ALTER TABLE t0 FORCE, ADD COLUMN tmp_3116 FLOAT NULL, CHECKSUM 1, INSERT_METHOD FIRST, MODIFY COLUMN c0 VARCHAR(255) NULL;
INSERT LOW_PRIORITY INTO t0(c0) VALUES(0.22239197789901533), (''), (0.04602772262776467);
ALTER TABLE t0 RENAME COLUMN c0 TO c_ren_5929, DROP COLUMN tmp_3116, RENAME TO t2, LOCK = SHARED, FORCE, ALGORITHM INPLACE, PACK_KEYS 0, CHECKSUM 0;
ALTER TABLE t2 PACK_KEYS 1, RENAME COLUMN c_ren_5929 TO c_ren_8402, STATS_PERSISTENT DEFAULT;
ALTER TABLE t2 RENAME COLUMN c_ren_8402 TO c_ren_9739, RENAME TO t0;
ALTER TABLE t0 CHANGE COLUMN c_ren_9739 c_chg_4966 VARCHAR(255) NULL;
ALTER TABLE t0 ADD COLUMN tmp_9090 VARCHAR(255) NULL;
ALTER TABLE t0 INSERT_METHOD LAST, DROP COLUMN tmp_9090, RENAME t2, RENAME COLUMN c_chg_4966 TO c_ren_269, STATS_AUTO_RECALC 0, DISABLE KEYS;
ALTER TABLE t2 RENAME COLUMN c_ren_269 TO c_ren_8597, PACK_KEYS 0, ENABLE KEYS, LOCK = SHARED, AUTO_INCREMENT = 933, STATS_AUTO_RECALC DEFAULT, DELAY_KEY_WRITE 0, ADD COLUMN tmp_6664 DECIMAL(10,2) NULL, ADD INDEX idx_sco_9404 (tmp_6664, c_ren_8597);
ALTER TABLE t2 RENAME COLUMN c_ren_8597 TO c_ren_1228, STATS_AUTO_RECALC DEFAULT, ENGINE = MEMORY, DEFAULT CHARACTER SET = ascii, COMPRESSION 'ZLIB', RENAME t2, CHECKSUM 0, DELAY_KEY_WRITE 1, INSERT_METHOD FIRST, STATS_PERSISTENT 1, ROW_FORMAT DYNAMIC, RENAME INDEX idx_sco_9404 TO idx_sco_2770, AUTO_INCREMENT = 440;
ALTER TABLE t2 ROW_FORMAT DYNAMIC, PACK_KEYS 0, STATS_PERSISTENT 0, CHANGE COLUMN c_ren_1228 c_chg_8686 DECIMAL(10,2) NULL;
```

How to repeat:
```
CREATE TABLE t0(c0 FLOAT  COLUMN_FORMAT DYNAMIC STORAGE DISK) ;
UPDATE t0 SET c0=DEFAULT WHERE CAST((! ((+ ('')))) AS SIGNED);
ALTER TABLE t0 FORCE, ADD COLUMN tmp_3116 FLOAT NULL, CHECKSUM 1, INSERT_METHOD FIRST, MODIFY COLUMN c0 VARCHAR(255) NULL;
INSERT LOW_PRIORITY INTO t0(c0) VALUES(0.22239197789901533), (''), (0.04602772262776467);
ALTER TABLE t0 RENAME COLUMN c0 TO c_ren_5929, DROP COLUMN tmp_3116, RENAME TO t2, LOCK = SHARED, FORCE, ALGORITHM INPLACE, PACK_KEYS 0, CHECKSUM 0;
ALTER TABLE t2 PACK_KEYS 1, RENAME COLUMN c_ren_5929 TO c_ren_8402, STATS_PERSISTENT DEFAULT;
ALTER TABLE t2 RENAME COLUMN c_ren_8402 TO c_ren_9739, RENAME TO t0;
ALTER TABLE t0 CHANGE COLUMN c_ren_9739 c_chg_4966 VARCHAR(255) NULL;
ALTER TABLE t0 ADD COLUMN tmp_9090 VARCHAR(255) NULL;
ALTER TABLE t0 INSERT_METHOD LAST, DROP COLUMN tmp_9090, RENAME t2, RENAME COLUMN c_chg_4966 TO c_ren_269, STATS_AUTO_RECALC 0, DISABLE KEYS;
ALTER TABLE t2 RENAME COLUMN c_ren_269 TO c_ren_8597, PACK_KEYS 0, ENABLE KEYS, LOCK = SHARED, AUTO_INCREMENT = 933, STATS_AUTO_RECALC DEFAULT, DELAY_KEY_WRITE 0, ADD COLUMN tmp_6664 DECIMAL(10,2) NULL, ADD INDEX idx_sco_9404 (tmp_6664, c_ren_8597);
ALTER TABLE t2 RENAME COLUMN c_ren_8597 TO c_ren_1228, STATS_AUTO_RECALC DEFAULT, ENGINE = MEMORY, DEFAULT CHARACTER SET = ascii, COMPRESSION 'ZLIB', RENAME t2, CHECKSUM 0, DELAY_KEY_WRITE 1, INSERT_METHOD FIRST, STATS_PERSISTENT 1, ROW_FORMAT DYNAMIC, RENAME INDEX idx_sco_9404 TO idx_sco_2770, AUTO_INCREMENT = 440;
ALTER TABLE t2 ROW_FORMAT DYNAMIC, PACK_KEYS 0, STATS_PERSISTENT 0, CHANGE COLUMN c_ren_1228 c_chg_8686 DECIMAL(10,2) NULL;
```