Review comments:
* I attached some documentation suggestions.
* The patch should be merged with CVS HEAD. The changes required are
minor; but notice that there is a minor style difference in the assert
in vacuum().
* vacuumdb should reject -i without -f
* The replace or inplace option is a "magical" default, because "VACUUM
FULL" defaults to "replace" for user tables and "inplace" for system
tables. I tried to make that more clear in my documentation suggestions.
* "VACUUM (FULL REPLACE) pg_class" should be rejected, not silently
turned into "VACUUM (FULL INPLACE) pg_class".
* There are some windows line endings in the patch, which should be
removed.
* In vacuumdb, the code for handling INPLACE is a little ugly. Perhaps
it should be changed to always use your new options syntax? That might
be more code, but it would be a little more readable.
Regards,
Jeff Davis
*** a/doc/src/sgml/ref/vacuum.sgml
--- b/doc/src/sgml/ref/vacuum.sgml
***************
*** 22,29 **** PostgreSQL documentation
<refsynopsisdiv>
<synopsis>
VACUUM [ ( { FULL [ INPLACE | REPLACE ] | FREEZE | VERBOSE | ANALYZE } [, ...] ) ] [ <replaceable class="PARAMETER">table</replaceable> [ (<replaceable class="PARAMETER">column</replaceable> [, ...] ) ] ]
! VACUUM [ FULL [ INPLACE | REPLACE ] ] [ FREEZE ] [ VERBOSE ] [ <replaceable class="PARAMETER">table</replaceable> ]
! VACUUM [ FULL [ INPLACE | REPLACE ] ] [ FREEZE ] [ VERBOSE ] ANALYZE [ <replaceable class="PARAMETER">table</replaceable> [ (<replaceable class="PARAMETER">column</replaceable> [, ...] ) ] ]
</synopsis>
</refsynopsisdiv>
--- 22,29 ----
<refsynopsisdiv>
<synopsis>
VACUUM [ ( { FULL [ INPLACE | REPLACE ] | FREEZE | VERBOSE | ANALYZE } [, ...] ) ] [ <replaceable class="PARAMETER">table</replaceable> [ (<replaceable class="PARAMETER">column</replaceable> [, ...] ) ] ]
! VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ <replaceable class="PARAMETER">table</replaceable> ]
! VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ <replaceable class="PARAMETER">table</replaceable> [ (<replaceable class="PARAMETER">column</replaceable> [, ...] ) ] ]
</synopsis>
</refsynopsisdiv>
***************
*** 85,101 **** VACUUM [ FULL [ INPLACE | REPLACE ] ] [ FREEZE ] [ VERBOSE ] ANALYZE [ <replacea
<para>
Selects <quote>full</quote> vacuum, which can reclaim more
space, but takes much longer and exclusively locks the table.
- <literal>INPLACE</literal> option consumes less disk space but takes
- longer time, and <literal>REPLACE</literal> option vice versa.
- The default is <literal>REPLACE</literal>.
</para>
<para>
! <command>VACUUM (FULL INPLACE)</command> behaves as a traditional
! <command>VACUUM FULL</command> command. It moves tuples in the table
! from the tail to the head of files. On the other hand,
! <command>VACUUM (FULL REPLACE)</command> behaves as a
! <command>CLUSTER</command> command without any sorting.
! It moves all tuples into a new table and swap the old and the new tables.
</para>
</listitem>
</varlistentry>
--- 85,107 ----
<para>
Selects <quote>full</quote> vacuum, which can reclaim more
space, but takes much longer and exclusively locks the table.
</para>
<para>
! If <literal>REPLACE</literal> is specified, the entire table and
! all indexes are rewritten. This method requires extra disk space
! in which to write the new data, and is generally most efficient
! when a significant amount of space needs to be reclaimed from
! within the table. This method is the default for user tables,
! but it cannot be used on system catalogs.
! </para>
! <para>
! If <literal>INPLACE</literal> is specified, the table and
! indexes are modified in place to reclaim space. This method may
! require less disk space than <literal>FULL REPLACE</literal> for
! the table data, but the indexes will grow which may counteract
! that benefit. <literal>FULL INPLACE</literal> is generally
! slower, and should only be used for system catalogs (for which
! it is the default).
</para>
</listitem>
</varlistentry>
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers