mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
PR#1127: Fix is_check_constraints.result to be compatibile with 10.3 The patch is done according to the original patch for MDEV-144741edd09c325
and not one which is merged on serverd526679efd
. This patch includes: - Rename from `is_check_constraint` to `is_check_constraints` to tests and results - Per review, change the order of fields in IS check_constraints table by adding the column `table_name` before `constraint_name`. According to the standard 2006 there is no `table_name` column. - Original patch and one in `10.3` supports embedded server this patch doesn't support. After the merge `10.3` will not support also. - Don't use patchc8b8b01b61
to change the length of `CHECK_CLAUSE` field PR#1150: MDEV-18440: Information_schema.check_constraints possible data leak This patch is extension of PR 1127 and includes: - Check for table grants - Additional test according to the MDEV specification
This commit is contained in:
committed by
Vicențiu Ciorbaru
parent
f0aa073f2b
commit
a134f1ebb1
117
mysql-test/suite/funcs_1/t/is_check_constraints.test
Normal file
117
mysql-test/suite/funcs_1/t/is_check_constraints.test
Normal file
@ -0,0 +1,117 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/not_embedded.inc
|
||||
--echo #
|
||||
--echo # MDEV-17323: Backport INFORMATION_SCHEMA.CHECK_CONSTRAINTS to 10.2
|
||||
--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
|
||||
) ENGINE=InnoDB;
|
||||
--sorted_result
|
||||
SELECT * from information_schema.check_constraints;
|
||||
|
||||
DISCONNECT con1;
|
||||
CONNECT(con2, localhost, boo2,, test);
|
||||
--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;
|
Reference in New Issue
Block a user