Add some unit testing of the CfbSchema.
[cfb.git] / prod / net / jaekl / cfb / db / driver / PostgresqlDriver.java
index 55994b33b0d6f690f31d57bfa668aa9c55afdaee..fbb328503add803379a1cab500a959bdefc0c9f0 100644 (file)
@@ -1,13 +1,14 @@
 package net.jaekl.cfb.db.driver;
 
+// Copyright (C) 2015 Christian Jaekl
+
 import java.sql.Connection;
 import java.sql.DriverManager;
-import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Properties;
 
-import net.jaekl.cfb.db.Column;
-import net.jaekl.cfb.db.Table;
+import net.jaekl.cfb.db.Sequence;
+import net.jaekl.cfb.db.Column.Type;
 
 public class PostgresqlDriver extends DbDriver {
 
@@ -28,11 +29,22 @@ public class PostgresqlDriver extends DbDriver {
                //props.setProperty("ssl", "true");
                return DriverManager.getConnection(url, props);
        }
-
-       @Override
-       public ResultSet selectColumnsFromWhere(Column[] columns, Table[] tables, String where) {
-               // TODO Auto-generated method stub
-               return null;
+       
+       @Override 
+       public String nextValSql(Sequence seq) 
+       {
+               return " SELECT NEXTVAL('" + seq.getName() + "') ";
        }
-
-}
+       
+       @Override
+       protected String typeName(Type type) {
+               // Special case:  TIMESTAMPTZ stored as INTEGER (milliseconds since the epoch)
+               // Reading a TIMESTAMPTZ back from the DB, and converting it to a java.util.Date,
+               // is fraught with peril.  The best way around this is to store the dates in 
+               // milliseconds-since-the-epoch (01.01.1970 00:00:00.000 UTC).
+               if (Type.TIMESTAMPTZ.equals(type)) {
+                       return "BIGINT";
+               }
+               
+               return type.toString();
+       }}