Q: Space required for VACUUM FULL table From the PostgreSQL 10.4 manual regarding a full vacuum:

Note that they also temporarily use extra disk space approximately equal to the size of the table, since the old copies of the table and indexes can't
  be released until the new ones are complete

I've read in this in many different places and phrased in a variety of ways.  Some indicating that the space required is at most equal to the size of the vacuumed table. Hinting that it may only require enough space to store the resulting vacuumed table, i.e. of size in the range [0-size_of_original_table], depending on how many dead rows are in the table.
My question is: Will doing a full vacuum of a table always require a space equal to the original table size or is it dependent on the number of live rows in the table?

A: The additional space required by VACUUM (FULL) depends on the number of live rows in the table.
What happens during VACUUM (FULL) is that a new copy of the table is written.
All live tuples (= row versions) and the dead tuples that cannot be removed yet will be written to this new copy.
When the transaction finishes, the old copy will be removed.

A: It is recommended to have the free space at least equal to size of largest table in the database.
i.e, if your database size is 10GB and the largest table size on your database is 2GB. Then you must have at least 2GB of extra space on your disk, in order to complete the vacuum successfully.
Because VACUUM FULL will create a new copy of the table, excluding the dead rows and then remove the existing tables.
