mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| --source include/have_innodb.inc
 | |
| --source include/not_embedded.inc
 | |
| --echo #
 | |
| --echo # MDEV-14474: Create INFORMATION_SCHEMA.CHECK_CONSTRAINTS
 | |
| --echo #
 | |
| 
 | |
| CREATE user boo1;
 | |
| GRANT select,create,alter,drop on foo.* to boo1;
 | |
| SHOW GRANTS for boo1;
 | |
| CREATE user boo2;
 | |
| create database foo;
 | |
| # Connect with user boo1
 | |
| CONNECT(con1,localhost, boo1,, foo);
 | |
| 
 | |
| SET check_constraint_checks=1;
 | |
| CREATE TABLE t0
 | |
| (
 | |
|  t int, check (t>32) # table constraint
 | |
| ) ENGINE=myisam;
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| ALTER TABLE t0
 | |
| ADD CONSTRAINT CHK_t0_t CHECK(t<100);
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| ALTER TABLE t0
 | |
| DROP CONSTRAINT CHK_t0_t;
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| ALTER TABLE t0
 | |
| ADD CONSTRAINT CHECK(t<50);
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| CREATE TABLE t1
 | |
| ( t int CHECK(t>2), # field 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;
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| ALTER TABLE t1
 | |
| DROP CONSTRAINT CHK_tt;
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| 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;
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| ALTER TABLE t1
 | |
| ADD CONSTRAINT CHK_new_ CHECK(t>tt);
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| # Create table with same field and table check constraint name
 | |
| CREATE TABLE t3
 | |
| (
 | |
| a int,
 | |
| b int check (b>0), # field constraint named 'b'
 | |
| CONSTRAINT b check (b>10), # table constraint
 | |
| # `CHECK_CLAUSE` should allow more then `var(64)` constraints
 | |
| CONSTRAINT b1 check (b<123456789012345678901234567890123456789012345678901234567890123456789)
 | |
| ) ENGINE=InnoDB;
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| DISCONNECT con1;
 | |
| CONNECT(con2, localhost, boo2,,"*NO-ONE*");
 | |
| --sorted_result
 | |
| SELECT * from information_schema.check_constraints;
 | |
| 
 | |
| 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;
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-18440: Information_schema.check_constraints possible data leak
 | |
| --echo #
 | |
| 
 | |
| 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;
 | |
| --sorted_result
 | |
| SELECT * FROM information_schema.check_constraints;
 | |
| 
 | |
| CONNECT(con1,localhost, foo,, db);
 | |
| SELECT a FROM t1;
 | |
| --sorted_result
 | |
| SELECT * FROM information_schema.check_constraints;
 | |
| 
 | |
| --CONNECTION default
 | |
| 
 | |
| DROP USER foo;
 | |
| DROP DATABASE db;
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-24601: INFORMATION_SCHEMA doesn't differentiate between
 | |
| --echo #             column and table-level CHECK constraints
 | |
| --echo #
 | |
| 
 | |
| # Mix of table (>0) and field (<0) constraints
 | |
| # Note that there are 2 constraints `t2` - this is not allowed MDEV-24601
 | |
| use test;
 | |
| create table t(check (t0>0),
 | |
|                t0 int,
 | |
|                t1 int check (t1<0),
 | |
|                t2 int check (t2<-1),
 | |
|                CONSTRAINT tc_1 check(t1 > 1),
 | |
|                CONSTRAINT t2 check(t2 > 1));
 | |
| show create table t;
 | |
| --sorted_result
 | |
| select * from information_schema.table_constraints where CONSTRAINT_TYPE='CHECK';
 | |
| --sorted_result
 | |
| select * from information_schema.check_constraints;
 | |
| drop table t;
 | 
