summaryrefslogtreecommitdiffstats
path: root/src/test/isolation/specs/vacuum-reltuples.spec
blob: ae2f79b8fe89a7774236436482cff26ad12b1d48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Test for vacuum's handling of reltuples when pages are skipped due
# to page pins. We absolutely need to avoid setting reltuples=0 in
# such cases, since that interferes badly with planning.
#
# Expected result in second permutation is 20 tuples rather than 21 as
# for the others, because vacuum should leave the previous result
# (from before the insert) in place.

setup {
    create table smalltbl
        as select i as id from generate_series(1,20) i;
    alter table smalltbl set (autovacuum_enabled = off);
}
setup {
    vacuum analyze smalltbl;
}

teardown {
    drop table smalltbl;
}

session worker
step open {
    begin;
    declare c1 cursor for select 1 as dummy from smalltbl;
}
step fetch1 {
    fetch next from c1;
}
step close {
    commit;
}
step stats {
    select relpages, reltuples from pg_class
     where oid='smalltbl'::regclass;
}

session vacuumer
step vac {
    vacuum smalltbl;
}
step modify {
    insert into smalltbl select max(id)+1 from smalltbl;
}

permutation modify vac stats
permutation modify open fetch1 vac close stats
permutation modify vac stats