Skip to content
Permalink
Browse files

Bug #29127203 VIRTUAL GENERATED COLUMN INDEX DATA INCONSISTENCY

PROBLEM
-------

Index defined on a virtual column whose base column was in a fk
relation was not getting updated. This is because while getting
the updated field information from the update vector of the parent
table we were comparing the column number of the base column (for
virtual column) in child table with the associated column number
in the parent table. There was a mismatch in this column number
because of which this update field information was skipped and
subsequently index was not getting updated.

FIX
  • Loading branch information...
Aditya A authored and dr-m committed Apr 27, 2019
1 parent b6ac673 commit 60069a9829f3dc3e76af53e07b845d7aa83028d3
Showing with 6 additions and 3 deletions.
  1. +6 −3 storage/innobase/handler/ha_innodb.cc
given col_no.
@param[in] foreign foreign key information
@param[in] update updated parent vector.
@param[in] col_no column position of the table
@param[in] col_no base column position of the child table to check
@return updated field from the parent update vector, else NULL */
static
dfield_t*
ulint prefix_col_no;

for (ulint i = 0; i < foreign->n_fields; i++) {
if (dict_index_get_nth_col_no(foreign->foreign_index, i)
!= col_no) {
continue;
}

parent_col_no = dict_index_get_nth_col_no(parent_index, i);
parent_field_no = dict_table_get_nth_col_pos(
upd_field_t* parent_ufield
= &update->fields[j];

if (parent_ufield->field_no == parent_field_no
&& parent_col_no == col_no) {
if (parent_ufield->field_no == parent_field_no) {
return(&parent_ufield->new_val);
}
}

0 comments on commit 60069a9

Please sign in to comment.
You can’t perform that action at this time.