Thread: BUG #4674: Unable to open lob

BUG #4674: Unable to open lob

From
"Yuichi Tanaka"
Date:
The following bug has been logged online:

Bug reference:      4674
Logged by:          Yuichi Tanaka
Email address:      yuichi_tanaka@cybozu.co.jp
PostgreSQL version: 8.3.6
Operating system:   Linux
Description:        Unable to open lob
Details:

I wrote the code like below:

    // open lob
    if( (pgsql_lofd1 = lo_open(pgsql, oid, pgsql_mode)) == -1 ) {
        printf("error: first lo_open\n");
    }

    // send query asynchronously
    PQsendQuery(pgsql, "INSERT INTO bar (name) VALUES ('aaa');" );

    // open lob
    if( (pgsql_lofd2 = lo_open(pgsql, oid+1, pgsql_mode)) == -1 ) {
        printf("error: second lo_open\n");
    }


This program displays "error: second lo_open".
Is this a bug or correct behavior?

Re: BUG #4674: Unable to open lob

From
Tom Lane
Date:
"Yuichi Tanaka" <yuichi_tanaka@cybozu.co.jp> writes:
> This program displays "error: second lo_open".

Where did you get the oid value from?  What makes you think that one
more than that oid is also a large object?

            regards, tom lane

Re: BUG #4674: Unable to open lob

From
田中 裕一
Date:
I'm sorry, that code is a test code, and oid value is written directly in the code.
I'm sure there are large objects whose id is oid and oid+1.

In fact, if I get rid of PQsendQuery statement, I can open the two large
objects because that code displays nothing.

In my survey, if I execute PQsendQuery between two lo_open,
the latter lo_open returns -1.
And this situation continues until the connection is disconnected.

Best regards.

Tom Lane wrote:
> "Yuichi Tanaka" <yuichi_tanaka@cybozu.co.jp> writes:
> > This program displays "error: second lo_open".
>
> Where did you get the oid value from?  What makes you think that one
> more than that oid is also a large object?
>
>  regards, tom lane

----
Yuichi Tanaka (yuichi_tanaka@cybozu.co.jp)