Revision: 15839
http://datanucleus.svn.sourceforge.net/datanucleus/?rev=15839&view=rev
Author: andy_jefferson
Date: 2012-10-27 07:26:37 +0000 (Sat, 27 Oct 2012)
Log Message:
-----------
[NUCRDBMS-620] Indexes/Unique keys for map join tables
Modified Paths:
--------------
platform/store.rdbms/trunk/src/java/org/datanucleus/store/rdbms/table/MapTable.java
Modified: platform/store.rdbms/trunk/src/java/org/datanucleus/store/rdbms/table/MapTable.java
===================================================================
--- platform/store.rdbms/trunk/src/java/org/datanucleus/store/rdbms/table/MapTable.java 2012-10-26 15:08:40 UTC (rev 15838)
+++ platform/store.rdbms/trunk/src/java/org/datanucleus/store/rdbms/table/MapTable.java 2012-10-27 07:26:37 UTC (rev 15839)
@@ -803,6 +803,18 @@
}
}
}
+ else if (mmd.getKeyMetaData() != null)
+ {
+ IndexMetaData idxmd = mmd.getKeyMetaData().getIndexMetaData();
+ if (idxmd != null)
+ {
+ Index index = TableUtils.getIndexForField(this, idxmd, keyMapping);
+ if (index != null)
+ {
+ indices.add(index);
+ }
+ }
+ }
if (valueMapping instanceof EmbeddedValuePCMapping)
{
@@ -822,6 +834,18 @@
}
}
}
+ else if (mmd.getValueMetaData() != null)
+ {
+ IndexMetaData idxmd = mmd.getValueMetaData().getIndexMetaData();
+ if (idxmd != null)
+ {
+ Index index = TableUtils.getIndexForField(this, idxmd, valueMapping);
+ if (index != null)
+ {
+ indices.add(index);
+ }
+ }
+ }
return indices;
}
@@ -853,6 +877,18 @@
}
}
}
+ else if (mmd.getKeyMetaData() != null)
+ {
+ UniqueMetaData unimd = mmd.getKeyMetaData().getUniqueMetaData();
+ if (unimd != null)
+ {
+ CandidateKey ck = TableUtils.getCandidateKeyForField(this, unimd, keyMapping);
+ if (ck != null)
+ {
+ candidateKeys.add(ck);
+ }
+ }
+ }
if (valueMapping instanceof EmbeddedValuePCMapping)
{
@@ -872,6 +908,18 @@
}
}
}
+ else if (mmd.getValueMetaData() != null)
+ {
+ UniqueMetaData unimd = mmd.getValueMetaData().getUniqueMetaData();
+ if (unimd != null)
+ {
+ CandidateKey ck = TableUtils.getCandidateKeyForField(this, unimd, valueMapping);
+ if (ck != null)
+ {
+ candidateKeys.add(ck);
+ }
+ }
+ }
return candidateKeys;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|