MDEV-7968 Virtual column set to NULL using load data infile
Don't forget to set thd->lex->unit.insert_table_with_stored_vcol in the mysql_load(). Othewise virtual columns will not be updated.
This commit is contained in:
parent
6f14531b52
commit
cf30074c3f
20
mysql-test/suite/vcol/r/load_data.result
Normal file
20
mysql-test/suite/vcol/r/load_data.result
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
create table t1 ( c1 varchar(10), c2 varchar(10), c3 int );
|
||||||
|
insert into t1 values ("a" , "b", 1), ("a" , "b", 2);
|
||||||
|
create table t2 like t1 ;
|
||||||
|
alter table t2 add column c4 bigint unsigned as (CONV(LEFT(MD5(concat(c1,c2,c3)), 16), 16, 10)) persistent unique key;
|
||||||
|
select * into outfile 't1.csv' from t1;
|
||||||
|
load data infile 't1.csv' into table t2 ;
|
||||||
|
Warnings:
|
||||||
|
Warning 1261 Row 1 doesn't contain data for all columns
|
||||||
|
Warning 1261 Row 2 doesn't contain data for all columns
|
||||||
|
select * from t2;
|
||||||
|
c1 c2 c3 c4
|
||||||
|
a b 1 7545402351885872315
|
||||||
|
a b 2 6048842355806993119
|
||||||
|
insert into t2 (c1,c2,c3) values ("a" , "b", 4);
|
||||||
|
select * from t2;
|
||||||
|
c1 c2 c3 c4
|
||||||
|
a b 1 7545402351885872315
|
||||||
|
a b 2 6048842355806993119
|
||||||
|
a b 4 15541743660496249717
|
||||||
|
drop table t1, t2;
|
13
mysql-test/suite/vcol/t/load_data.test
Normal file
13
mysql-test/suite/vcol/t/load_data.test
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# MDEV-7968 Virtual column set to NULL using load data infile
|
||||||
|
#
|
||||||
|
create table t1 ( c1 varchar(10), c2 varchar(10), c3 int );
|
||||||
|
insert into t1 values ("a" , "b", 1), ("a" , "b", 2);
|
||||||
|
create table t2 like t1 ;
|
||||||
|
alter table t2 add column c4 bigint unsigned as (CONV(LEFT(MD5(concat(c1,c2,c3)), 16), 16, 10)) persistent unique key;
|
||||||
|
select * into outfile 't1.csv' from t1;
|
||||||
|
load data infile 't1.csv' into table t2 ;
|
||||||
|
select * from t2;
|
||||||
|
insert into t2 (c1,c2,c3) values ("a" , "b", 4);
|
||||||
|
select * from t2;
|
||||||
|
drop table t1, t2;
|
@ -314,6 +314,18 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||||||
table->prepare_triggers_for_insert_stmt_or_event();
|
table->prepare_triggers_for_insert_stmt_or_event();
|
||||||
table->mark_columns_needed_for_insert();
|
table->mark_columns_needed_for_insert();
|
||||||
|
|
||||||
|
if (table->vfield)
|
||||||
|
{
|
||||||
|
for (Field **vfield_ptr= table->vfield; *vfield_ptr; vfield_ptr++)
|
||||||
|
{
|
||||||
|
if ((*vfield_ptr)->stored_in_db)
|
||||||
|
{
|
||||||
|
thd->lex->unit.insert_table_with_stored_vcol= table;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint tot_length=0;
|
uint tot_length=0;
|
||||||
bool use_blobs= 0, use_vars= 0;
|
bool use_blobs= 0, use_vars= 0;
|
||||||
List_iterator_fast<Item> it(fields_vars);
|
List_iterator_fast<Item> it(fields_vars);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user