Thread: async fast-path calls?

async fast-path calls?

From
yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi)
Date:
hi,

is there any easy way to issue large object operations like lo_write,
or more generally fast-path calls, asynchronously?  (async in the sense
of PQsendQuery so that i can poll to wait a result)

background: i want to use multiple connections to the server in a single
application for performance reasons.  the application is single-threaded.
(multi threading is not possible because i need to use a
pthread-incompatible library.)
using synchronous api when another asynchronous command is in-progress is
deadlock-prone as i can't receive the result of asynchronous one until
the synchronous one finishes.

YAMAMOTO Takashi

Re: async fast-path calls?

From
yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi)
Date:
hi,

i workarounded this by using PQsendQuery with eg. "select lowrite($1,$2)".
while it seems to work, i wonder if it's ok to use these functions this way,
given that only some of large object server-side functions are documented
in http://www.postgresql.org/docs/9.0/interactive/lo-funcs.html.

YAMAMOTO Takashi

> hi,
>
> is there any easy way to issue large object operations like lo_write,
> or more generally fast-path calls, asynchronously?  (async in the sense
> of PQsendQuery so that i can poll to wait a result)
>
> background: i want to use multiple connections to the server in a single
> application for performance reasons.  the application is single-threaded.
> (multi threading is not possible because i need to use a
> pthread-incompatible library.)
> using synchronous api when another asynchronous command is in-progress is
> deadlock-prone as i can't receive the result of asynchronous one until
> the synchronous one finishes.
>
> YAMAMOTO Takashi

Re: async fast-path calls?

From
Josh Kupershmidt
Date:
On Sat, Jan 15, 2011 at 8:17 AM, YAMAMOTO Takashi
<yamt@mwd.biglobe.ne.jp> wrote:
> hi,
>
> i workarounded this by using PQsendQuery with eg. "select lowrite($1,$2)".
> while it seems to work, i wonder if it's ok to use these functions this way,
> given that only some of large object server-side functions are documented
> in http://www.postgresql.org/docs/9.0/interactive/lo-funcs.html.

lo_write() is documented here:
http://www.postgresql.org/docs/current/static/lo-interfaces.html#LO-WRITE

I think it's not on the page you linked to because it is not callable
via SQL, only via libpq.

Josh

Re: async fast-path calls?

From
yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi)
Date:
hi,

> On Sat, Jan 15, 2011 at 8:17 AM, YAMAMOTO Takashi
> <yamt@mwd.biglobe.ne.jp> wrote:
>> hi,
>>
>> i workarounded this by using PQsendQuery with eg. "select lowrite($1,$2)".
>> while it seems to work, i wonder if it's ok to use these functions this way,
>> given that only some of large object server-side functions are documented
>> in http://www.postgresql.org/docs/9.0/interactive/lo-funcs.html.
>
> lo_write() is documented here:
> http://www.postgresql.org/docs/current/static/lo-interfaces.html#LO-WRITE
>
> I think it's not on the page you linked to because it is not callable
> via SQL, only via libpq.

why not?  will it likely be changed for future versions in an
incompatible manner?  connecting to a newer server using an old libpq
is not supported either?

YAMAMOTO Takashi

>
> Josh