diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc
|
index 4f05899..3c5e715 100644
|
--- a/storage/innobase/row/row0merge.cc
|
+++ b/storage/innobase/row/row0merge.cc
|
@@ -4559,6 +4559,7 @@ row_merge_build_indexes(
|
ulint total_index_blocks = 0;
|
double pct_cost=0;
|
double pct_progress=0;
|
+ bool is_empty_table = false;
|
|
DBUG_ENTER("row_merge_build_indexes");
|
|
@@ -4637,6 +4638,7 @@ row_merge_build_indexes(
|
for (i = 0; i < n_indexes; i++) {
|
merge_files[i].fd = -1;
|
merge_files[i].offset = 0;
|
+ merge_files[i].n_rec = 0;
|
}
|
|
total_static_cost = COST_BUILD_INDEX_STATIC * n_indexes + COST_READ_CLUSTERED_INDEX;
|
@@ -4723,6 +4725,8 @@ row_merge_build_indexes(
|
total_index_blocks += merge_files[i].offset;
|
}
|
|
+ is_empty_table = (merge_files[0].n_rec == 0);
|
+
|
if (error != DB_SUCCESS) {
|
goto func_exit;
|
}
|
@@ -4915,7 +4919,7 @@ row_merge_build_indexes(
|
ut_ad(sort_idx->online_status
|
== ONLINE_INDEX_COMPLETE);
|
} else {
|
- if (flush_observer) {
|
+ if (flush_observer && !is_empty_table) {
|
flush_observer->flush();
|
row_merge_write_redo(indexes[i]);
|
}
|
@@ -5033,7 +5037,8 @@ row_merge_build_indexes(
|
error = DB_INTERRUPTED;
|
}
|
- if (error == DB_SUCCESS && old_table != new_table) {
|
+ if (error == DB_SUCCESS && old_table != new_table
|
+ && !is_empty_table) {
|
for (const dict_index_t* index
|
= dict_table_get_first_index(new_table);
|
index != NULL;
|
|