Author: tomdz
Date: Sun Jan 28 21:50:38 2007
New Revision: 500943
URL: http://svn.apache.org/viewvc?view=rev&rev=500943
Log:
Enhanced support for foreign keys using primary key columns
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java
URL:
http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java?view=diff&rev=500943&r1=500942&r2=500943
==============================================================================
---
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java
(original)
+++
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java
Sun Jan 28 21:50:38 2007
@@ -637,18 +637,27 @@
*/
protected void removeInternalForeignKeyIndex(DatabaseMetaDataWrapper
metaData, Table table, ForeignKey fk) throws SQLException
{
- List columnNames = new ArrayList();
+ List columnNames = new ArrayList();
+ boolean mustBeUnique = true;
for (int columnIdx = 0; columnIdx < fk.getReferenceCount();
columnIdx++)
{
- columnNames.add(fk.getReference(columnIdx).getLocalColumnName());
+ String name =
fk.getReference(columnIdx).getLocalColumnName();
+ Column localColumn = table.findColumn(name,
+
getPlatform().isDelimitedIdentifierModeOn());
+
+ if (!localColumn.isPrimaryKey())
+ {
+ mustBeUnique = false;
+ }
+ columnNames.add(name);
}
for (int indexIdx = 0; indexIdx < table.getIndexCount(); indexIdx++)
{
Index index = table.getIndex(indexIdx);
- if (!index.isUnique() && matches(index, columnNames) &&
+ if ((mustBeUnique == index.isUnique()) && matches(index,
columnNames) &&
isInternalForeignKeyIndex(metaData, table, fk, index))
{
fk.setAutoIndexPresent(true);