On 09/03/2010 06:14 PM, David Powell wrote:
Hi John,

My current usage of hdbc is in a server process that takes requests from
multiple clients, queries the database, and returns a result.  Having a
single db query block everything else isn't really workable for me.  I
suspect this will also be an issue for others.  As an example, the
persistent-postgresql package which is part of the new Yesod web
framework will have the same problem.

I can send you a patch, but I am concerned with the issue Leon raised
about libpq needing to be compiled with thread support.  This is the
default on my platforms (macosx, debian), but probably is dangerous to
rely on.  I guess we can just test the result of 'PQisthreadsafe()', in
connectPostgreSQL and raise an error if it is false.

Or at least a warning to stderr -- that won't be a problem for single-threaded programs, right?


Cheers,

-- David


On Fri, Sep 3, 2010 at 1:36 AM, John Goerzen <[email protected]
<mailto:[email protected]>> wrote:

    Hi David,

    I've had varying arguments from people that want me to mark things
    safe or unsafe for various performance reasons.  I'm happy to apply
    your change if you like.  Can you send me a diff (and attach your
    explanation here to it, which I'll use as a commit message for
    future reference)?

    Thanks,

    -- John


    On 09/01/2010 09:40 PM, David Powell wrote:

        Greetings,

        I'm having an issue with the HDBC-postgresql package that
        requires me to
        manually patch it before installation for most of my use cases.

        All the FFI calls in this package are marked "unsafe".
          Unfortunately,
        this means that whenever I issue a slow sql query, all other
        processing
        stops.  In most places that I want to use this module, I've had to
        manually patch it to at least mark the PQexec and PQexecParams
        calls as
        "safe".

        Is there any reason these calls should not be marked as "safe"?  I
        understand that there a little extra runtime overhead with this,
        but I'd
        have thought that negligible given all the other processing that
        goes on
        with these particular calls under the hood.

        Cheers,

        --
        David Powell




_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to