Thread: async fast-path calls?
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
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
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
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