diff --git a/storage/innobase/ddl/ddl0builder.cc b/storage/innobase/ddl/ddl0builder.cc index 90d0b9a9876..ddfd97c5d67 100644 --- a/storage/innobase/ddl/ddl0builder.cc +++ b/storage/innobase/ddl/ddl0builder.cc @@ -1467,12 +1467,6 @@ dberr_t Builder::bulk_add_row(Cursor &cursor, Row &row, size_t thread_id, if (!key_buffer->empty()) { ut_a(err == DB_SUCCESS || err == DB_OVERFLOW); - err = key_buffer_sort(thread_id); - - if (err != DB_SUCCESS) { - set_error(err); - return get_error(); - } if (is_skip_file_sort()) { if (!cursor.eof()) { @@ -1511,6 +1505,13 @@ dberr_t Builder::bulk_add_row(Cursor &cursor, Row &row, size_t thread_id, ut_a(m_btr_load == nullptr); return DB_END_OF_INDEX; + } else { + err = key_buffer_sort(thread_id); + + if (err != DB_SUCCESS) { + set_error(err); + return get_error(); + } } } @@ -1584,7 +1585,13 @@ dberr_t Builder::bulk_add_row(Cursor &cursor, Row &row, size_t thread_id, dberr_t Builder::add_row(Cursor &cursor, Row &row, size_t thread_id, Latch_release &&latch_release) noexcept { - auto err = m_ctx.check_state_of_online_build_log(); + // check last error + auto err = get_error(); + if (err != DB_SUCCESS) { + return err; + } + + err = m_ctx.check_state_of_online_build_log(); DBUG_EXECUTE_IF("builder_add_row_trigger_error", { err = DB_ONLINE_LOG_TOO_BIG;