mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
119 lines
4 KiB
Text
119 lines
4 KiB
Text
-- source include/testdb_only.inc
|
|
-- source include/have_innodb.inc
|
|
-- source include/have_symlink.inc
|
|
|
|
#
|
|
# Test for KEY_COLUMN_USAGE & TABLE_CONSTRAINTS tables
|
|
#
|
|
|
|
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
|
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id, id),
|
|
FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (t1_id) REFERENCES t1(id) ON UPDATE CASCADE) ENGINE=INNODB;
|
|
|
|
CREATE TABLE t3 (id INT PRIMARY KEY, t2_id INT, INDEX par_ind (t2_id),
|
|
FOREIGN KEY (id, t2_id) REFERENCES t2(t1_id, id) ON DELETE CASCADE) ENGINE=INNODB;
|
|
|
|
--sorted_result
|
|
select * from information_schema.TABLE_CONSTRAINTS where
|
|
TABLE_SCHEMA= "test";
|
|
--sorted_result
|
|
select * from information_schema.KEY_COLUMN_USAGE where
|
|
TABLE_SCHEMA= "test";
|
|
|
|
drop table t3, t2, t1;
|
|
|
|
#
|
|
# Test for REFERENTIAL_CONSTRAINTS table
|
|
#
|
|
CREATE TABLE t1(a1 INT NOT NULL, a2 INT NOT NULL,
|
|
PRIMARY KEY(a1, a2)) ENGINE=INNODB;
|
|
CREATE TABLE t2(b1 INT, b2 INT, INDEX (b1, b2),
|
|
CONSTRAINT A1
|
|
FOREIGN KEY (b1, b2) REFERENCES t1(a1, a2)
|
|
ON UPDATE CASCADE ON DELETE NO ACTION) ENGINE=INNODB;
|
|
CREATE TABLE t3(b1 INT, b2 INT, INDEX t3_indx (b1, b2),
|
|
CONSTRAINT A2
|
|
FOREIGN KEY (b1, b2) REFERENCES t2(b1, b2)
|
|
ON UPDATE SET NULL ON DELETE RESTRICT) ENGINE=INNODB;
|
|
CREATE TABLE t4(b1 INT, b2 INT, UNIQUE KEY t4_ukey (b1, b2),
|
|
CONSTRAINT A3
|
|
FOREIGN KEY (b1, b2) REFERENCES t3(b1, b2)
|
|
ON UPDATE NO ACTION ON DELETE SET NULL) ENGINE=INNODB;
|
|
CREATE TABLE t5(b1 INT, b2 INT, INDEX (b1, b2),
|
|
CONSTRAINT A4
|
|
FOREIGN KEY (b1, b2) REFERENCES t4(b1, b2)
|
|
ON UPDATE RESTRICT ON DELETE CASCADE) ENGINE=INNODB;
|
|
|
|
--sorted_result
|
|
select a.CONSTRAINT_SCHEMA, b.TABLE_NAME, CONSTRAINT_TYPE,
|
|
b.CONSTRAINT_NAME, UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME,
|
|
MATCH_OPTION, UPDATE_RULE, DELETE_RULE, b.REFERENCED_TABLE_NAME
|
|
from information_schema.TABLE_CONSTRAINTS a,
|
|
information_schema.REFERENTIAL_CONSTRAINTS b
|
|
where a.CONSTRAINT_SCHEMA = 'test' and a.CONSTRAINT_SCHEMA = b.CONSTRAINT_SCHEMA and
|
|
a.CONSTRAINT_NAME = b.CONSTRAINT_NAME;
|
|
drop tables t5, t4, t3, t2, t1;
|
|
|
|
#
|
|
# Bug#25026 `information_schema.KEY_COLUMN_USAGE`.`REFERENCED_TABLE_NAME` returns garbage
|
|
#
|
|
create database `db-1`;
|
|
use `db-1`;
|
|
create table `t-2` (
|
|
id int(10) unsigned not null auto_increment,
|
|
primary key (id)
|
|
) engine=innodb;
|
|
|
|
create table `t-1` (
|
|
id int(10) unsigned not null auto_increment,
|
|
idtype int(10) unsigned not null,
|
|
primary key (id),
|
|
key fk_t1_1 (idtype),
|
|
constraint fk_t1_1 foreign key (idtype) references `t-2` (id)
|
|
) engine=innodb;
|
|
use test;
|
|
select referenced_table_schema, referenced_table_name
|
|
from information_schema.key_column_usage
|
|
where constraint_schema = 'db-1'
|
|
order by referenced_table_schema, referenced_table_name;
|
|
drop database `db-1`;
|
|
|
|
#
|
|
# Bug#35108 SELECT FROM REFERENTIAL_CONSTRAINTS crashes
|
|
#
|
|
create table t1(id int primary key) engine = Innodb;
|
|
create table t2(pid int, foreign key (pid) references t1(id)) engine = Innodb;
|
|
set foreign_key_checks = 0;
|
|
drop table t1;
|
|
select UNIQUE_CONSTRAINT_NAME
|
|
from information_schema.referential_constraints
|
|
where constraint_schema = schema();
|
|
drop table t2;
|
|
set foreign_key_checks = 1;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug#55973 Assertion `thd->transaction.stmt.is_empty()'
|
|
--echo # on CREATE TABLE .. SELECT I_S.PART
|
|
--echo #
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
DROP VIEW IF EXISTS v1;
|
|
--enable_warnings
|
|
|
|
CREATE VIEW v1 AS SELECT 1;
|
|
# This used to case an assert.
|
|
CREATE TABLE t1 engine = InnoDB AS
|
|
SELECT * FROM information_schema.partitions
|
|
WHERE table_schema= 'test' AND table_name= 'v1';
|
|
|
|
DROP TABLE t1;
|
|
DROP VIEW v1;
|
|
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
eval CREATE TABLE t1(i int) ENGINE=Innodb ROW_FORMAT=REDUNDANT DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp';
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME='t1';
|
|
DROP TABLE t1;
|