Haozhou Wang <hawang(at)pivotal(dot)io> writes:
> We meet a corner case that related to the behavior of Vacuum Full.
> ...
> If we run both sql scripts on same database in parallel, the "VACUUM FULL
> a;" will not release the disk space.
I think what's happening is that the delete in script 1 happens after the
"pg_sleep" in script 2 starts. Then the pg_sleep has an open snapshot
that could potentially see the deleted rows, so they can't be removed yet.
You could check this theory by changing the vacuum to use VERBOSE, and
seeing what it says about rows that can't be removed yet.
regards, tom lane