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., JDBC-2 table spec support - DONE; but more DDL support could / should be added
- Inconsistencies between structmaps, tuples and regular maps (
JDBC-3); no longer uses structmap - API is still inconsistent with maps and sequences
- Global connection variable (db) - will be addressed in upcoming API overall
- Lack of connection pooling (
JDBC-4); better served thru 3rd party pooling, e.g., c3p0 - documented
- Inability to extend the processing, lack of HOF hooks, e.g.,
JDBC-6 allow pre-processing of PreparedStatement
- 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 (tested against 8.4-702.jdbc4 driver)
- SQL Server - 2008 (should 2005 be supported?) - tested with jtds 1.2.4 and the Microsoft sqljdbc4 3.0 driver
- Derby 10.8.1.2 (should earlier versions be supported?)
- HSQLDB 18.104.22.168 (should earlier versions be supported?)
- SQLite 3 (using the org.xerial/sqlite-jdbc 3.7.2 driver)
- 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.