Skip to content

Commit

Permalink
MDEV-14871 Server crashes in fill_record / fill_record_n_invoke_befor…
Browse files Browse the repository at this point in the history
…e_triggers upon inserting into versioned table with trigger
  • Loading branch information
kevgs authored and midenok committed Jan 10, 2018
1 parent c59c1a0 commit eedab70
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 1 deletion.
6 changes: 6 additions & 0 deletions mysql-test/suite/versioning/r/insert.result
Original file line number Diff line number Diff line change
Expand Up @@ -358,4 +358,10 @@ a
select * from t1 for system_time as of sysdate(6);
a
1
#
# MDEV-14871 Server crashes in fill_record / fill_record_n_invoke_before_triggers upon inserting into versioned table with trigger
#
create or replace table t1 (pk int primary key) with system versioning;
create trigger tr before insert on t1 for each row select 1 into @a;
insert into t1 values (1),(2);
drop table t1;
8 changes: 8 additions & 0 deletions mysql-test/suite/versioning/t/insert.test
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,12 @@ create table t1 (a int) with system versioning;
insert t1 values (1);
select * from t1 for system_time as of now(6);
select * from t1 for system_time as of sysdate(6);

--echo #
--echo # MDEV-14871 Server crashes in fill_record / fill_record_n_invoke_before_triggers upon inserting into versioned table with trigger
--echo #
create or replace table t1 (pk int primary key) with system versioning;
create trigger tr before insert on t1 for each row select 1 into @a;
insert into t1 values (1),(2);

drop table t1;
2 changes: 1 addition & 1 deletion sql/sql_trigger.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1228,7 +1228,7 @@ bool Table_triggers_list::prepare_record_accessors(TABLE *table)
uchar null_bit= 1;
for (fld= table->field, trg_fld= record0_field; *fld; fld++, trg_fld++)
{
if (!(*fld)->null_ptr && !(*fld)->vcol_info)
if (!(*fld)->null_ptr && !(*fld)->vcol_info && !(*fld)->vers_sys_field())
{
Field *f;
if (!(f= *trg_fld= (*fld)->make_new_field(&table->mem_root, table,
Expand Down

0 comments on commit eedab70

Please sign in to comment.