There HAS to be a bug here. I'm running 7.2, and haven't tried 7.2.1, but
I'm guessing it won't fix this.
with a table with a text and int field, I get the standard behaviour.
Update a lot, file grows. vacuum (full) it and it shrinks back to it's
original, or nearly so, the same size. With a bool in the table, things
get ugly fast.
on a 100,000 row table:
table size in blocks: 48500
update test set yn=true where yn=true;
table size in blocks: 49716
vacuum;
table size in blocks: 49688
vacuum full;
table size in blocks: 50832
and it just keeps going and going and going and going...
Something is broken in vacuum and bools. I haven't tested any types but
text, int, and bool so far. I'll test varchar, float and numeric next and
let ya know.