aboutsummaryrefslogtreecommitdiff
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)
downloadpostgresql-edad08ba545b43261b4d54d65122b45c9b5ee801.tar.gz
postgresql-edad08ba545b43261b4d54d65122b45c9b5ee801.zip
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>