Skip to content

Commit b9b9e0e

Browse files
committed
Bug #33814823 JDBC: Error thrown on MySQL_ConnectionMetaData::getCrossReference()
Fix the getCrossReference() , getDriverName() and getImportedKeys() on MySQL_ConnectionMetaData class so that we filter elements on join and not on where clause. Change-Id: I92f2501064b1b333b393bc20c2196996433c59b1
1 parent ca4c3f5 commit b9b9e0e

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

driver/mysql_metadata.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2201,10 +2201,11 @@ MySQL_ConnectionMetaData::getCrossReference(const sql::SQLString& primaryCatalog
22012201
" TABLE_NAME = A.REFERENCED_TABLE_NAME AND CONSTRAINT_TYPE IN ('UNIQUE','PRIMARY KEY') LIMIT 1) AS PK_NAME,");
22022202
query.append(importedKeyNotDeferrableStr);
22032203
query.append(" AS DEFERRABILITY FROM\nINFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B\n"
2204-
"USING (TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_NAME)\n");
2204+
"ON (A.TABLE_SCHEMA = B.TABLE_SCHEMA AND A.TABLE_NAME = B.TABLE_NAME AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND\n"
2205+
"B.CONSTRAINT_TYPE = 'FOREIGN KEY' AND A.REFERENCED_TABLE_SCHEMA LIKE ? AND A.REFERENCED_TABLE_NAME=?\n"
2206+
"AND A.TABLE_SCHEMA LIKE ? AND A.TABLE_NAME=?)\n");
22052207
query.append(OptionalRefConstraintJoinStr);
2206-
query.append("\nWHERE B.CONSTRAINT_TYPE = 'FOREIGN KEY' AND A.REFERENCED_TABLE_SCHEMA LIKE ? AND A.REFERENCED_TABLE_NAME=?\n"
2207-
"AND A.TABLE_SCHEMA LIKE ? AND A.TABLE_NAME=?\nORDER BY A.TABLE_SCHEMA, A.TABLE_NAME, A.ORDINAL_POSITION");
2208+
query.append("\nORDER BY A.TABLE_SCHEMA, A.TABLE_NAME, A.ORDINAL_POSITION");
22082209

22092210
boost::scoped_ptr< sql::PreparedStatement > pStmt(connection->prepareStatement(query));
22102211
pStmt->setString(1, primarySchema);
@@ -2435,11 +2436,11 @@ MySQL_ConnectionMetaData::getExportedKeys(const sql::SQLString& catalog, const s
24352436
"(SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = REFERENCED_TABLE_SCHEMA AND"
24362437
" TABLE_NAME = A.REFERENCED_TABLE_NAME AND CONSTRAINT_TYPE IN ('UNIQUE','PRIMARY KEY') LIMIT 1) AS PK_NAME,");
24372438
query.append(importedKeyNotDeferrableStr);
2438-
query.append(" AS DEFERRABILITY \n FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B\n"
2439-
"USING (TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_NAME)\n");
2439+
query.append(" AS DEFERRABILITY FROM\nINFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B\n"
2440+
"ON (A.TABLE_SCHEMA = B.TABLE_SCHEMA AND A.TABLE_NAME = B.TABLE_NAME AND A.CONSTRAINT_NAME=B.CONSTRAINT_NAME AND\n"
2441+
"B.CONSTRAINT_TYPE = 'FOREIGN KEY' AND A.REFERENCED_TABLE_SCHEMA LIKE ? AND A.REFERENCED_TABLE_NAME=?)\n");
24402442
query.append(OptionalRefConstraintJoinStr);
2441-
query.append("\nWHERE B.CONSTRAINT_TYPE = 'FOREIGN KEY' AND A.REFERENCED_TABLE_SCHEMA LIKE ? AND A.REFERENCED_TABLE_NAME=?\n"
2442-
"ORDER BY A.TABLE_SCHEMA, A.TABLE_NAME, A.ORDINAL_POSITION");
2443+
query.append("ORDER BY A.TABLE_SCHEMA, A.TABLE_NAME, A.ORDINAL_POSITION\n");
24432444

24442445
boost::scoped_ptr< sql::PreparedStatement > pStmt(connection->prepareStatement(query));
24452446
pStmt->setString(1, schema);
@@ -2723,11 +2724,12 @@ MySQL_ConnectionMetaData::getImportedKeys(const sql::SQLString& catalog, const s
27232724
"AND CONSTRAINT_TYPE IN ('UNIQUE','PRIMARY KEY') LIMIT 1) AS PK_NAME,\n");
27242725
query.append(importedKeyNotDeferrableStr);
27252726
query.append(" AS DEFERRABILITY FROM "
2726-
"INFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B \n"
2727-
"USING(CONSTRAINT_NAME, TABLE_NAME) \n");
2727+
"INFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B \n"
2728+
"ON(A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.TABLE_NAME = B.TABLE_NAME AND \n"
2729+
"B.CONSTRAINT_TYPE = 'FOREIGN KEY' AND A.TABLE_SCHEMA LIKE ? AND A.TABLE_NAME=? AND\n"
2730+
"A.REFERENCED_TABLE_SCHEMA IS NOT NULL) \n");
27282731
query.append(OptionalRefConstraintJoinStr);
2729-
query.append("WHERE B.CONSTRAINT_TYPE = 'FOREIGN KEY' AND A.TABLE_SCHEMA LIKE ? AND A.TABLE_NAME=? AND A.REFERENCED_TABLE_SCHEMA \n"
2730-
"IS NOT NULL\nORDER BY A.REFERENCED_TABLE_SCHEMA, A.REFERENCED_TABLE_NAME, A.ORDINAL_POSITION");
2732+
query.append("\nORDER BY A.REFERENCED_TABLE_SCHEMA, A.REFERENCED_TABLE_NAME, A.ORDINAL_POSITION");
27312733

27322734
boost::scoped_ptr< sql::PreparedStatement > pStmt(connection->prepareStatement(query));
27332735
pStmt->setString(1, schema);

0 commit comments

Comments
 (0)