mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
merge
This commit is contained in:
@@ -475,8 +475,10 @@ drop view v1;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create view v1 as select distinct a from t1 WITH CHECK OPTION;
|
||||
create view v2 as select distinct a from t1 WITH CASCADED CHECK OPTION;
|
||||
create view v3 as select distinct a from t1 WITH LOCAL CHECK OPTION;
|
||||
ERROR HY000: CHECK OPTION on non-updatable view 'test.v1'
|
||||
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 v3 as select a from t1 WITH LOCAL CHECK OPTION;
|
||||
drop view v3 RESTRICT;
|
||||
drop view v2 CASCADE;
|
||||
drop view v1;
|
||||
@@ -1338,3 +1340,87 @@ select * from t2;
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
drop view v1;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int);
|
||||
create view v1 as select * from t1 where a < 2 with check option;
|
||||
insert into v1 values(1);
|
||||
insert into v1 values(3);
|
||||
ERROR HY000: CHECK OPTION failed 'test.v1'
|
||||
insert ignore into v1 values (2),(3),(0);
|
||||
Warnings:
|
||||
Error 1365 CHECK OPTION failed 'test.v1'
|
||||
Error 1365 CHECK OPTION failed 'test.v1'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
0
|
||||
delete from t1;
|
||||
insert into v1 SELECT 1;
|
||||
insert into v1 SELECT 3;
|
||||
ERROR HY000: CHECK OPTION failed 'test.v1'
|
||||
create table t2 (a int);
|
||||
insert into t2 values (2),(3),(0);
|
||||
insert ignore into v1 SELECT a from t2;
|
||||
Warnings:
|
||||
Error 1365 CHECK OPTION failed 'test.v1'
|
||||
Error 1365 CHECK OPTION failed 'test.v1'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
0
|
||||
update v1 set a=-1 where a=0;
|
||||
update v1 set a=2 where a=1;
|
||||
ERROR HY000: CHECK OPTION failed 'test.v1'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
-1
|
||||
update v1 set a=0 where a=0;
|
||||
insert into t2 values (1);
|
||||
update v1,t2 set v1.a=v1.a-1 where v1.a=t2.a;
|
||||
select * from t1;
|
||||
a
|
||||
0
|
||||
-1
|
||||
update v1 set a=a+1;
|
||||
update ignore v1,t2 set v1.a=v1.a+1 where v1.a=t2.a;
|
||||
Warnings:
|
||||
Error 1365 CHECK OPTION failed 'test.v1'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
1
|
||||
drop view v1;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int);
|
||||
create view v1 as select * from t1 where a < 2 with check option;
|
||||
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;
|
||||
insert into v2 values (1);
|
||||
insert into v3 values (1);
|
||||
insert into v2 values (0);
|
||||
ERROR HY000: CHECK OPTION failed 'test.v2'
|
||||
insert into v3 values (0);
|
||||
ERROR HY000: CHECK OPTION failed 'test.v3'
|
||||
insert into v2 values (2);
|
||||
insert into v3 values (2);
|
||||
ERROR HY000: CHECK OPTION failed 'test.v3'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
1
|
||||
2
|
||||
drop view v3,v2,v1;
|
||||
drop table t1;
|
||||
create table t1 (a int, primary key (a));
|
||||
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 HY000: CHECK OPTION failed 'test.v1'
|
||||
insert ignore into v1 values (1) on duplicate key update a=2;
|
||||
Warnings:
|
||||
Error 1365 CHECK OPTION failed 'test.v1'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
@@ -394,9 +394,11 @@ drop table t1;
|
||||
# syntax compatibility
|
||||
#
|
||||
create table t1 (a int);
|
||||
-- error 1364
|
||||
create view v1 as select distinct a from t1 WITH CHECK OPTION;
|
||||
create view v2 as select distinct a from t1 WITH CASCADED CHECK OPTION;
|
||||
create view v3 as select distinct a from t1 WITH LOCAL 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 v3 as select a from t1 WITH LOCAL CHECK OPTION;
|
||||
drop view v3 RESTRICT;
|
||||
drop view v2 CASCADE;
|
||||
drop view v1;
|
||||
@@ -1308,3 +1310,80 @@ select * from v1;
|
||||
select * from t2;
|
||||
drop view v1;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# WITH CHECK OPTION insert/update test
|
||||
#
|
||||
create table t1 (a int);
|
||||
create view v1 as select * from t1 where a < 2 with check option;
|
||||
# simple insert
|
||||
insert into v1 values(1);
|
||||
-- error 1365
|
||||
insert into v1 values(3);
|
||||
# simple insert with ignore
|
||||
insert ignore into v1 values (2),(3),(0);
|
||||
select * from t1;
|
||||
# prepare data for next check
|
||||
delete from t1;
|
||||
# INSERT SELECT test
|
||||
insert into v1 SELECT 1;
|
||||
-- error 1365
|
||||
insert into v1 SELECT 3;
|
||||
# prepare data for next check
|
||||
create table t2 (a int);
|
||||
insert into t2 values (2),(3),(0);
|
||||
# INSERT SELECT with ignore test
|
||||
insert ignore into v1 SELECT a from t2;
|
||||
select * from t1;
|
||||
#simple UPDATE test
|
||||
update v1 set a=-1 where a=0;
|
||||
-- error 1365
|
||||
update v1 set a=2 where a=1;
|
||||
select * from t1;
|
||||
# prepare data for next check
|
||||
update v1 set a=0 where a=0;
|
||||
insert into t2 values (1);
|
||||
# multiupdate test
|
||||
update v1,t2 set v1.a=v1.a-1 where v1.a=t2.a;
|
||||
select * from t1;
|
||||
# prepare data for next check
|
||||
update v1 set a=a+1;
|
||||
# multiupdate with ignore test
|
||||
update ignore v1,t2 set v1.a=v1.a+1 where v1.a=t2.a;
|
||||
select * from t1;
|
||||
|
||||
drop view v1;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# CASCADED/LOCAL CHECK OPTION test
|
||||
#
|
||||
create table t1 (a int);
|
||||
create view v1 as select * from t1 where a < 2 with check option;
|
||||
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;
|
||||
insert into v2 values (1);
|
||||
insert into v3 values (1);
|
||||
-- error 1365
|
||||
insert into v2 values (0);
|
||||
-- error 1365
|
||||
insert into v3 values (0);
|
||||
insert into v2 values (2);
|
||||
-- error 1365
|
||||
insert into v3 values (2);
|
||||
select * from t1;
|
||||
drop view v3,v2,v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# CHECK OPTION with INSERT ... ON DUPLICATE KEY UPDATE
|
||||
#
|
||||
create table t1 (a int, primary key (a));
|
||||
create view v1 as select * from t1 where a < 2 with check option;
|
||||
insert into v1 values (1) on duplicate key update a=2;
|
||||
-- error 1365
|
||||
insert 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;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user