[Haskell-cafe] HDBC's future and request for help

John Goerzen jgoerzen at complete.org
Tue Feb 22 17:50:10 CET 2011

Hi folks,

HDBC has been out there for quite some time now.  I wrote it initially 
to meet some specific needs, and from that perspective, it has been done 
for awhile.  It is clear, however, that there are some needs it doesn't 
meet.  Most of them relate to specific backend driver items.

I'd like to start some discussion in the community about what the future 
of HDBC and its backend drivers ought to look like.  Some models might be:

  1. I continue as maintainer for HDBC and 
HDBC-{postgresql,odbc,sqlite3} and act as patch manager/gatekeeper for 
patches that are discussed on some public mailing list.

  2. Interested parties adopt the backend drivers while I continue to 
act as maintainer/patch manager/gatekeeper for HDBC itself.

  3. Interested parties adopt all of HDBC and maintain it

I am not expressing a particular preference for any of these options; 
just putting them forth.

Here are some of the current issues I am aware of:

  1. I have no Windows development platform.  I can't test the releases 
on Windows.  Many Windows users don't have the skill to diagnose 
problems.  These problems do eventually get fixed when a Windows user 
with that skill comes along -- and I appreciate their efforts very much! 
-- but it takes longer than it ought to.

  2. The ODBC documentation is monumentally terrible, and the API is 
perhaps only majestically terrible, and it is not 100% clear to me all 
the time that I have it right.  A seasoned ODBC person would be ideal here.

  3. Issues exist with transferring binary data and BLOBs to/from at 
least PostgreSQL databases and perhaps others.  There appear to be bugs 
in the backend for this, but BLOB support in the API may need to be 
developed as well.

  4. Although the API supports optimizations for inserting many rows at 
once and precompiled queries, most backends to not yet take advantage of 
these optimization.

  5. I have received dueling patches for whether foreign imports should 
be marked "safe" or "unsafe" on various backends.  There seems to be 
disagreement in the community about this one.

  6. Many interactions with database backends take place using a String 
when a more native type could be used for efficiency.  This project may 
be rather complex given varying types of column data in a database -- 
what it expects for bound parameters and what it returns.  The API 
support is there for it though.

  7. Various other more minor items.


-- John

More information about the Haskell-Cafe mailing list