diff options
author | Igor Babaev <igor@askmonty.org> | 2013-01-23 15:18:05 -0800 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2013-01-23 15:18:05 -0800 |
commit | 32151409c13ddc09ebda7cd02fdfe40db290503e (patch) | |
tree | 86997a41bbc6c4379209af0cccdb4ae612c8d4f4 /sql/sql_insert.cc | |
parent | f1e758dc6f4183a8e3856d21c95f7e4973c585c1 (diff) | |
parent | 746152959a8787f3c7cf6b1c710fc1ee6c54419f (diff) | |
download | mariadb-git-32151409c13ddc09ebda7cd02fdfe40db290503e.tar.gz |
Merge 5.3->5.5
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r-- | sql/sql_insert.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 45cc7357155..d6212ded9ba 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2320,6 +2320,7 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) { my_ptrdiff_t adjust_ptrs; Field **field,**org_field, *found_next_number_field; + Field **vfield; TABLE *copy; TABLE_SHARE *share; uchar *bitmap; @@ -2379,6 +2380,13 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) if (!copy_tmp) goto error; + if (share->vfields) + { + vfield= (Field **) client_thd->alloc((share->vfields+1)*sizeof(Field*)); + if (!vfield) + goto error; + } + /* Copy the TABLE object. */ copy= new (copy_tmp) TABLE; *copy= *table; @@ -2408,6 +2416,27 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) } *field=0; + if (share->vfields) + { + copy->vfield= vfield; + for (field= copy->field; *field; field++) + { + if ((*field)->vcol_info) + { + bool error_reported= FALSE; + if (unpack_vcol_info_from_frm(client_thd, + client_thd->mem_root, + copy, + *field, + &(*field)->vcol_info->expr_str, + &error_reported)) + goto error; + *vfield++= *field; + } + } + *vfield= 0; + } + /* Adjust timestamp */ if (table->timestamp_field) { |