X-Git-Url: http://jaekl.net/gitweb/?p=cfb.git;a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2Fdb%2Fdriver%2FPostgresqlDriver.java;h=a828d7fc651a84f3d034b6aa8e6452ab3f17cbfc;hp=fbb328503add803379a1cab500a959bdefc0c9f0;hb=01f0bef1b13c6b9f5b370372d36ad4d6149ff2c3;hpb=f2bacf605408989ecb4faa7ff84ed5c72dd26c2b diff --git a/prod/net/jaekl/cfb/db/driver/PostgresqlDriver.java b/prod/net/jaekl/cfb/db/driver/PostgresqlDriver.java index fbb3285..a828d7f 100644 --- a/prod/net/jaekl/cfb/db/driver/PostgresqlDriver.java +++ b/prod/net/jaekl/cfb/db/driver/PostgresqlDriver.java @@ -4,6 +4,8 @@ package net.jaekl.cfb.db.driver; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; @@ -31,11 +33,23 @@ public class PostgresqlDriver extends DbDriver { } @Override - public String nextValSql(Sequence seq) + public long nextVal(Connection con, Sequence seq) throws SQLException { - return " SELECT NEXTVAL('" + seq.getName() + "') "; + String sql = " SELECT NEXTVAL('" + seq.getName() + "') "; + + try (PreparedStatement ps = con.prepareStatement(sql)) + { + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + return rs.getLong(1); + } + } + } + + throw new SQLException("No value returned for sequence: " + sql); } + @Override protected String typeName(Type type) { // Special case: TIMESTAMPTZ stored as INTEGER (milliseconds since the epoch)