Skip to content

Commit 6c8163d

Browse files
author
kevin.lewis@oracle.com
committed
Bug#57904 - Only one INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS was displayed
per table from Innodb
1 parent 32af78c commit 6c8163d

File tree

3 files changed

+69
-1
lines changed

3 files changed

+69
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,
2+
price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB;
3+
CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
4+
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,
5+
product_category INT NOT NULL,
6+
product_id INT NOT NULL,
7+
customer_id INT NOT NULL,
8+
PRIMARY KEY(no),
9+
INDEX (product_category, product_id),
10+
FOREIGN KEY (product_category, product_id)
11+
REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT,
12+
INDEX (customer_id),
13+
FOREIGN KEY (customer_id)
14+
REFERENCES customer(id)
15+
) ENGINE=INNODB;
16+
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
17+
CONSTRAINT_CATALOG def
18+
CONSTRAINT_SCHEMA test
19+
CONSTRAINT_NAME product_order_ibfk_1
20+
UNIQUE_CONSTRAINT_CATALOG def
21+
UNIQUE_CONSTRAINT_SCHEMA test
22+
UNIQUE_CONSTRAINT_NAME PRIMARY
23+
MATCH_OPTION NONE
24+
UPDATE_RULE CASCADE
25+
DELETE_RULE RESTRICT
26+
TABLE_NAME product_order
27+
REFERENCED_TABLE_NAME pro
28+
CONSTRAINT_CATALOG def
29+
CONSTRAINT_SCHEMA test
30+
CONSTRAINT_NAME product_order_ibfk_2
31+
UNIQUE_CONSTRAINT_CATALOG def
32+
UNIQUE_CONSTRAINT_SCHEMA test
33+
UNIQUE_CONSTRAINT_NAME PRIMARY
34+
MATCH_OPTION NONE
35+
UPDATE_RULE RESTRICT
36+
DELETE_RULE RESTRICT
37+
TABLE_NAME product_order
38+
REFERENCED_TABLE_NAME cus
39+
DROP TABLE product_order;
40+
DROP TABLE product;
41+
DROP TABLE customer;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#
2+
# Bug #57904 Missing constraint from information schema REFERENTIAL_CONSTRAINTS table
3+
#
4+
-- source include/have_innodb.inc
5+
6+
CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,
7+
price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB;
8+
CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
9+
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,
10+
product_category INT NOT NULL,
11+
product_id INT NOT NULL,
12+
customer_id INT NOT NULL,
13+
PRIMARY KEY(no),
14+
INDEX (product_category, product_id),
15+
FOREIGN KEY (product_category, product_id)
16+
REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT,
17+
INDEX (customer_id),
18+
FOREIGN KEY (customer_id)
19+
REFERENCES customer(id)
20+
) ENGINE=INNODB;
21+
22+
query_vertical SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
23+
24+
DROP TABLE product_order;
25+
DROP TABLE product;
26+
DROP TABLE customer;
27+

storage/innobase/handler/ha_innodb.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -8459,7 +8459,7 @@ ha_innobase::get_foreign_key_list(
84598459

84608460
for (foreign = UT_LIST_GET_FIRST(prebuilt->table->foreign_list);
84618461
foreign != NULL;
8462-
foreign = UT_LIST_GET_NEXT(referenced_list, foreign)) {
8462+
foreign = UT_LIST_GET_NEXT(foreign_list, foreign)) {
84638463
pf_key_info = get_foreign_key_info(thd, foreign);
84648464
if (pf_key_info) {
84658465
f_key_list->push_back(pf_key_info);

0 commit comments

Comments
 (0)