diff options
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 332537cad4e..500dd045e90 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1658,7 +1658,8 @@ copy_data_between_tables(TABLE *from,TABLE *to, }; init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1); - if (handle_duplicates == DUP_IGNORE) + if (handle_duplicates == DUP_IGNORE || + handle_duplicates == DUP_REPLACE) to->file->extra(HA_EXTRA_IGNORE_DUP_KEY); next_field=to->next_number_field; while (!(error=info.read_record(&info))) @@ -1675,7 +1676,8 @@ copy_data_between_tables(TABLE *from,TABLE *to, copy_ptr->do_copy(copy_ptr); if ((error=to->file->write_row((byte*) to->record[0]))) { - if (handle_duplicates != DUP_IGNORE || + if ((handle_duplicates != DUP_IGNORE && + handle_duplicates != DUP_REPLACE) || (error != HA_ERR_FOUND_DUPP_KEY && error != HA_ERR_FOUND_DUPP_UNIQUE)) { |