This is an automated email from the ASF dual-hosted git repository. struberg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openjpa.git
commit 90ba3b8d5df3ec2843e85d85edf258970dd6900b Author: Mark Struberg <strub...@apache.org> AuthorDate: Sun May 2 15:36:05 2021 +0200 fix Spec compat tests to work with all DBs test should rely on whether KEY is a reserved word or not. --- .../compat/TestContainerSpecCompatibilityOptions.java | 8 +++++++- .../persistence/compat/TestSpecCompatibilityOptions.java | 11 ++++++++--- .../persistence/test/AbstractPersistenceTestCase.java | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestContainerSpecCompatibilityOptions.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestContainerSpecCompatibilityOptions.java index 4a3e1cc..f5e7a54 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestContainerSpecCompatibilityOptions.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestContainerSpecCompatibilityOptions.java @@ -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"); diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestSpecCompatibilityOptions.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestSpecCompatibilityOptions.java index 1ded560..1d8b5b4 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestSpecCompatibilityOptions.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/compat/TestSpecCompatibilityOptions.java @@ -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) { diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java index 4e5e245..06ae645 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java @@ -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. */