--- layout: todos title: PostgreSQL JDBC Todo resource: ../media nav: ../ --- # Todo List *** * [Known Bugs](#Known_Bugs) * [Compliance](#Compliance) * [Performance](#Performance) * [PG Extensions](#PG_Extensions) * [Other](#Other) * [Ideas](#Ideas) * [Documentation](#Documentation) * [Website](#Website) *** ## Known Bugs * **[bugs]** Deallocating large numbers of server side statements can break the connection by filling network buffers. This is a very, very low probability bug, but it is still possible. ref → *** ## Compliance * **[JDBC1]** Implement Statement.setQueryTimeout. → * **[JDBC2]** Sort DatabaseMetaData.getTypeInfo properly (by closest match). → * **[JDBC2]** Implement SQLInput and SQLOutput to allow composite types to be used. → * **[JDBC3]** Implement Statement.getGeneratedKeys. ref2 → * **[JDBC3]** The JDBC 3 DatabaseMetaData methods sometimes return additional information. Currently we only return JDBC 2 data for these methods. ref → * **[JDBC3]** Implement Clob write/position methods. → *** ## Performance * **[]** Add statement pooling to take advantage of server prepared statements. → * **[]** Allow scrollable ResultSets to not fetch all results in one batch. → * **[]** Allow refcursor ResultSets to not fetch all results in one batch. → * **[]** Allow binary data transfers for all datatypes not just bytea. → *** ## PG Extensions * **[]** Allow configuration of GUC parameters via the Connection URL or Datasource. The most obvious example of usefulness is search_path. ref → *** ## Other * **[test]** Pass the JDBC CTS (Sun's test suite). → * **[code]** Allow SSL to use client certificates. This can probably be done with our existing SSLSocketFactory customization code, but it would be good to provide an example or other wrapper so a non-expert can set it up. ref1, ref2 → * **[code]** Currently the internal type cache is not schema aware. → * **[code]** Need a much better lexer/parser than the ad hoc stuff in the driver. ref2 → *** ## Ideas * **[]** Allow Blob/Clob to operate on bytea/text data. ref → * **[]** Allow getByte/getInt/... to work on boolean values ref → * **[]** Add a URL parameter to make the driver not force a rollback on error for compatibility with other dbs. The driver can wrap each statement in a Savepoint. ref → * **[]** Combine DatabaseMetaData efforts with pl/java. ref → * **[]** ResultSetMetaData calls that run queries are cached on a per column basis, but it seems likely that they're going to be called for all columns, so try to issue one query per ResultSet, not per column. → * **[]** Make PGConnection, PGStatement, ... extend java.sql.XXX ref → *** ## Documentation * **[]** The PGResultSetMetaData interface is not mentioned. → * **[]** Timestamp +/- Infinity values are not mentioned. → * **[]** Async notifies are more async now. ref → *** ## Website * **[]** Setup a cron job somewhere to build and deploy the sight on a daily basis to keep API changes and translations up to date. → * **[]** Add a daily git snapshot build to make the latest updates available. →