mariadb/mysql-test/suite/innodb
Thirunarayanan Balathandayuthapani 60a02cc869 MDEV-36017 Alter table aborts when temporary directory is full
Problem:
=======
- In 10.11, During Copy algorithm, InnoDB does use bulk insert
for row by row insert operation. When temporary directory
ran out of memory, row_mysql_handle_errors() fails to handle
DB_TEMP_FILE_WRITE_FAIL.

- During inplace algorithm, concurrent DML fails to write
the log operation into the temporary file. InnoDB fail to
mark the error for the online log.

- ddl_log_write() releases the global ddl lock prematurely before
release the log memory entry

Fix:
===
row_mysql_handle_errors(): Rollback the transaction when
InnoDB encounters DB_TEMP_FILE_WRITE_FAIL

convert_error_code_to_mysql(): Report an aborted transaction
when InnoDB encounters DB_TEMP_FILE_WRITE_FAIL during
alter table algorithm=copy or innodb bulk insert operation

row_log_online_op(): Mark the error in online log when
InnoDB ran out of temporary space

fil_space_extend_must_retry(): Mark the os_has_said_disk_full
as true if os_file_set_size() fails

ddl_log_write(): Release the global ddl lock after releasing
the log memory entry when error was encountered

is_bulk_insert(): Change the condition to make sure that
InnoDB does check for all modified tables when bulk insert
is enabled or unique_checks and foreign_key_checks is enabled.

btr_cur_optimistic_update(): Relax the assertion that
blob pointer can be null during rollback because InnoDB can
ran out of space while allocating the external page
2025-04-03 14:16:22 +05:30
..
include Merge branch '10.6' into 10.11 2024-05-10 20:02:18 +02:00
r MDEV-36017 Alter table aborts when temporary directory is full 2025-04-03 14:16:22 +05:30
t MDEV-36017 Alter table aborts when temporary directory is full 2025-04-03 14:16:22 +05:30