OK, I remembered what was different. I had an index the first time. So,
it was the index I was watchin grow and never shrink.
Now this is reproduceable for me.
I dropped and recreated my test index
drop index test_yn_dx ;
create index test_yn_dx on test (yn);
vacuum full;
[postgres@css120] oid2name -d scott.marlowe
All tables from database "scott.marlowe":
---------------------------------
16557 = test
126563 = test_yn_dx
cd into the base/oid of my database, then:
du -s 16557 126563
11128 16557
1772 126563
update test set yn=true where yn=true;
UPDATE 50080
[postgres@css120 16556]$ du -s 16557 126563
16704 16557
2948 126563
vacuum;
[postgres@css120 16556]$ du -s 16557 126563
16704 16557
2948 126563
vacuum full;
[postgres@css120 16556]$ du -s 16557 126563
11128 16557
4100 126563
I tried:
vacuum test_yn_dx;
NOTICE: VACUUM: can not process indexes, views or special system tables
NOTICE: VACUUM: table not found
VACUUM
so, then I tried:
reindex index test_yn_dx;
REINDEX
oid2name -d scott.marlowe
All tables from database "scott.marlowe":
---------------------------------
16557 = test
126564 = test_yn_dx
[postgres@css120 16556]$ du -s 16557 126564
11128 16557
1772 126564
And reclaimed the space. Is that the official way, short of dropping and
recreating an index to reclaim its space? Is there a plan to make vacuum
reclaim unused space in indexes? Just wondering.