summaryrefslogtreecommitdiff
path: root/sql/sql_trigger.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_trigger.cc')
-rw-r--r--sql/sql_trigger.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc
index d6c722246e7..44aad3ad9f6 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -1249,9 +1249,29 @@ bool Table_triggers_list::prepare_record_accessors(TABLE *table)
*trg_fld= 0;
DBUG_ASSERT(null_ptr <= extra_null_bitmap + null_bytes);
bzero(extra_null_bitmap, null_bytes);
+
+ if (table->versioned())
+ {
+ vers_user_field= (Field **)alloc_root(&table->mem_root,
+ (table->s->fields - VERSIONING_FIELDS + 1) *
+ sizeof(Field*));
+ if (!vers_user_field)
+ return 1;
+ Field **dst= vers_user_field;
+ for (Field **src= record0_field; *src; src++)
+ {
+ if ((*src)->vers_sys_field())
+ continue;
+ *dst++= *src;
+ }
+ *dst= NULL;
+ }
}
else
+ {
record0_field= table->field;
+ vers_user_field= table->vers_user_field;
+ }
if (has_triggers(TRG_EVENT_UPDATE,TRG_ACTION_BEFORE) ||
has_triggers(TRG_EVENT_UPDATE,TRG_ACTION_AFTER) ||