Page 1 of 1

PgLargeObjectManager transaction isolation bug

Posted: Tue 13 Aug 2013 15:46
by bpipe
How to reproduce:
Create 2 parallel threads, each with it's own connection, and serializable transaction:
thread_1 - read large_object_1, wait signal_1, continue read large_object_1, commit
thread_2 - delete large_object_1, commit, set signal_1

After signal_1 is set thread_1 will throw exception "Large object doesn't exist", between reads.

Read: http://www.postgresql.org/docs/8.4/stat ... faces.html - 31.3.4. Opening an Existing Large Object
Reading from a descriptor opened with INV_WRITE returns data that reflects all writes of other committed transactions as well as writes of the current transaction. This is similar to the behavior of SERIALIZABLE versus READ COMMITTED transaction modes for ordinary SQL SELECT commands.
You driver doesn't allow to set lo_open mode.

Re: PgLargeObjectManager transaction isolation bug

Posted: Wed 14 Aug 2013 13:16
by Pinturiccio
We will investigate the possibility of setting open mode for LargeObject and post here about the results as soon as possible.

Re: PgLargeObjectManager transaction isolation bug

Posted: Wed 04 Sep 2013 12:32
by Pinturiccio
We have added the overload for the PgSqlLargeObject.Open() method with the PgSqlLargeObjectOpenMode parameter. We will post here when the corresponding build of dotConnect for PostgreSQL is available for download.

Re: PgLargeObjectManager transaction isolation bug

Posted: Fri 06 Sep 2013 08:13
by Pinturiccio
The new build of dotConnect for PostgreSQL 6.8.322 is available for download now!
It can be downloaded from http://www.devart.com/dotconnect/postgr ... nload.html (trial version) or from Registered Users' Area (for users with valid subscription only).
For more information, please refer to http://forums.devart.com/viewtopic.php?t=27879