Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updates to reflect 0.3.0 status and plans

...

  • DDL support is weak, e.g., JDBC-2 table spec support - DONE; added in 0.3.0 but more DDL support could / (should?) be addedprovided
  • Inconsistencies between structmaps, tuples and regular maps (JDBC-3); no longer uses structmap - DONE; new API is still inconsistent with (0.3.0) is more consistent about maps and sequences
  • Global connection variable (db) - will be addressed in upcoming API overallDONE; addressed by new API in 0.3.0
  • Lack of connection pooling (JDBC-4); better served thru 3rd party pooling, e.g., c3p0 - DONE; documented
  • Inability to extend the processing, lack of HOF hooks, e.g., JDBC-6 allow pre-processing of PreparedStatement - partially DONE?
  • Updating state is not signified with ! - DONE; addressed by new API in 0.3.0
  • API feels imperative, not functional / idiomatic for Clojure - DONE; addressed by new API in 0.3.0

Additional Suggestions

The following suggestions have been made and are under discussion:

  • Overriding default identifiers and entities functions
    • identifiers could be done via the db-spec since only the query function uses it (passed to result-set-seq)
    • entities are only used by the DSL to generate SQL so it's not clear yet how this would interact with the db-spec
  • Providing a canonical Database Specification a la Ring Spec
    • Awaiting more information...

Supported Databases

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 , HSQLDB, SQLite, Derby, MS SQL Server (both MS driver and jTDS driver). The following databases and versions are considered supported in 0.3.0:

  • 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?)
  • H2
  • HSQLDB 1.8.0.10 (should earlier versions be supported?)
  • SQLite 3 (using the org.xerial/sqlite-jdbc 3.7.2 driver)

Additionally, users of c.j.j are successfully running against:

  • PostgreSQL - 8.2 upward (this is considered "supported" although it is not part of the general testbed)
  • H2 (to be confirmed)
  • Oracle (versions unknown)
  • TeraData (????)

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.