Commit f3a9f12b authored by Aditya A's avatar Aditya A Committed by Marko Mäkelä

Bug #29021730 CRASHING INNOBASE_COL_CHECK_FK WITH FOREIGN KEYS

PROBLEM
-------
Function innodb_base_col_setup_for_stored() was skipping to store
the base column information for a generated column if the base column
was a "STORED" generated column. This later causes a crash in function
innoabse_col_check_fk() where it says that a generated columns depends
upon two base columns ,but there is information on only one of them.
There was a explicit check barring the stored columns being stored,
which is wrong because the documentation says that a generated stored
column can be a part of a generated column.

FIX
----
Store the information of base column if it is a stored generated column.

#RB21247
Reviewed by: Debarun Banerjee <debarun.banerjee@oracle.com>
parent c795a9f3
/***************************************************************************** /*****************************************************************************
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2000, 2019, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, 2009 Google Inc. Copyright (c) 2008, 2009 Google Inc.
Copyright (c) 2009, Percona Inc. Copyright (c) 2009, Percona Inc.
Copyright (c) 2012, Facebook Inc. Copyright (c) 2012, Facebook Inc.
...@@ -10977,7 +10977,7 @@ innodb_base_col_setup_for_stored( ...@@ -10977,7 +10977,7 @@ innodb_base_col_setup_for_stored(
for (uint i= 0; i < field->table->s->fields; ++i) { for (uint i= 0; i < field->table->s->fields; ++i) {
const Field* base_field = field->table->field[i]; const Field* base_field = field->table->field[i];
if (!base_field->vcol_info if (base_field->stored_in_db()
&& bitmap_is_set(&field->table->tmp_set, i)) { && bitmap_is_set(&field->table->tmp_set, i)) {
ulint z; ulint z;
for (z = 0; z < table->n_cols; z++) { for (z = 0; z < table->n_cols; z++) {
......
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