From: | Vlad Arkhipov <arhipov(at)dc(dot)baikal(dot)ru> |
---|---|
To: | Nicolas Barbier <nicolas(dot)barbier(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: What happens If a table changes during a query/procedure execution |
Date: | 2011-03-09 11:12:53 |
Message-ID: | 4D7760B5.20804@dc.baikal.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
09.03.2011 18:54, Nicolas Barbier:
> 2011/3/9 Vlad Arkhipov<arhipov(at)dc(dot)baikal(dot)ru>:
>
>
>> Let there are two transactions that were created with read commited
>> isolation level. In the first one we're executing a SELECT query:
>> SELECT * FROM t UNION ALL SELECT * FROM t;
>>
>> In the second transaction we're modifying the same table:
>> INSERT INTO t DEFAULT VALUES;
>> COMMIT;
>>
>> Is it possible that the last UNION part in the first query will retrieve not
>> the same rows as the first one?
>>
> No, because statements never see changes made by other transactions
> while they are in flight.
>
>
Is it also true if a statement contains subqueries or function calls?
For instance,
CREATE FUNCTION f() RETURNS NUMERIC AS $$
BEGIN
RETURN (SELECT SUM(a) FROM t);
END;
$$ LANGUAGE 'plpgsql';
SELECT a, f() FROM t;
or
SELECT a, (SELECT SUM(a) FROM t) FROM t;
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2011-03-09 11:15:16 | Re: What happens If a table changes during a query/procedure execution |
Previous Message | Fujii Masao | 2011-03-09 11:11:17 | Update of replication/README |