diff options
author | Robert Haas <rhaas@postgresql.org> | 2011-02-04 13:08:56 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2011-02-04 13:08:56 -0500 |
commit | edad08ba545b43261b4d54d65122b45c9b5ee801 (patch) | |
tree | 39d7192f91f49a080f69f9f4adb7014094272f18 | |
parent | 6f59a5e5dd73ec2c448dd7038accf5aaba6dc04b (diff) | |
download | postgresql-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.sgml | 23 |
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> |