mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
After merge fixes for patch solving bug#18437 "Wrong values inserted with a
before update trigger on NDB table". Two main changes: - We use TABLE::read_set/write_set bitmaps for marking fields used by statement instead of Field::query_id in 5.1. - Now when we mark columns used by statement we take into account columns used by table's triggers instead of marking all columns as used if table has triggers.
This commit is contained in:
@ -187,9 +187,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
table= table_list->table;
|
||||
transactional_table= table->file->has_transactions();
|
||||
|
||||
if (table->found_next_number_field)
|
||||
table->mark_auto_increment_column();
|
||||
|
||||
if (!fields_vars.elements)
|
||||
{
|
||||
Field **field;
|
||||
@ -232,7 +229,7 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
mark_fields_used_by_triggers_for_insert_stmt(thd, table, handle_duplicates);
|
||||
table->mark_columns_needed_for_insert();
|
||||
|
||||
uint tot_length=0;
|
||||
bool use_blobs= 0, use_vars= 0;
|
||||
@ -364,13 +361,10 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
if (ignore ||
|
||||
handle_duplicates == DUP_REPLACE)
|
||||
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
|
||||
if (handle_duplicates == DUP_REPLACE)
|
||||
{
|
||||
if (!table->triggers ||
|
||||
!table->triggers->has_delete_triggers())
|
||||
if (handle_duplicates == DUP_REPLACE &&
|
||||
(!table->triggers ||
|
||||
!table->triggers->has_delete_triggers()))
|
||||
table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
|
||||
table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS);
|
||||
}
|
||||
if (!thd->prelocked_mode)
|
||||
table->file->ha_start_bulk_insert((ha_rows) 0);
|
||||
table->copy_blobs=1;
|
||||
|
Reference in New Issue
Block a user