Обсуждение: BUG #4674: Unable to open lob
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?
"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
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)