Re: Read Committed transaction with long query - Mailing list pgsql-general

From Albe Laurenz
Subject Re: Read Committed transaction with long query
Date
Msg-id D960CB61B694CF459DCFB4B0128514C20668FBFF@exadv11.host.magwien.gv.at
Whole thread Raw
In response to Read Committed transaction with long query  (Durumdara <durumdara@gmail.com>)
Responses Re: Read Committed transaction with long query  (Durumdara <durumdara@gmail.com>)
List pgsql-general
Durumdara wrote:
>Two table:
>Main
>Lookup
>
>The query is:
>select Main.*, Lookup.Name
>left join Lookup on (Main.Type_ID = Lookup.ID)

hat's not correct SQL, but I think I understand what you mean.


>Lookup:
>ID Name
>1 Value1
>2 Value 2
>3 Value 3
>
>Many records is in Main table (for example 1 million).
>
>What happens in this case (C = connection):
>
>C1.) begin read committed
>C1.) starting this query
>C1.) query running
>C2.) begin read committed
>C2.) update Lookup set Name = "New2" where ID = 2
>C2.) commit
>C1.) query running
>C1.) query finished
>
>Is it possible to the first joins (before C2 modifications) are
>containing "Value2" on the beginning of the query and "New2" on the
>end of the query?
>So is it possible to the long query is containing not consistent state
>because of C2's changing? For example mixing "Value2" and "New2"?

No, this is not possible.

See
http://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-
READ-COMMITTED :

  When a transaction uses this [read committed] isolation level, a
SELECT query
  (without a FOR UPDATE/SHARE clause) sees only data committed before
the query began;
  it never sees either uncommitted data or changes committed during
query execution
  by concurrent transactions.

Yours,
Laurenz Albe

pgsql-general by date:

Previous
From: Cédric Villemain
Date:
Subject: Re: invalid byte sequence for encoding "UTF8": 0xf1612220
Next
From: Andreas Laggner
Date:
Subject: vacuumdb with cronjob needs password since 9.0?