On Thu, Jun 16, 2016 at 1:19 PM, Kevin Grittner <kgri...@gmail.com> wrote: > On Thu, Jun 16, 2016 at 11:54 AM, Andres Freund <and...@anarazel.de> wrote: >> On 2016-06-16 12:43:34 -0400, Robert Haas wrote:
>>> Maybe it would help if you lay out the whole sequence of events, like: >>> >>> S1: Does this. >>> S2: Does that. >>> S1: Now does something else. >> >> I presume it'd be something like: >> >> Assuming a 'toasted' table, which contains one row, with a 1GB field. >> >> S1: BEGIN REPEATABLE READ; >> S1: SELECT SUM(length(one_gb_record)) FROM toasted; >> S2: DELETE FROM toasted; >> AUTOVAC: vacuum toasted's toast table, it's large. skip toasted, it's small >> S1: SELECT SUM(length(one_gb_record)) FROM toasted; >> <missing chunk error> > > I'll put together a test like that and post in a bit. old_snapshot_threshold = '1min' autovacuum_vacuum_threshold = 0\ autovacuum_vacuum_scale_factor = 0.0000000001 test=# CREATE TABLE gb (rec bytea not null); CREATE TABLE test=# ALTER TABLE gb ALTER COLUMN rec SET STORAGE external; ALTER TABLE test=# INSERT INTO gb SELECT t FROM (SELECT repeat('x', 1000000000)::bytea) x(t); INSERT 0 1 test=# BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; BEGIN test=# SELECT SUM(length(rec)) FROM gb; sum ------------ 1000000000 (1 row) [wait for autovacuum to run] test=# SELECT SUM(length(rec)) FROM gb; ERROR: snapshot too old -- Kevin Grittner EDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers