Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Not a Bug
-
Affects Version/s: 10.0.20
-
Fix Version/s: N/A
-
Component/s: Data Definition - Alter Table, Storage Engine - InnoDB
-
Labels:
Description
Progress reports for online DDL on InnoDB tables does not appear to be working, even after the fix for MDEV-8179.
For example, if I have this table:
CREATE TABLE db1.test_table ( id INT AUTO_INCREMENT PRIMARY KEY, file BLOB );
And then I execute this:
ALTER TABLE db1.test_table ADD COLUMN new_int_col INT NOT NULL;
The progress printed to the terminal is stuck at 25% of stage 1, and SHOW PROCESSLIST is stuck at 0%:
MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 22 | altering table | ALTER TABLE db1.test_table ADD COLUMN new_int_col INT NOT NULL | 0.000 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ 2 rows in set (0.00 sec) MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 23 | altering table | ALTER TABLE db1.test_table ADD COLUMN new_int_col INT NOT NULL | 0.000 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ 2 rows in set (0.00 sec) MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 25 | altering table | ALTER TABLE db1.test_table ADD COLUMN new_int_col INT NOT NULL | 0.000 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+----------------+----------------------------------------------------------------+----------+ 2 rows in set (0.00 sec)
However, if I perform an operation that forces a table copy, such as changing a column's data type, I get a progress report:
ALTER TABLE db1.test_table MODIFY COLUMN file longblob;
The progress report:
MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 36 | copy to tmp table | ALTER TABLE db1.test_table MODIFY COLUMN file longblob | 48.527 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ 2 rows in set (0.00 sec) MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 37 | copy to tmp table | ALTER TABLE db1.test_table MODIFY COLUMN file longblob | 49.667 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ 2 rows in set (0.00 sec) MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 38 | copy to tmp table | ALTER TABLE db1.test_table MODIFY COLUMN file longblob | 50.787 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ 2 rows in set (0.00 sec) MariaDB [(none)]> SHOW PROCESSLIST; +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ | 6 | root | localhost | NULL | Query | 39 | copy to tmp table | ALTER TABLE db1.test_table MODIFY COLUMN file longblob | 52.329 | | 7 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | 0.000 | +----+------+-----------+------+---------+------+-------------------+--------------------------------------------------------+----------+ 2 rows in set (0.01 sec)
Should progress reporting work for online ALTER TABLE in 10.0? I see no mention that it shouldn't in the KB:
https://mariadb.com/kb/en/mariadb/progress-reporting/
https://mariadb.com/kb/en/mariadb/alter-table/#progress-reports
Gliffy Diagrams
Attachments
Issue Links
- relates to
-
MDEV-8179 Absent progress report for operations on InnoDB tables
-
- Closed
-
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
If I force the ADD COLUMN operation to use ALGORITHM=COPY, progress is reported:
Then the progress: