Commit cf30074c authored by Sergei Golubchik's avatar Sergei Golubchik

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.
parent 6f14531b
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;
#
# 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, ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment