Now, that we have verified it, we need to see what should the behaviour be in this case -- whether to return DB_OUT_OF_FILE_SPACE or to spin and wait for disk space to be freed / quota to be increased (how mysql/myisam do). In former case (DB_OUT_OF_FILE_SPACE), there is still a high probability of it crashing again with an assertion failure (ex: btr_insert_on_non_leaf_level_func -- has a ut_a(err == DB_SUCCESS) and btr_cur_pessimistic_update has a ut_a(err == DB_SUCCESS) ).
Also, error handling is required in btr_cur_pessimistic_insert since btr_cur_pessimistic_insert doesn't seem to handle it well either
......
} else {
*rec = btr_page_split_and_insert(cursor, entry, n_ext, mtr);
}
......
(big_rec needs to be set NULL as well as DB_OUT_OF_FILE_SPACE needs to be returned).
Now, that we have verified it, we need to see what should the behaviour be in this case -- whether to return DB_OUT_ OF_FILE_ SPACE or to spin and wait for disk space to be freed / quota to be increased (how mysql/myisam do). In former case (DB_OUT_ OF_FILE_ SPACE), there is still a high probability of it crashing again with an assertion failure (ex: btr_insert_ on_non_ leaf_level_ func -- has a ut_a(err == DB_SUCCESS) and btr_cur_ pessimistic_ update has a ut_a(err == DB_SUCCESS) ).
Also, error handling is required in btr_cur_ pessimistic_ insert since btr_cur_ pessimistic_ insert doesn't seem to handle it well either
...... split_and_ insert( cursor, entry, n_ext, mtr); OF_FILE_ SPACE needs to be returned).
} else {
*rec = btr_page_
}
......
(big_rec needs to be set NULL as well as DB_OUT_