summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2011-02-04 13:08:56 -0500
committerRobert Haas <rhaas@postgresql.org>2011-02-04 13:08:56 -0500
commitedad08ba545b43261b4d54d65122b45c9b5ee801 (patch)
tree39d7192f91f49a080f69f9f4adb7014094272f18
parent6f59a5e5dd73ec2c448dd7038accf5aaba6dc04b (diff)
Update ALTER TABLE docs to mention using VACUUM FULL for rewrites.
Remove the claim that ALTER TABLE .. SET DATA TYPE is the fastest way of rewriting a table, since it no longer is. Noah Misch and Robert Haas, based on a suggestion from Tom Lane.
-rw-r--r--doc/src/sgml/ref/alter_table.sgml23
1 files changed, 8 insertions, 15 deletions
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml
index 1d52be6a73d..52f70cea18e 100644
--- a/doc/src/sgml/ref/alter_table.sgml
+++ b/doc/src/sgml/ref/alter_table.sgml
@@ -403,9 +403,9 @@ ALTER TABLE <replaceable class="PARAMETER">name</replaceable>
for details on the available parameters. Note that the table contents
will not be modified immediately by this command; depending on the
parameter you might need to rewrite the table to get the desired effects.
- That can be done with <xref linkend="SQL-CLUSTER">
- or one of the forms of <command>ALTER
- TABLE</> that forces a table rewrite.
+ That can be done with <link linkend="SQL-VACUUM">VACUUM
+ FULL</>, <xref linkend="SQL-CLUSTER"> or one of the forms
+ of <command>ALTER TABLE</> that forces a table rewrite.
</para>
<note>
@@ -777,18 +777,11 @@ ALTER TABLE <replaceable class="PARAMETER">name</replaceable>
</para>
<para>
- The fact that <literal>SET DATA TYPE</> requires rewriting the whole table
- is sometimes an advantage, because the rewriting process eliminates
- any dead space in the table. For example, to reclaim the space occupied
- by a dropped column immediately, the fastest way is:
-<programlisting>
-ALTER TABLE table ALTER COLUMN anycol TYPE anytype;
-</programlisting>
- where <literal>anycol</> is any remaining table column and
- <literal>anytype</> is the same type that column already has.
- This results in no semantically-visible change in the table,
- but the command forces rewriting, which gets rid of no-longer-useful
- data.
+ To force an immediate rewrite of the table, you can use
+ <link linkend="SQL-VACUUM">VACUUM FULL</>, <xref linkend="SQL-CLUSTER">
+ or one of the forms of ALTER TABLE that forces a rewrite, such as
+ SET DATA TYPE. This results in no semantically-visible change in the
+ table, but gets rid of no-longer-useful data.
</para>
<para>