summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2020-01-13 18:30:13 +0200
committerMonty <monty@mariadb.org>2020-03-24 21:00:02 +0200
commit4ef437558ae8a278f24726276bec57141db086da (patch)
treed625704ca7a8fae4bc8f240b8daf7d2d3642d39b /sql/sql_delete.cc
parent736998cb75ba1d7bf8969329d649d9d1337353ff (diff)
downloadmariadb-git-4ef437558ae8a278f24726276bec57141db086da.tar.gz
Improve update handler (long unique keys on blobs)
MDEV-21606 Improve update handler (long unique keys on blobs) MDEV-21470 MyISAM and Aria start_bulk_insert doesn't work with long unique MDEV-21606 Bug fix for previous version of this code MDEV-21819 2 Assertion `inited == NONE || update_handler != this' - Move update_handler from TABLE to handler - Move out initialization of update handler from ha_write_row() to prepare_for_insert() - Fixed that INSERT DELAYED works with update handler - Give an error if using long unique with an autoincrement column - Added handler function to check if table has long unique hash indexes - Disable write cache in MyISAM and Aria when using update_handler as if cache is used, the row will not be inserted until end of statement and update_handler would not find conflicting rows. - Removed not used handler argument from check_duplicate_long_entries_update() - Syntax cleanups - Indentation fixes - Don't use single character indentifiers for arguments
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index bef77e1a2e9..da46a538a28 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -751,6 +751,10 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
&& !table->versioned()
&& table->file->has_transactions();
+ if (table->versioned(VERS_TIMESTAMP) ||
+ (table_list->has_period() && !portion_of_time_through_update))
+ table->file->prepare_for_insert(1);
+
THD_STAGE_INFO(thd, stage_updating);
while (likely(!(error=info.read_record())) && likely(!thd->killed) &&
likely(!thd->is_error()))
@@ -1237,6 +1241,9 @@ multi_delete::initialize_tables(JOIN *join)
normal_tables= 1;
tbl->prepare_triggers_for_delete_stmt_or_event();
tbl->prepare_for_position();
+
+ if (tbl->versioned(VERS_TIMESTAMP))
+ tbl->file->prepare_for_insert(1);
}
else if ((tab->type != JT_SYSTEM && tab->type != JT_CONST) &&
walk == delete_tables)