|
|
|
|
@ -777,7 +777,7 @@ ALTER TABLE <replaceable class="PARAMETER">name</replaceable> |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The fact that <literal>ALTER TYPE</> requires rewriting the whole table |
|
|
|
|
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: |
|
|
|
|
@ -792,15 +792,15 @@ ALTER TABLE table ALTER COLUMN anycol TYPE anytype; |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The <literal>USING</literal> option of <literal>ALTER TYPE</> can actually |
|
|
|
|
The <literal>USING</literal> option of <literal>SET DATA TYPE</> can actually |
|
|
|
|
specify any expression involving the old values of the row; that is, it |
|
|
|
|
can refer to other columns as well as the one being converted. This allows |
|
|
|
|
very general conversions to be done with the <literal>ALTER TYPE</> |
|
|
|
|
very general conversions to be done with the <literal>SET DATA TYPE</> |
|
|
|
|
syntax. Because of this flexibility, the <literal>USING</literal> |
|
|
|
|
expression is not applied to the column's default value (if any); the |
|
|
|
|
result might not be a constant expression as required for a default. |
|
|
|
|
This means that when there is no implicit or assignment cast from old to |
|
|
|
|
new type, <literal>ALTER TYPE</> might fail to convert the default even |
|
|
|
|
new type, <literal>SET DATA TYPE</> might fail to convert the default even |
|
|
|
|
though a <literal>USING</literal> clause is supplied. In such cases, |
|
|
|
|
drop the default with <literal>DROP DEFAULT</>, perform the <literal>ALTER |
|
|
|
|
TYPE</>, and then use <literal>SET DEFAULT</> to add a suitable new |
|
|
|
|
|