Some areas of concern are listed as tickets in JIRA already. Other areas are not yet well-formed enough to create specific, actionable tickets:
- DDL support is weak, e.g., http://dev.clojure.org/jira/browse/JDBC-2JDBC-2 table spec support - DONE; but more DDL support could / should be added
- Inconsistencies between structmaps, tuples and regular maps (JDBC-3)
- Global connection variable (db) and lack of connection pooling (JDBC-4); perhaps better served thru 3rd party pooling, e.g., c3p0?
- Inability to extend the processing, lack of HOF hooks, e.g., JDBC-6 allow pre-processing of PreparedStatement - in progress
- Updating state is not signified with !
- API feels imperative, not functional / idiomatic for Clojure
What databases and versions should clojure.java.jdbc support? c.j.j is primarily developed and tested against MySQL 5.0 and MySQL 5.1 but feedback is already coming from users of PostgreSQL and Microsoft SQL Server. Initial thinking is to officially support the following databases and versions:
- MySQL 5.0 - 5.5 (using the 5.1.6 connector)
- PostgreSQL - 8.2 upward
- SQL Server - 2008 (should 2005 be supported?)
- Derby 10.8.1.2 (should earlier versions be supported?)
- HSQLDB 184.108.40.206 (should earlier versions be supported?)
- Oracle ????
The build system needs to be updated to run tests against at least some of these. Currently c.j.j is unique in requiring such external resources for testing.