Changeset: a77591700717 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a77591700717 Modified Files: java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java java/src/nl/cwi/monetdb/jdbc/MonetStatement.java Branch: default Log Message:
JDBC Connector: Fix NPE when generated keys result set is actually read. Also changed the type of generated keys to BIGINT because convention. diffs (28 lines): diff --git a/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java b/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java --- a/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java +++ b/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java @@ -1445,6 +1445,10 @@ public class MonetResultSet extends Mone * @throws SQLException if a database access error occurs */ public Object getObject(int columnIndex) throws SQLException { + /* statement is null for virtual result sets such as the ones that hold generated keys */ + if (this.getStatement() == null) { + return getObject(columnIndex, new HashMap<String, Class<?>>()); + } return getObject(columnIndex, this.getStatement().getConnection().getTypeMap()); } diff --git a/java/src/nl/cwi/monetdb/jdbc/MonetStatement.java b/java/src/nl/cwi/monetdb/jdbc/MonetStatement.java --- a/java/src/nl/cwi/monetdb/jdbc/MonetStatement.java +++ b/java/src/nl/cwi/monetdb/jdbc/MonetStatement.java @@ -693,7 +693,9 @@ public class MonetStatement extends Mone types = new String[1]; columns[0] = "GENERATED_KEY"; - types[0] = "varchar"; + /* the generated key should be an integer, because (wait for it) other + * frameworks such as spring expect this. */ + types[0] = "BIGINT"; if (header instanceof MonetConnection.UpdateResponse) { String lastid = ((MonetConnection.UpdateResponse)header).lastid; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list