fix Spec compat tests to work with all DBs

test should rely on whether KEY is a reserved word or not.
This commit is contained in:
Mark Struberg 2021-05-02 15:36:05 +02:00
parent d8bb07fe86
commit 90ba3b8d5d
3 changed files with 27 additions and 8 deletions

View File

@ -419,7 +419,13 @@ public class TestContainerSpecCompatibilityOptions
// trigger table creation
em.getTransaction().begin();
em.getTransaction().commit();
assertSQLFragnments(sql, "CREATE TABLE C_U1M_Map_FK", "Uni1MFK_ID", "KEY0");
// on some databases KEY is a forbidden name for columns.
String keyColumn = getDbDictioary(emf).getInvalidColumnWordSet().contains("KEY")
? "KEY0"
: "KEY";
assertSQLFragnments(sql, "CREATE TABLE C_U1M_Map_FK", "Uni1MFK_ID", keyColumn);
assertSQLFragnments(sql, "CREATE TABLE Bi1M_Map_JT_C", "B_ID", "C_ID");
assertSQLFragnments(sql, "CREATE TABLE C_U1M_Map_RelKey_FK", "Uni1MFK_ID");
assertSQLFragnments(sql, "CREATE TABLE Bi1M_Map_RelKey_JT_C", "B_ID", "C_ID");

View File

@ -410,7 +410,13 @@ extends AbstractCachedEMFTestCase {
// trigger table creation
em.getTransaction().begin();
em.getTransaction().commit();
assertSQLFragnments(sql, "CREATE TABLE C_U1M_Map_FK", "Uni1MFK_ID", "KEY0");
// on some databases KEY is a forbidden name for columns.
String keyColumn = getDbDictioary(emf).getInvalidColumnWordSet().contains("KEY")
? "KEY0"
: "KEY";
assertSQLFragnments(sql, "CREATE TABLE C_U1M_Map_FK", "Uni1MFK_ID", keyColumn);
assertSQLFragnments(sql, "CREATE TABLE Bi1M_Map_JT_C", "B_ID", "C_ID");
assertSQLFragnments(sql, "CREATE TABLE C_U1M_Map_RelKey_FK", "Uni1MFK_ID");
assertSQLFragnments(sql, "CREATE TABLE Bi1M_Map_RelKey_JT_C", "B_ID", "C_ID");
@ -867,8 +873,7 @@ extends AbstractCachedEMFTestCase {
map.put("openjpa.MetaDataFactory", "jpa(Types=" + buf.toString() + oldValue + ")");
return (OpenJPAEntityManagerFactorySPI)OpenJPAPersistence.
createEntityManagerFactory("persistence_2_0",
"org/apache/openjpa/persistence/compat/" +
"persistence_2_0.xml", map);
"org/apache/openjpa/persistence/compat/persistence_2_0.xml", map);
}
void assertSQLFragnments(List<String> list, String... keys) {

View File

@ -38,10 +38,13 @@ import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.jdbc.sql.DBDictionary;
import org.apache.openjpa.kernel.AbstractBrokerFactory;
import org.apache.openjpa.kernel.Broker;
import org.apache.openjpa.meta.ClassMetaData;
import org.apache.openjpa.persistence.JPAFacadeHelper;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
import org.apache.openjpa.persistence.OpenJPAPersistence;
@ -271,10 +274,10 @@ public abstract class AbstractPersistenceTestCase extends TestCase {
if (b != null && !b.isClosed()) {
EntityManager em = JPAFacadeHelper.toEntityManager(b);
if( em.getTransaction().isActive() ) {
try {
em.getTransaction().rollback();
} catch (Exception e) {
}
try {
em.getTransaction().rollback();
} catch (Exception e) {
}
}
closeEM(em);
}
@ -355,6 +358,11 @@ public abstract class AbstractPersistenceTestCase extends TestCase {
}
}
protected DBDictionary getDbDictioary(EntityManagerFactory emf) {
return ((JDBCConfiguration)((OpenJPAEntityManagerFactory) emf).getConfiguration()).getDBDictionaryInstance();
}
/**
* Return the entity name for the given type.
*/