An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

clojure.java.jdbc 0.3.0 alpha 4

May 13, 2013 ·

A month ago I posted that java.jdbc 0.3.0 alpha 1 was available for testing and since then I've made a few more alpha releases as the API and code settles down so I figured it was time to blog about the recent changes.

  • Release 0.3.0-alpha4 on 2013-05-11
    • Fix connection leaks JDBC-54
    • Allow order-by to accept empty sequence (and return empty string)
  • Release 0.3.0-alpha3 on 2013-05-04
    • Fix macro / import interaction by fully qualifying Connection type.
  • Release 0.3.0-alpha2 on 2013-05-03
    • Address JDBC-51 by declaring get-connection returns java.sql.Connection
    • Add IResultSetReadColumn protocol extension point for custom read conversions JDBC-46
    • Add :multi? to execute! so it can be used for repeated operations JDBC-52
    • Reverted specialized handling of NULL values (reopens JDBC-40)
    • Rename :as-arrays to :as-arrays? since it is boolean
    • Add curried version of clojure.java.jdbc.sql/as-quoted-str
    • Officially deprecate resultset-seq

As you can see, quite a few things changed in alpha 2, including a parameter name change (a breaking change to something introduced in alpha 1). Alpha 3 fixed a problem that made alpha 2 unusable for some people (due to a macro expansion quirk). Alpha 4 actually has some fairly extensive code changes - around connection leaks - although there is only one actually API change: order-by can now accept an empty sequence which is very convenient when you're constructing your query operations dynamically, as we do at World Singles in several places.

The alpha 4 changes around connection handling is something I'd like to see get some fairly extensive testing out there in the real world - so I'd appreciate anyone who can find the time to exercise the new API in a heavy load environment!

What's coming in future alpha / beta releases? Before the first beta, I want to deprecate a few more things that still rely on the dynamic *db* variable (specifically create-table and drop-table) and add new API versions that accept the DB spec as an argument, or offer up a consistent way to handle DDL commands, perhaps by adding some more create-*-ddl functions? So there will be at least one more alpha, maybe two. The first beta will represent a stable API and "feature complete" - and a shift to bug fixing.

You can see currently open issues for java.jdbc on JIRA.

Tags: clojure

0 responses