[Haskell-cafe] ANN: Takusen 0.8.4

Alistair Bayley alistair at abayley.org
Fri May 1 11:16:22 EDT 2009

ANN: Takusen 0.8.4

This is mainly a "get it working with ghc-6.10" release.

Changes since 0.8.3:

 - ODBC support: some bug fixes, and basic support for Out-parameters.
   There is at least one major outstanding bug with Out-parameters,
   where marshalling a String output bind-variable doesn't work correctly
   (if it was modified, you still get the String you passed in back,
   rather than the new String).

 - Sqlite: bug fix for resource leak: if a command (like rollback or commit)
   raised an error, the prepared-statement handle was not closed.

 - cabal: requires cabal 1.6 (or later). With ghc-6.6 on Windows you will
   need a later cabal than, as there is a bug which prevents building
   (setup configure fails with
   "setup: fdGetMode: invalid argument (Invalid argument)").
   Eric Mertens patch for ODBC on OS x. Greg Leclerq patch for cabal 1.6.
   Thanks also to Austin Siepp and Brian Callendar for their patches.

 - ghc-6.10: will build with ghc's 6.10, 6.8, 6.6.
   Note that Takusen won't work with ghc-6.10.2 out-of-the-box,
   because the time package is missing. If you install time manually
   then it should be OK (but this is untested).

   We use the new extensible exceptions, but we have done so by including it
   within our own source tree. This will make it easier to use Takusen with
   older ghc's, and reduces the number of external package dependencies.

   We have dropped support for 6.4. That's not to say Takusen isn't usable
   with 6.4, just that we no longer test that configuration.

The release bundle:
The latest code:
  darcs get http://darcs.haskell.org/takusen

If you have cabal-install, then this command should work:
  cabal install Takusen --flags="sqlite odbc oracle postgres"
... but it doesn't (at least for the version of cabal-install
that I have) because the .tar.gz file I uploaded has a bogus checksum.

A comprehensive description of API usage can be found in the documentation
for module Database.Enumerator (look for the Usage section):

Note that the haddock docs won't build with cabal- or earlier.
This is because our literate-haskell source files need to be properly
preprocessed before being passed to haddock.
At the time of writing, you'll need the cabal HEAD to build the docs.

Future plans:

 - Output bind-parameters and multiple-result sets for ODBC

 - support for Blobs and Clobs

 - FreeTDS backend (Sybase and MS Sql Server)... maybe

For those of you unfamiliar with Takusen, here is our HCAR blurb:

Takusen is a DBMS access library. Like HSQL and HDBC, we support
arbitrary SQL statements (currently strings, extensible to anything
that can be converted to a string).

Takusen's 'unique-selling-point' is safety and efficiency.
We statically ensure all acquired database resources - such
as cursors, connection and statement handles - are released, exactly
once, at predictable times. Takusen can avoid loading the whole result
set in memory, and so can handle queries returning millions of rows in
constant space. Takusen also supports automatic marshalling and
unmarshalling of results and query parameters. These benefits come
from the design of query result processing around a left-fold

Currently we fully support ODBC, Oracle, Sqlite, and PostgreSQL.

More information about the Haskell-Cafe mailing list