doc: Recommend ANALYZE after ALTER TABLE ... SET EXPRESSION AS.
authorFujii Masao <fujii@postgresql.org>
Wed, 6 Aug 2025 07:48:47 +0000 (16:48 +0900)
committerFujii Masao <fujii@postgresql.org>
Wed, 6 Aug 2025 07:48:47 +0000 (16:48 +0900)
ALTER TABLE ... SET EXPRESSION AS removes statistics for the target column,
so running ANALYZE afterward is recommended. But this was previously not
documented, even though a similar recommendation exists for
ALTER TABLE ... SET DATA TYPE, which also clears the column's statistics.
This commit updates the documentation to include the ANALYZE recommendation
for SET EXPRESSION AS.

Since v18, virtual generated columns are supported, and these columns never
have statistics. Therefore, ANALYZE is not needed after SET DATA TYPE or
SET EXPRESSION AS when used on virtual generated columns. This commit also
updates the documentation to clarify that ANALYZE is unnecessary in such cases.

Back-patch the ANALYZE recommendation for SET EXPRESSION AS to v17
where the feature was introduced, and the note about virtual generated
columns to v18 where those columns were added.

Author: Yugo Nagata <nagata@sraoss.co.jp>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/20250804151418.0cf365bd2855d606763443fe@sraoss.co.jp
Backpatch-through: 17

doc/src/sgml/ref/alter_table.sgml

index 896a7e7baafe2fbea4011d3def809072b92a37e5..029ddb391ec8dc06e5f888caadddca0752f809b4 100644 (file)
@@ -265,6 +265,12 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
       in the column is rewritten and all the future changes will apply the new
       generation expression.
      </para>
+
+     <para>
+      When this form is used, the column's statistics are removed,
+      so running <link linkend="sql-analyze"><command>ANALYZE</command></link>
+      on the table afterwards is recommended.
+     </para>
     </listitem>
    </varlistentry>