On 02/23/2011 10:03 AM, Leon Smith wrote:
My biggest (mostly) fixable complaint with HDBC is that it hasn't
turned out to be a very complete or robust solution for accessing
databases that like to use PostgreSQL-specific features.   My biggest

This is probably true, both that it isn't designed for database-specific features and that this is fixable.

complaint that (probably) isn't easily fixed is it's reliance on
Convertible,  and the use of lots of unsafe pattern matching and
exception-happy functions.

Use of Convertible (or toSql/fromSql which is based on it) isn't really required. You could write a complete HDBC program having never touched it, assembling and disassembling your SqlValues manually. This was a design goal of the API. Convertible makes it easy and convenient for the 95% common cases, but you can avoid it if you wish, or use some other kind of conversion. All the HDBC functions work with SqlValues (though there are some convenience wrappers that use Strings instead) so you can build them up however you like. SqlValue is documented at http://hackage.haskell.org/packages/archive/HDBC/2.2.6.1/doc/html/Database-HDBC.html#t:SqlValue

If your concern really is with how SqlValue is defined, alternative proposals are always entertained ;-)

When you're dealing with databases over a network, exceptions can happen just about anywhere. HDBC does have its own exception type (SqlError) so that they can be handled en masse, or picked through more closely if desired. If you have an idea how else that should be handled, I'm all ears.

By "unsafe pattern matching" do you mean GHC -Wall is flagging pattern matches that don't match some possible set of input data, or something else? If the former, that should be trivially fixable too.

At least for the time being,  I've found it easiest and most expedient
to fix up HDBC.   I'm not particularly interested in taking over the
maintenance of HDBC,  and I am comfortable with model #1 at the time
being.   However if somebody else is interested in another option,
I'm probably ok with that too.

Thanks for your feedback, Leon.  I've appreciated your patches.

-- John

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to