diff options
author | Sergei Golubchik <serg@mariadb.org> | 2017-01-12 00:33:21 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2017-01-15 07:41:13 +0100 |
commit | 5dfab33c4ec54082daf034da99c4a796410fe4f3 (patch) | |
tree | d3063943c2eededdafdbfe1f5eb1b8075dd2ade6 | |
parent | 7e2f9d092dd1fb6b0fa1a8fdd5d1f3af68b56f45 (diff) | |
download | mariadb-git-5dfab33c4ec54082daf034da99c4a796410fe4f3.tar.gz |
MDEV-11551 Server crashes in Field::is_real_null
sometimes table->s->stored_fields is less than table->s->null_fields
-rw-r--r-- | mysql-test/r/trigger_null-8605.result | 10 | ||||
-rw-r--r-- | mysql-test/t/trigger_null-8605.test | 14 | ||||
-rw-r--r-- | sql/sql_trigger.cc | 2 |
3 files changed, 25 insertions, 1 deletions
diff --git a/mysql-test/r/trigger_null-8605.result b/mysql-test/r/trigger_null-8605.result index b187fc19554..10315988708 100644 --- a/mysql-test/r/trigger_null-8605.result +++ b/mysql-test/r/trigger_null-8605.result @@ -354,3 +354,13 @@ show columns from t1; Field Type Null Key Default Extra a int(11) NO PRI NULL drop table t1; +create table t1 ( +pk int primary key, +i int, +v1 int as (i) virtual, +v2 int as (i) virtual +); +create trigger tr before update on t1 for each row set @a = 1; +insert into t1 (pk, i) values (null, null); +ERROR 23000: Column 'pk' cannot be null +drop table t1; diff --git a/mysql-test/t/trigger_null-8605.test b/mysql-test/t/trigger_null-8605.test index 748768a1849..34a57654b48 100644 --- a/mysql-test/t/trigger_null-8605.test +++ b/mysql-test/t/trigger_null-8605.test @@ -373,3 +373,17 @@ show columns from t1; insert into t1 (a) values (3); show columns from t1; drop table t1; + +# +# MDEV-11551 Server crashes in Field::is_real_null +# +create table t1 ( + pk int primary key, + i int, + v1 int as (i) virtual, + v2 int as (i) virtual +); +create trigger tr before update on t1 for each row set @a = 1; +--error ER_BAD_NULL_ERROR +insert into t1 (pk, i) values (null, null); +drop table t1; diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 7a61279fc9c..7bfc1e950b5 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -1082,7 +1082,7 @@ bool Table_triggers_list::prepare_record_accessors(TABLE *table) && (table->s->stored_fields != table->s->null_fields)) { - int null_bytes= (table->s->stored_fields - table->s->null_fields + 7)/8; + int null_bytes= (table->s->fields - table->s->null_fields + 7)/8; if (!(extra_null_bitmap= (uchar*)alloc_root(&table->mem_root, null_bytes))) return 1; if (!(record0_field= (Field **)alloc_root(&table->mem_root, |