diff options
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r-- | sql/sql_insert.cc | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 39bb9fcd48b..cb652d5f446 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -676,6 +676,23 @@ static void save_insert_query_plan(THD* thd, TABLE_LIST *table_list) } +Field **TABLE::field_to_fill() +{ + return triggers && triggers->nullable_fields() ? triggers->nullable_fields() : field; +} + + +inline +Field **TABLE::user_fields() +{ + if (versioned()) + { + return triggers && triggers->vers_user_fields() ? triggers->vers_user_fields() : vers_user_field; + } + return field_to_fill(); +} + + /** INSERT statement implementation @@ -1002,7 +1019,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list, } table->reset_default_fields(); if (fill_record_n_invoke_before_triggers(thd, table, - table->field_to_fill(), + table->user_fields(), *values, 0, TRG_EVENT_INSERT)) { if (values_list.elements != 1 && ! thd->is_error()) @@ -3875,7 +3892,7 @@ void select_insert::store_values(List<Item> &values) fill_record_n_invoke_before_triggers(thd, table, *fields, values, 1, TRG_EVENT_INSERT); else - fill_record_n_invoke_before_triggers(thd, table, table->field_to_fill(), + fill_record_n_invoke_before_triggers(thd, table, table->user_fields(), values, 1, TRG_EVENT_INSERT); DBUG_VOID_RETURN; |