diff options
author | unknown <kevin.lewis@oracle.com> | 2010-11-02 10:03:14 -0500 |
---|---|---|
committer | unknown <kevin.lewis@oracle.com> | 2010-11-02 10:03:14 -0500 |
commit | a63c14e9a6b4d2d2cccf302cc0e6e03f97ef0d02 (patch) | |
tree | 3d24db4bbf7b8f19a366507678b179734bc0065b | |
parent | 4c28bc86712d6dea4132b629adaf235e60fff55b (diff) | |
download | mariadb-git-a63c14e9a6b4d2d2cccf302cc0e6e03f97ef0d02.tar.gz |
Bug#57904 - Only one INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS was displayed
per table from Innodb
-rwxr-xr-x | mysql-test/suite/innodb/r/innodb_bug57904.result | 41 | ||||
-rwxr-xr-x | mysql-test/suite/innodb/t/innodb_bug57904.test | 27 | ||||
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 2 |
3 files changed, 69 insertions, 1 deletions
diff --git a/mysql-test/suite/innodb/r/innodb_bug57904.result b/mysql-test/suite/innodb/r/innodb_bug57904.result new file mode 100755 index 00000000000..c3e980a6cf4 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug57904.result @@ -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; diff --git a/mysql-test/suite/innodb/t/innodb_bug57904.test b/mysql-test/suite/innodb/t/innodb_bug57904.test new file mode 100755 index 00000000000..d283ad11c3a --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug57904.test @@ -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; + diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index c955f807a63..1a2e26ba1ab 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -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); |