mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-11551 Server crashes in Field::is_real_null
sometimes table->s->stored_fields is less than table->s->null_fields
This commit is contained in:
@ -354,3 +354,13 @@ show columns from t1;
|
|||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
a int(11) NO PRI NULL
|
a int(11) NO PRI NULL
|
||||||
drop table t1;
|
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;
|
||||||
|
@ -373,3 +373,17 @@ show columns from t1;
|
|||||||
insert into t1 (a) values (3);
|
insert into t1 (a) values (3);
|
||||||
show columns from t1;
|
show columns from t1;
|
||||||
drop table 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;
|
||||||
|
@ -1082,7 +1082,7 @@ bool Table_triggers_list::prepare_record_accessors(TABLE *table)
|
|||||||
&& (table->s->stored_fields != table->s->null_fields))
|
&& (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)))
|
if (!(extra_null_bitmap= (uchar*)alloc_root(&table->mem_root, null_bytes)))
|
||||||
return 1;
|
return 1;
|
||||||
if (!(record0_field= (Field **)alloc_root(&table->mem_root,
|
if (!(record0_field= (Field **)alloc_root(&table->mem_root,
|
||||||
|
Reference in New Issue
Block a user