On Mon, 4 Aug 2025 20:01:34 +0900
Fujii Masao <masao.fu...@gmail.com> wrote:

> On Mon, Aug 4, 2025 at 3:14 PM Yugo Nagata <nag...@sraoss.co.jp> wrote:
> >
> > Hi,
> >
> > The documentation recommends running ANALYZE after the "ALTER TABLE ... SET 
> > DATA TYPE"
> > command since the statistics will become wrong after that.
> >
> > That same thing can be applied to "ALTER TABLE ... SET EXPRESSION" commands,
> > but that is not described in the documentation, so I've attached a patch
> > to add this statement.
> 
> +1
> 
> +      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.
> 
> ANALYZE is not needed for virtual generated columns, since they
> don't have statistics in the first place? If so, would it be clearer to
> explicitly mention that? How about rephrasing it like this?
> 
> ------------------------------
> When this form is used on a stored generated column, its statistics
> are removed, so running <link linkend="sql-analyze"><command>ANALYZE
> </command></link> on the table afterwards is recommended.
> For a virtual generated column, <command>ANALYZE</command>
> is not necessary because such columns never have statistics.
> ------------------------------

Thank you for looking at it. I overlooked that virtual generated columns
don't have statistics currently (I'm working on this at [1], though).

Your suggestion makes sense, so I've attached an updated patch.
I also mentioned virtual generated column in the description
of SET DATA TYPE.

[1] 
https://www.postgresql.org/message-id/20250801002830.143b25971fb9594b89d96aee%40sraoss.co.jp

Regards,
Yugo Nagata

-- 
Yugo Nagata <nag...@sraoss.co.jp>
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml
index 1e4f26c13f6..20f0e4a3140 100644
--- a/doc/src/sgml/ref/alter_table.sgml
+++ b/doc/src/sgml/ref/alter_table.sgml
@@ -207,9 +207,11 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
      </para>
 
      <para>
-      When this form is used, the column's statistics are removed,
+      When this form is used, the column's statistics are removed if any,
       so running <link linkend="sql-analyze"><command>ANALYZE</command></link>
       on the table afterwards is recommended.
+      For a virtual generated column, <command>ANALYZE</command>
+      is not necessary because such columns never have statistics.
      </para>
     </listitem>
    </varlistentry>
@@ -270,6 +272,14 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
       in a stored generated column is rewritten and all the future changes
       will apply the new generation expression.
      </para>
+
+     <para>
+      When this form is used on a stored generated column, its statistics
+      are removed, so running <link linkend="sql-analyze"><command>ANALYZE
+      </command></link> on the table afterwards is recommended.
+      For a virtual generated column, <command>ANALYZE</command>
+      is not necessary because such columns never have statistics.
+     </para>
     </listitem>
    </varlistentry>
 

Reply via email to