From 23903255d82b77c77b734fa328ee01ca1a1ae8db Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 17 Mar 2016 22:03:09 +0100 Subject: MDEV-9629 Disappearing PRI from Key column after creating a trigger when creating shadow nullable fields, preserve all original field flags (because we swap flags back and forth in not_null_fields_have_null_values()) --- mysql-test/r/trigger_null-8605.result | 14 ++++++++++++++ mysql-test/t/trigger_null-8605.test | 12 ++++++++++++ sql/sql_trigger.cc | 1 + 3 files changed, 27 insertions(+) diff --git a/mysql-test/r/trigger_null-8605.result b/mysql-test/r/trigger_null-8605.result index 85fc51987d7..e024bc6b7d2 100644 --- a/mysql-test/r/trigger_null-8605.result +++ b/mysql-test/r/trigger_null-8605.result @@ -341,3 +341,17 @@ create trigger tr1 before update on t1 for each row do 1; create trigger tr2 after update on t2 for each row update t1 set a=new.f2; update t2 set f2=1 where f1=1; drop table t1, t2; +create table t1 (a int not null, primary key (a)); +insert into t1 (a) values (1); +show columns from t1; +Field Type Null Key Default Extra +a int(11) NO PRI NULL +create trigger t1bu before update on t1 for each row begin end; +show columns from t1; +Field Type Null Key Default Extra +a int(11) NO PRI NULL +insert into t1 (a) values (3); +show columns from t1; +Field Type Null Key Default Extra +a int(11) NO PRI NULL +drop table t1; diff --git a/mysql-test/t/trigger_null-8605.test b/mysql-test/t/trigger_null-8605.test index c9b0257afc8..4b51ccd5606 100644 --- a/mysql-test/t/trigger_null-8605.test +++ b/mysql-test/t/trigger_null-8605.test @@ -360,3 +360,15 @@ create trigger tr1 before update on t1 for each row do 1; create trigger tr2 after update on t2 for each row update t1 set a=new.f2; update t2 set f2=1 where f1=1; drop table t1, t2; + +# +# MDEV-9629 Disappearing PRI from Key column after creating a trigger +# +create table t1 (a int not null, primary key (a)); +insert into t1 (a) values (1); +show columns from t1; +create trigger t1bu before update on t1 for each row begin end; +show columns from t1; +insert into t1 (a) values (3); +show columns from t1; +drop table t1; diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 272e1445273..18563ff9b85 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -1101,6 +1101,7 @@ bool Table_triggers_list::prepare_record_accessors(TABLE *table) table == (*fld)->table))) return 1; + f->flags= (*fld)->flags; f->null_ptr= null_ptr; f->null_bit= null_bit; if (null_bit == 128) -- cgit v1.2.1