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;
