summaryrefslogtreecommitdiff
path: root/sql/sql_insert.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r--sql/sql_insert.cc21
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;