Re: Doc: Add note for running ANALYZE after ALTER TABLE ... SET EXPRESSION

From: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
To: Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>
Cc: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Doc: Add note for running ANALYZE after ALTER TABLE ... SET EXPRESSION
Date: 2025-08-04 11:01:34
Message-ID: CAHGQGwG5yrrwnjoOjuN7f6BXCQx5XkE1Hyzq+avnGmSknwLT_g@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Aug 4, 2025 at 3:14 PM Yugo Nagata <nagata(at)sraoss(dot)co(dot)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.
------------------------------

Regards,

--
Fujii Masao

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message David Rowley 2025-08-04 11:07:07 Re: A little cosmetic to convert_VALUES_to_ANY()
Previous Message shveta malik 2025-08-04 10:38:35 Re: POC: enable logical decoding when wal_level = 'replica' without a server restart