mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Mdev-15085 Invisible Column Non-constant Default value results...
Problem:- If we create table field with dynamic default value then that field always gets NULL value. Analyze:- This is because in fill_record we simple continue at Invisible column because we though that share->default_values(default value is always copied into table->record[0] before insert) will have a default value for them(which is true for constant defaults , but not for dynamic defaults). Solution:- We simple set all_fields_have_value to null , and this will make call to update_default_fields (in the case of dynamic default), And default expr will be evaluted and value will be set in field.
This commit is contained in:
@ -524,3 +524,14 @@ a b c d
|
|||||||
1 3 1 6
|
1 3 1 6
|
||||||
2 2 2 6
|
2 2 2 6
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a int default 5 invisible, b int);
|
||||||
|
create table t2(a int default (b+11) invisible, b int);
|
||||||
|
insert into t1 values(1);
|
||||||
|
select a,b from t1;
|
||||||
|
a b
|
||||||
|
5 1
|
||||||
|
insert into t2 values(1);
|
||||||
|
select a,b from t2;
|
||||||
|
a b
|
||||||
|
12 1
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -213,4 +213,12 @@ execute insert_1;
|
|||||||
set @a=2,@b=2, @c=2;
|
set @a=2,@b=2, @c=2;
|
||||||
execute insert_2;
|
execute insert_2;
|
||||||
select a,b,c,d from t1 order by a;
|
select a,b,c,d from t1 order by a;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#MDEV-15085 Non constant default getting Null values
|
||||||
|
create table t1(a int default 5 invisible, b int);
|
||||||
|
create table t2(a int default (b+11) invisible, b int);
|
||||||
|
insert into t1 values(1);
|
||||||
|
select a,b from t1;
|
||||||
|
insert into t2 values(1);
|
||||||
|
select a,b from t2;
|
||||||
|
drop table t1,t2;
|
@ -8396,6 +8396,7 @@ fill_record(THD *thd, TABLE *table, Field **ptr, List<Item> &values,
|
|||||||
|
|
||||||
if (field->invisible)
|
if (field->invisible)
|
||||||
{
|
{
|
||||||
|
all_fields_have_values= false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user