-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
223 additions
and
372 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
235 changes: 119 additions & 116 deletions
235
mysql-test/suite/funcs_1/r/is_check_constraints.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,144 +1,147 @@ | ||
# | ||
# MDEV-14474: Create INFORMATION_SCHEMA.CHECK_CONSTRAINTS | ||
# | ||
set check_constraint_checks=1; | ||
use test; | ||
create table t0 | ||
CREATE user boo1; | ||
GRANT select,create,alter,drop on foo.* to boo1; | ||
SHOW GRANTS for boo1; | ||
Grants for boo1@% | ||
GRANT USAGE ON *.* TO 'boo1'@'%' | ||
GRANT SELECT, CREATE, DROP, ALTER ON `foo`.* TO 'boo1'@'%' | ||
CREATE user boo2; | ||
create database foo; | ||
CONNECT con1,localhost, boo1,, foo; | ||
SET check_constraint_checks=1; | ||
CREATE TABLE t0 | ||
( | ||
t int, check (t>32) # table constraint | ||
) ENGINE=myisam; | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
ALTER TABLE t0 | ||
ADD CONSTRAINT CHK_t0_t CHECK(t<100); | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CHK_t0_t | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` < 100 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CHK_t0_t `t` < 100 | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
ALTER TABLE t0 | ||
DROP CONSTRAINT CHK_t0_t; | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
ALTER TABLE t0 | ||
ADD CONSTRAINT CHECK(t<50); | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
def foo t0 CONSTRAINT_2 `t` < 50 | ||
CREATE TABLE t1 | ||
( t int CHECK(t>2), # field constraint | ||
tt int, CONSTRAINT CHK_tt CHECK(tt<100) # table constraint | ||
tt int, | ||
CONSTRAINT CHECK (tt > 32), CONSTRAINT CHECK (tt <50),# autogenerated names table constraints | ||
CONSTRAINT CHK_tt CHECK(tt<100) # named table constraint | ||
) ENGINE=InnoDB; | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CHK_tt | ||
TABLE_NAME t1 | ||
CHECK_CLAUSE `tt` < 100 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME t | ||
TABLE_NAME t1 | ||
CHECK_CLAUSE `t` > 2 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
def foo t0 CONSTRAINT_2 `t` < 50 | ||
def foo t1 CHK_tt `tt` < 100 | ||
def foo t1 CONSTRAINT_1 `tt` > 32 | ||
def foo t1 CONSTRAINT_2 `tt` < 50 | ||
def foo t1 t `t` > 2 | ||
ALTER TABLE t1 | ||
DROP CONSTRAINT CHK_tt; | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME t | ||
TABLE_NAME t1 | ||
CHECK_CLAUSE `t` > 2 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
create table t2 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
def foo t0 CONSTRAINT_2 `t` < 50 | ||
def foo t1 CONSTRAINT_1 `tt` > 32 | ||
def foo t1 CONSTRAINT_2 `tt` < 50 | ||
def foo t1 t `t` > 2 | ||
CREATE TABLE t2 | ||
( | ||
name VARCHAR(30) CHECK(CHAR_LENGTH(name)>2), #field constraint | ||
start_date DATE, | ||
end_date DATE, | ||
CONSTRAINT CHK_dates CHECK(start_date IS NULL) #table constraint | ||
)ENGINE=Innodb; | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME name | ||
TABLE_NAME t2 | ||
CHECK_CLAUSE char_length(`name`) > 2 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CHK_dates | ||
TABLE_NAME t2 | ||
CHECK_CLAUSE `start_date` is null | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME t | ||
TABLE_NAME t1 | ||
CHECK_CLAUSE `t` > 2 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
def foo t0 CONSTRAINT_2 `t` < 50 | ||
def foo t1 CONSTRAINT_1 `tt` > 32 | ||
def foo t1 CONSTRAINT_2 `tt` < 50 | ||
def foo t1 t `t` > 2 | ||
def foo t2 CHK_dates `start_date` is null | ||
def foo t2 name char_length(`name`) > 2 | ||
ALTER TABLE t1 | ||
ADD CONSTRAINT CHK_new_ CHECK(t>tt); | ||
SELECT * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME name | ||
TABLE_NAME t2 | ||
CHECK_CLAUSE char_length(`name`) > 2 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CHK_dates | ||
TABLE_NAME t2 | ||
CHECK_CLAUSE `start_date` is null | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME t | ||
TABLE_NAME t1 | ||
CHECK_CLAUSE `t` > 2 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CONSTRAINT_1 | ||
TABLE_NAME t0 | ||
CHECK_CLAUSE `t` > 32 | ||
CONSTRAINT_CATALOG def | ||
CONSTRAINT_SCHEMA test | ||
CONSTRAINT_NAME CHK_new_ | ||
TABLE_NAME t1 | ||
CHECK_CLAUSE `t` > `tt` | ||
create table t3 | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
def foo t0 CONSTRAINT_2 `t` < 50 | ||
def foo t1 CHK_new_ `t` > `tt` | ||
def foo t1 CONSTRAINT_1 `tt` > 32 | ||
def foo t1 CONSTRAINT_2 `tt` < 50 | ||
def foo t1 t `t` > 2 | ||
def foo t2 CHK_dates `start_date` is null | ||
def foo t2 name char_length(`name`) > 2 | ||
CREATE TABLE t3 | ||
( | ||
a int, | ||
b int check (b>0), # field constraint named 'b' | ||
CONSTRAINT b check (b>10) # table constraint | ||
) ENGINE=InnoDB; | ||
select * from information_schema.check_constraints order by check_clause; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_NAME CHECK_CLAUSE | ||
def test name t2 char_length(`name`) > 2 | ||
def test b t3 `b` > 0 | ||
def test b t3 `b` > 10 | ||
def test CHK_dates t2 `start_date` is null | ||
def test t t1 `t` > 2 | ||
def test CONSTRAINT_1 t0 `t` > 32 | ||
def test CHK_new_ t1 `t` > `tt` | ||
drop table t0; | ||
drop table t1; | ||
drop table t2; | ||
drop table t3; | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def foo t0 CONSTRAINT_1 `t` > 32 | ||
def foo t0 CONSTRAINT_2 `t` < 50 | ||
def foo t1 CHK_new_ `t` > `tt` | ||
def foo t1 CONSTRAINT_1 `tt` > 32 | ||
def foo t1 CONSTRAINT_2 `tt` < 50 | ||
def foo t1 t `t` > 2 | ||
def foo t2 CHK_dates `start_date` is null | ||
def foo t2 name char_length(`name`) > 2 | ||
def foo t3 b `b` > 0 | ||
def foo t3 b `b` > 10 | ||
disconnect con1; | ||
CONNECT con2, localhost, boo2,, test; | ||
SELECT * from information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
disconnect con2; | ||
CONNECT con1, localhost, boo1,,foo; | ||
DROP TABLE t0; | ||
DROP TABLE t1; | ||
DROP TABLE t2; | ||
DROP TABLE t3; | ||
DROP DATABASE foo; | ||
disconnect con1; | ||
connection default; | ||
DROP USER boo1; | ||
DROP USER boo2; | ||
# | ||
# MDEV-18440: Information_schema.check_constraints possible data leak | ||
# | ||
CREATE USER foo; | ||
CREATE DATABASE db; | ||
USE db; | ||
CREATE TABLE t1 (a int, b int, CONSTRAINT CHECK (b > 0)); | ||
INSERT INTO t1 VALUES (1, 2), (2, 3); | ||
GRANT SELECT (a) ON t1 TO foo; | ||
SHOW GRANTS FOR foo; | ||
Grants for foo@% | ||
GRANT USAGE ON *.* TO 'foo'@'%' | ||
GRANT SELECT (a) ON `db`.`t1` TO 'foo'@'%' | ||
SELECT * FROM information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
def db t1 CONSTRAINT_1 `b` > 0 | ||
CONNECT con1,localhost, foo,, db; | ||
SELECT a FROM t1; | ||
a | ||
1 | ||
2 | ||
SELECT * FROM information_schema.check_constraints; | ||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE | ||
connection default; | ||
DROP USER foo; | ||
DROP DATABASE db; |
Oops, something went wrong.