summaryrefslogtreecommitdiff
path: root/sql/sql_partition.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2018-04-11 16:23:49 +0200
committerSergei Golubchik <serg@mariadb.org>2018-05-10 12:48:23 +0200
commit88a0bb83dfa1746571c99503f1cfd586f63e9a17 (patch)
tree53d85af13bd9fac14e20cf098c159ae8ce4a87a0 /sql/sql_partition.cc
parent8ba0eea65cd7cc02314a9e1ab954808d16461888 (diff)
downloadmariadb-git-88a0bb83dfa1746571c99503f1cfd586f63e9a17.tar.gz
MDEV-15626 Assertion on update virtual column in partitioned table
table.cc: virtual columns must be computed for INSERT, if they're part of the partitioning expression. this change broke gcol.gcol_partition_innodb. fix CHECK TABLE for partitioned tables and vcols. sql_partition.cc: mark prerequisite base columns in full_part_field_set ha_partition.cc initialize vcol_set accordingly
Diffstat (limited to 'sql/sql_partition.cc')
-rw-r--r--sql/sql_partition.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index 536c436475f..4c91f781c2e 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -614,9 +614,16 @@ static bool create_full_part_field_array(THD *thd, TABLE *table,
full_part_field_array may be NULL if storage engine supports native
partitioning.
*/
+ table->vcol_set= table->read_set= &part_info->full_part_field_set;
if ((ptr= part_info->full_part_field_array))
for (; *ptr; ptr++)
- bitmap_set_bit(&part_info->full_part_field_set, (*ptr)->field_index);
+ {
+ if ((*ptr)->vcol_info)
+ table->mark_virtual_col(*ptr);
+ else
+ bitmap_fast_test_and_set(table->read_set, (*ptr)->field_index);
+ }
+ table->default_column_bitmaps();
end:
DBUG_RETURN(result);