Commit 33ec4459 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-10370 Check constraints on virtual columns fails on INSERT when column not specified

add columns needed for CHECK constraints not only to read_set,
but also to vcol_set.
parent 1216244e
...@@ -131,3 +131,8 @@ t1 CREATE TABLE `t1` ( ...@@ -131,3 +131,8 @@ t1 CREATE TABLE `t1` (
CONSTRAINT `CONSTRAINT_2` CHECK (`a` > `b`) CONSTRAINT `CONSTRAINT_2` CHECK (`a` > `b`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
create table t1(c1 int, c2 int as (c1 + 1), check (c2 > 2));
insert into t1(c1) values(1);
ERROR 23000: CONSTRAINT `CONSTRAINT_1` failed for `test`.`t1`
insert into t1(c1) values(2);
drop table t1;
...@@ -69,3 +69,12 @@ create or replace table t1 (a int, b int, ...@@ -69,3 +69,12 @@ create or replace table t1 (a int, b int,
constraint CONSTRAINT_2 check (a>b)); constraint CONSTRAINT_2 check (a>b));
show create table t1; show create table t1;
drop table t1; drop table t1;
#
# MDEV-10370 Check constraints on virtual columns fails on INSERT when column not specified
#
create table t1(c1 int, c2 int as (c1 + 1), check (c2 > 2));
--error ER_CONSTRAINT_FAILED
insert into t1(c1) values(1);
insert into t1(c1) values(2);
drop table t1;
...@@ -6605,6 +6605,8 @@ void TABLE::mark_columns_used_by_check_constraints(void) ...@@ -6605,6 +6605,8 @@ void TABLE::mark_columns_used_by_check_constraints(void)
void TABLE::mark_check_constraint_columns_for_read(void) void TABLE::mark_check_constraint_columns_for_read(void)
{ {
bitmap_union(read_set, s->check_set); bitmap_union(read_set, s->check_set);
if (vcol_set)
bitmap_union(vcol_set, s->check_set);
} }
......
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