Commit 4b00f6b9 authored by unknown's avatar unknown

postmerge fix

parent dc85fce0
...@@ -1347,8 +1347,8 @@ insert into v1 values(3); ...@@ -1347,8 +1347,8 @@ insert into v1 values(3);
ERROR HY000: CHECK OPTION failed 'test.v1' ERROR HY000: CHECK OPTION failed 'test.v1'
insert ignore into v1 values (2),(3),(0); insert ignore into v1 values (2),(3),(0);
Warnings: Warnings:
Error 1359 CHECK OPTION failed 'test.v1' Error 1365 CHECK OPTION failed 'test.v1'
Error 1359 CHECK OPTION failed 'test.v1' Error 1365 CHECK OPTION failed 'test.v1'
select * from t1; select * from t1;
a a
1 1
...@@ -1361,8 +1361,8 @@ create table t2 (a int); ...@@ -1361,8 +1361,8 @@ create table t2 (a int);
insert into t2 values (2),(3),(0); insert into t2 values (2),(3),(0);
insert ignore into v1 SELECT a from t2; insert ignore into v1 SELECT a from t2;
Warnings: Warnings:
Error 1359 CHECK OPTION failed 'test.v1' Error 1365 CHECK OPTION failed 'test.v1'
Error 1359 CHECK OPTION failed 'test.v1' Error 1365 CHECK OPTION failed 'test.v1'
select * from t1; select * from t1;
a a
1 1
...@@ -1384,7 +1384,7 @@ a ...@@ -1384,7 +1384,7 @@ a
update v1 set a=a+1; update v1 set a=a+1;
update ignore v1,t2 set v1.a=v1.a+1 where v1.a=t2.a; update ignore v1,t2 set v1.a=v1.a+1 where v1.a=t2.a;
Warnings: Warnings:
Error 1359 CHECK OPTION failed 'test.v1' Error 1365 CHECK OPTION failed 'test.v1'
select * from t1; select * from t1;
a a
1 1
...@@ -1418,7 +1418,7 @@ insert into v1 values (1) on duplicate key update a=2; ...@@ -1418,7 +1418,7 @@ insert into v1 values (1) on duplicate key update a=2;
ERROR HY000: CHECK OPTION failed 'test.v1' ERROR HY000: CHECK OPTION failed 'test.v1'
insert ignore into v1 values (1) on duplicate key update a=2; insert ignore into v1 values (1) on duplicate key update a=2;
Warnings: Warnings:
Error 1359 CHECK OPTION failed 'test.v1' Error 1365 CHECK OPTION failed 'test.v1'
select * from t1; select * from t1;
a a
1 1
......
...@@ -394,7 +394,7 @@ drop table t1; ...@@ -394,7 +394,7 @@ drop table t1;
# syntax compatibility # syntax compatibility
# #
create table t1 (a int); create table t1 (a int);
-- error 1358 -- error 1364
create view v1 as select distinct a from t1 WITH CHECK OPTION; create view v1 as select distinct a from t1 WITH CHECK OPTION;
create view v1 as select a from t1 WITH CHECK OPTION; create view v1 as select a from t1 WITH CHECK OPTION;
create view v2 as select a from t1 WITH CASCADED CHECK OPTION; create view v2 as select a from t1 WITH CASCADED CHECK OPTION;
...@@ -1318,7 +1318,7 @@ create table t1 (a int); ...@@ -1318,7 +1318,7 @@ create table t1 (a int);
create view v1 as select * from t1 where a < 2 with check option; create view v1 as select * from t1 where a < 2 with check option;
# simple insert # simple insert
insert into v1 values(1); insert into v1 values(1);
-- error 1359 -- error 1365
insert into v1 values(3); insert into v1 values(3);
# simple insert with ignore # simple insert with ignore
insert ignore into v1 values (2),(3),(0); insert ignore into v1 values (2),(3),(0);
...@@ -1327,7 +1327,7 @@ select * from t1; ...@@ -1327,7 +1327,7 @@ select * from t1;
delete from t1; delete from t1;
# INSERT SELECT test # INSERT SELECT test
insert into v1 SELECT 1; insert into v1 SELECT 1;
-- error 1359 -- error 1365
insert into v1 SELECT 3; insert into v1 SELECT 3;
# prepare data for next check # prepare data for next check
create table t2 (a int); create table t2 (a int);
...@@ -1337,7 +1337,7 @@ insert ignore into v1 SELECT a from t2; ...@@ -1337,7 +1337,7 @@ insert ignore into v1 SELECT a from t2;
select * from t1; select * from t1;
#simple UPDATE test #simple UPDATE test
update v1 set a=-1 where a=0; update v1 set a=-1 where a=0;
-- error 1359 -- error 1365
update v1 set a=2 where a=1; update v1 set a=2 where a=1;
select * from t1; select * from t1;
# prepare data for next check # prepare data for next check
...@@ -1364,12 +1364,12 @@ create view v2 as select * from v1 where a > 0 with local check option; ...@@ -1364,12 +1364,12 @@ create view v2 as select * from v1 where a > 0 with local check option;
create view v3 as select * from v1 where a > 0 with cascaded check option; create view v3 as select * from v1 where a > 0 with cascaded check option;
insert into v2 values (1); insert into v2 values (1);
insert into v3 values (1); insert into v3 values (1);
-- error 1359 -- error 1365
insert into v2 values (0); insert into v2 values (0);
-- error 1359 -- error 1365
insert into v3 values (0); insert into v3 values (0);
insert into v2 values (2); insert into v2 values (2);
-- error 1359 -- error 1365
insert into v3 values (2); insert into v3 values (2);
select * from t1; select * from t1;
drop view v3,v2,v1; drop view v3,v2,v1;
...@@ -1381,7 +1381,7 @@ drop table t1; ...@@ -1381,7 +1381,7 @@ drop table t1;
create table t1 (a int, primary key (a)); create table t1 (a int, primary key (a));
create view v1 as select * from t1 where a < 2 with check option; create view v1 as select * from t1 where a < 2 with check option;
insert into v1 values (1) on duplicate key update a=2; insert into v1 values (1) on duplicate key update a=2;
-- error 1359 -- error 1365
insert into v1 values (1) on duplicate key update a=2; insert into v1 values (1) on duplicate key update a=2;
insert ignore into v1 values (1) on duplicate key update a=2; insert ignore into v1 values (1) on duplicate key update a=2;
select * from t1; select * from t1;
......
...@@ -1602,16 +1602,23 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds) ...@@ -1602,16 +1602,23 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds)
check_option= and_conds(check_option, ancestor->check_option); check_option= and_conds(check_option, ancestor->check_option);
} }
} }
/*
check that it is not VIEW in which we insert with INSERT SELECT
(in this case we can't add view WHERE condition to main SELECT_LEX)
*/
if (!no_where_clause)
{
/* Go up to join tree and try to find left join */ /* Go up to join tree and try to find left join */
for (; tbl; tbl= tbl->embedding) for (; tbl; tbl= tbl->embedding)
{ {
if (tbl->outer_join) if (tbl->outer_join)
{ {
/* /*
Store WHERE condition to ON expression for outer join, because we Store WHERE condition to ON expression for outer join, because
can't use WHERE to correctly execute jeft joins on VIEWs and this we can't use WHERE to correctly execute jeft joins on VIEWs and
expression will not be moved to WHERE condition (i.e. will be clean this expression will not be moved to WHERE condition (i.e. will
correctly for PS/SP) be clean correctly for PS/SP)
*/ */
tbl->on_expr= and_conds(tbl->on_expr, where); tbl->on_expr= and_conds(tbl->on_expr, where);
break; break;
...@@ -1622,10 +1629,10 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds) ...@@ -1622,10 +1629,10 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds)
if (outer_join) if (outer_join)
{ {
/* /*
Store WHERE condition to ON expression for outer join, because we Store WHERE condition to ON expression for outer join, because
can't use WHERE to correctly execute jeft joins on VIEWs and this we can't use WHERE to correctly execute jeft joins on VIEWs and
expression will not be moved to WHERE condition (i.e. will be this expression will not be moved to WHERE condition (i.e. will
clean correctly for PS/SP) be clean correctly for PS/SP)
*/ */
on_expr= and_conds(on_expr, where); on_expr= and_conds(on_expr, where);
} }
...@@ -1638,6 +1645,7 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds) ...@@ -1638,6 +1645,7 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds)
*conds= and_conds(*conds, where); *conds= and_conds(*conds, where);
} }
} }
}
if (arena) if (arena)
thd->restore_backup_item_arena(arena, &backup); thd->restore_backup_item_arena(arena, &backup);
......
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