Skip to content

Commit cd75139

Browse files
committed
MDEV-36026 Problem with INSERT SELECT on NOT NULL columns while having BEFORE UPDATE trigger
MDEV-8605 and MDEV-19761 didn't handle INSERT (columns) SELECT followup for a69da0c
1 parent fbb6b50 commit cd75139

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

mysql-test/main/trigger_null.result

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,4 +399,19 @@ Warnings:
399399
Warning 1364 Field 'c5' doesn't have a default value
400400
drop table t1;
401401
set sql_mode=default;
402+
#
403+
# MDEV-36026 Problem with INSERT SELECT on NOT NULL columns while having BEFORE UPDATE trigger
404+
#
405+
create table t1 (b int(11) not null);
406+
create trigger t1bu before update on t1 for each row begin end;
407+
insert t1 (b) select 1 union select 2;
408+
create trigger trgi before insert on t1 for each row set new.b=ifnull(new.b,10);
409+
insert t1 (b) select NULL union select 11;
410+
select * from t1;
411+
b
412+
1
413+
2
414+
10
415+
11
416+
drop table t1;
402417
# End of 10.5 tests

mysql-test/main/trigger_null.test

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,4 +425,15 @@ insert into t1 (c) values (1);
425425
drop table t1;
426426
set sql_mode=default;
427427

428+
--echo #
429+
--echo # MDEV-36026 Problem with INSERT SELECT on NOT NULL columns while having BEFORE UPDATE trigger
430+
--echo #
431+
create table t1 (b int(11) not null);
432+
create trigger t1bu before update on t1 for each row begin end;
433+
insert t1 (b) select 1 union select 2;
434+
create trigger trgi before insert on t1 for each row set new.b=ifnull(new.b,10);
435+
insert t1 (b) select NULL union select 11;
436+
select * from t1;
437+
drop table t1;
438+
428439
--echo # End of 10.5 tests

sql/sql_insert.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4126,6 +4126,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
41264126
int select_insert::prepare2(JOIN *)
41274127
{
41284128
DBUG_ENTER("select_insert::prepare2");
4129+
switch_to_nullable_trigger_fields(*fields, table);
41294130
if (table->validate_default_values_of_unset_fields(thd))
41304131
DBUG_RETURN(1);
41314132
if (thd->lex->describe)

0 commit comments

Comments
 (0)