Hi all, I have a question about behavior of snapshot too old feature.
For example, I set old_snapshot_threshold = 1min and prepare a table and two terminals. And I did the followings steps. 1. [Terminal 1] Begin transaction and get snapshot data and wait. BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT * FROM test; 2. [Terminal 2] Another session updates test table in order to make snapshot dirty. BEGIN; UPDATE test SET c = c + 100; COMMIT; 3. [Terminal 1] 1 minute after, read the test table again in same transaction opened at #1. I got no error. SELECT * FROM test; 4. [Terminal 2] Another session reads the test table. BEGIN; SELECT * FROM test; COMMIT; 5. [Terminal 1] 1 minute after, read the test table again, and got "snapshot error" error. SELECT * FROM test; Since #2 makes a snapshot I got at #1 dirty, I expected to get "snapshot too old" error at #3 where I read test table again after enough time. But I could never get "snapshot too old" error at #3. On the other hand, when I set old_snapshot_threshold = 0 I can got the error at #3. Is this expected behavior? Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers