I know that doing a VACUUM FULL on a table will free up disk space and return it to the OS.
There's been a couple of occasions where my OS (windows) has warned me that it's running low on disc space. My response has been to quickly shut down everything I can and run a VACUUM FULL on one of the more active tables.
I've noticed that VACUUM FULL appears to require a least a few hundred Mbytes free to actually work. If I attempt a VACCUM FULL on a 1Gbyte table when I've only got say 50 Mbytes of disk space then this quickly disappears and my computer grounds to a halt pretty quickly and the VACUUM FULL won't work.
How do I free OS space in a POSTGRES database when I know there is unused space available, but there's not enough space to run a VACUUM?
(I know the correct answer is - 'don't be stupid enough to let it happen in the first place', but sh1t happens occasionally!)