diff options
author | Monty <monty@mariadb.org> | 2020-01-13 18:30:13 +0200 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2020-03-24 21:00:02 +0200 |
commit | 4ef437558ae8a278f24726276bec57141db086da (patch) | |
tree | d625704ca7a8fae4bc8f240b8daf7d2d3642d39b /sql/sql_delete.cc | |
parent | 736998cb75ba1d7bf8969329d649d9d1337353ff (diff) | |
download | mariadb-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.cc | 7 |
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) |