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

From Durumdara
Subject Re: Read Committed transaction with long query
Date
Msg-id BANLkTinsB=NB_YEPm5qZOfu96nge2nwbrA@mail.gmail.com
Whole thread Raw
In response to Re: Read Committed transaction with long query  ("Albe Laurenz" <laurenz.albe@wien.gv.at>)
Responses Re: Read Committed transaction with long query  ("Albe Laurenz" <laurenz.albe@wien.gv.at>)
List pgsql-general
Hi!

2011/5/12 Albe Laurenz <laurenz.albe@wien.gv.at>:
> 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.

Sorry, the from is missed here... :-(

>
>
>>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.

Thanks! Great!

>
> 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.

Query is meaning statement here?
For example if I have more statement in one "Query" are they running
separatedly?
They can be see the modifications?

Query text (or stored procedure body):
"insert into ... ;" +
"update ...;" +
"select ..."

Are they handled as one unit, or they are handled one by one?
AutoCommit = False!

Thanks:
    dd

pgsql-general by date:

Previous
From: Andreas Laggner
Date:
Subject: vacuumdb with cronjob needs password since 9.0?
Next
From: Jerry Sievers
Date:
Subject: Re: vacuumdb with cronjob needs password since 9.0?