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.
      */

Reply via email to