mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#57904 - Only one INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS was displayed
per table from Innodb
This commit is contained in:
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);
|
for (foreign = UT_LIST_GET_FIRST(prebuilt->table->foreign_list);
|
||||||
foreign != NULL;
|
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);
|
pf_key_info = get_foreign_key_info(thd, foreign);
|
||||||
if (pf_key_info) {
|
if (pf_key_info) {
|
||||||
f_key_list->push_back(pf_key_info);
|
f_key_list->push_back(pf_key_info);
|
||||||
|
Reference in New Issue
Block a user