Hi Rene,

I am using Postgresql 11.2. Major version is 11 and minor version is 2.


On 12/10/2019 11:24 AM, Rene Romero Benavides wrote:
Hi Shalini. The usual diagnostic info is your postgresql server version, major and minor version, such as in 12.1 , the major version is 12 and the minor version (patch version) is 1.


On Fri, Dec 6, 2019 at 9:26 AM Shalini <shal...@saralweb.com <mailto:shal...@saralweb.com>> wrote:

    Hi all,

    I am working on a project which allows multiple users to work on
    single
    large text document. I am using lo_put to apply only the diff into
    the
    large object without replacing it with a new lob. While working on
    it, I
    encountered an error "Tuple concurrently updated".
    The error can be reproduced with two psql clients.

    Setup:

    mydb=# create table text_docs(id serial primary key, data oid);
    CREATE TABLE
    mydb=# insert into text_docs(data) select lo_import('./upload.txt');
    INSERT 0 1
    mydb=# select * from text_docs;
      id |  data
    ----+---------
       1 | 5810130
    (1 rows)

    Now, if we open two psql clients and execute the following commands:

    Client 1:

    mydb=# begin;
    BEGIN
    mydb=# select lo_put(5810130, 10, '\xaa');
    UPDATE 1

    Client 2:

    mydb=# select lo_put(5810130, 10, '\xaa');

    Client 1:
    mydb=# commit;
    COMMIT

    Client 2:
    mydb=# select lo_put(5810130, 10, '\xaa');
    ERROR:  tuple concurrently updated

    Is there a workaround to this concurrency issue without creating a
    new
    large object?

    Regards
    Shalini






--
El genio es 1% inspiración y 99% transpiración.
Thomas Alva Edison
http://pglearn.blogspot.mx/


Reply via email to