You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2011/04/27 18:00:37 UTC

svn commit: r1097160 - /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java

Author: mikedd
Date: Wed Apr 27 16:00:37 2011
New Revision: 1097160

URL: http://svn.apache.org/viewvc?rev=1097160&view=rev
Log:
OPENJPA-1985: Check for abstime as a timestamp type for Postgres

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java?rev=1097160&r1=1097159&r2=1097160&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java Wed Apr 27 16:00:37 2011
@@ -37,7 +37,9 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.openjpa.jdbc.identifier.DBIdentifier;
 import org.apache.openjpa.jdbc.identifier.Normalizer;
@@ -74,6 +76,8 @@ public class PostgresDictionary
 
     private Method dbcpGetDelegate;
     private Method connectionUnwrap;
+    
+    protected Set<String> _timestampTypes = new HashSet<String>(); 
 
     static {
         try {
@@ -219,6 +223,10 @@ public class PostgresDictionary
             "THEN", "TO", "TRAILING", "TRUE", "UNION", "UNIQUE", "USER", 
             "USING", "VERBOSE", "WHEN", "WHERE",
         }));
+        
+        _timestampTypes.add("ABSTIME");
+        _timestampTypes.add("TIMESTAMP");
+        _timestampTypes.add(timestampTypeName.toUpperCase()); // handle user configured timestamp types.
     }
 
     @Override
@@ -783,7 +791,7 @@ public class PostgresDictionary
             try {
                 Method m = obj.getClass().getMethod("getType", (Class[]) null);
                 Object type = m.invoke(obj, (Object[]) null);
-                if (((String) type).equalsIgnoreCase(timestampTypeName)) {
+                if(_timestampTypes.contains(((String) type).toUpperCase())) { 
                     return rs.getTimestamp(column);
                 }
             } catch (Throwable t) {
@@ -1024,3 +1032,4 @@ public class PostgresDictionary
         }
     }
 }
+