summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-07-25 17:57:31 +0200
committerSergei Golubchik <serg@mariadb.org>2016-08-27 16:59:13 +0200
commit7450cb7f69db801c48f806748e666c393b8d6b81 (patch)
treeae408cffb6225d4bf7c8ceb764c5a86d7ff71034 /sql/item.cc
parentcd51c7fb60e39ae113e6bcf0d029564dd1b391e3 (diff)
downloadmariadb-git-7450cb7f69db801c48f806748e666c393b8d6b81.tar.gz
re-fix vcols on demand, not always for every SELECT
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/item.cc b/sql/item.cc
index b955457cf32..5da95b05b2f 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -5219,6 +5219,8 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
}
#endif
fixed= 1;
+ if (field->vcol_info)
+ fix_session_vcol_expr_for_read(thd, field, field->vcol_info);
if (thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY &&
!outer_fixed && !thd->lex->in_sum_func &&
thd->lex->current_select->cur_pos_in_select_list != UNDEF_POS &&
@@ -8231,6 +8233,7 @@ bool Item_default_value::fix_fields(THD *thd, Item **items)
set_field(def_field);
if (field->default_value)
{
+ fix_session_vcol_expr_for_read(thd, field, field->default_value);
if (thd->mark_used_columns != MARK_COLUMNS_NONE)
field->default_value->expr_item->walk(&Item::register_field_in_read_map, 1, 0);
IF_DBUG(def_field->is_stat_field=1,); // a hack to fool ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED