mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Bug#57904 - Only one INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS was displayed
per table from Innodb
This commit is contained in:
parent
4c28bc8671
commit
a63c14e9a6
3 changed files with 69 additions and 1 deletions
41
mysql-test/suite/innodb/r/innodb_bug57904.result
Executable file
41
mysql-test/suite/innodb/r/innodb_bug57904.result
Executable file
|
@ -0,0 +1,41 @@
|
|||
CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,
|
||||
price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB;
|
||||
CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,
|
||||
product_category INT NOT NULL,
|
||||
product_id INT NOT NULL,
|
||||
customer_id INT NOT NULL,
|
||||
PRIMARY KEY(no),
|
||||
INDEX (product_category, product_id),
|
||||
FOREIGN KEY (product_category, product_id)
|
||||
REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT,
|
||||
INDEX (customer_id),
|
||||
FOREIGN KEY (customer_id)
|
||||
REFERENCES customer(id)
|
||||
) ENGINE=INNODB;
|
||||
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
|
||||
CONSTRAINT_CATALOG def
|
||||
CONSTRAINT_SCHEMA test
|
||||
CONSTRAINT_NAME product_order_ibfk_1
|
||||
UNIQUE_CONSTRAINT_CATALOG def
|
||||
UNIQUE_CONSTRAINT_SCHEMA test
|
||||
UNIQUE_CONSTRAINT_NAME PRIMARY
|
||||
MATCH_OPTION NONE
|
||||
UPDATE_RULE CASCADE
|
||||
DELETE_RULE RESTRICT
|
||||
TABLE_NAME product_order
|
||||
REFERENCED_TABLE_NAME pro
|
||||
CONSTRAINT_CATALOG def
|
||||
CONSTRAINT_SCHEMA test
|
||||
CONSTRAINT_NAME product_order_ibfk_2
|
||||
UNIQUE_CONSTRAINT_CATALOG def
|
||||
UNIQUE_CONSTRAINT_SCHEMA test
|
||||
UNIQUE_CONSTRAINT_NAME PRIMARY
|
||||
MATCH_OPTION NONE
|
||||
UPDATE_RULE RESTRICT
|
||||
DELETE_RULE RESTRICT
|
||||
TABLE_NAME product_order
|
||||
REFERENCED_TABLE_NAME cus
|
||||
DROP TABLE product_order;
|
||||
DROP TABLE product;
|
||||
DROP TABLE customer;
|
27
mysql-test/suite/innodb/t/innodb_bug57904.test
Executable file
27
mysql-test/suite/innodb/t/innodb_bug57904.test
Executable file
|
@ -0,0 +1,27 @@
|
|||
#
|
||||
# Bug #57904 Missing constraint from information schema REFERENTIAL_CONSTRAINTS table
|
||||
#
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,
|
||||
price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB;
|
||||
CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,
|
||||
product_category INT NOT NULL,
|
||||
product_id INT NOT NULL,
|
||||
customer_id INT NOT NULL,
|
||||
PRIMARY KEY(no),
|
||||
INDEX (product_category, product_id),
|
||||
FOREIGN KEY (product_category, product_id)
|
||||
REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT,
|
||||
INDEX (customer_id),
|
||||
FOREIGN KEY (customer_id)
|
||||
REFERENCES customer(id)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
query_vertical SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
|
||||
|
||||
DROP TABLE product_order;
|
||||
DROP TABLE product;
|
||||
DROP TABLE customer;
|
||||
|
|
@ -8482,7 +8482,7 @@ ha_innobase::get_foreign_key_list(
|
|||
|
||||
for (foreign = UT_LIST_GET_FIRST(prebuilt->table->foreign_list);
|
||||
foreign != NULL;
|
||||
foreign = UT_LIST_GET_NEXT(referenced_list, foreign)) {
|
||||
foreign = UT_LIST_GET_NEXT(foreign_list, foreign)) {
|
||||
pf_key_info = get_foreign_key_info(thd, foreign);
|
||||
if (pf_key_info) {
|
||||
f_key_list->push_back(pf_key_info);
|
||||
|
|
Loading…
Reference in a new issue