1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

MDEV-22739 !cursor->index->is_committed() in row0ins.cc

row_ins_sec_index_entry_by_modify(): When noticing a corrupted secondary
index on which CREATE INDEX is not in progress, return DB_CORRUPTION
instead of intentionally crashing the server.

Tested by: Matthias Leich
This commit is contained in:
Marko Mäkelä
2023-05-26 16:40:02 +03:00
parent e38c075aa0
commit 7b72fc0a57

View File

@@ -214,14 +214,14 @@ row_ins_sec_index_entry_by_modify(
made to the clustered index, and completed the
secondary index creation before we got here. In this
case, the change would already be there. The CREATE
INDEX should be waiting for a MySQL meta-data lock
upgrade at least until this INSERT or UPDATE
returns. After that point, set_committed(true)
would be invoked in commit_inplace_alter_table(). */
INDEX should be in wait_while_table_is_used() at least
until this INSERT or UPDATE returns. After that point,
set_committed(true) would be invoked in
commit_inplace_alter_table(). */
ut_a(update->n_fields == 0);
ut_a(!cursor->index()->is_committed());
ut_ad(!dict_index_is_online_ddl(cursor->index()));
return(DB_SUCCESS);
return cursor->index()->is_committed()
? DB_CORRUPTION : DB_SUCCESS;
}
if (mode == BTR_MODIFY_LEAF) {