Subject: ANALYZE being a read v write operation clarification

From: PG Doc comments form <[email-masked]>
Date: Fri, 12 Sep 2025 22:51:13 +0000

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/17/sql-analyze.html
Description:

In the ANALYZE docs it states,
- "ANALYZE collects statistics about the contents of tables in the database,
and stores the results in the pg_statistic system catalog"
- "ANALYZE requires only a read lock on the target table".

When trying to determien if this command could be run with
`default_transaction_read_only` set to `on,` I was left stumped on whether
this is a read only or read-write operation. It is unclear to me, what
"stores" in the context of the "pg_statistic system catalog" means, and
whether that requires a write operation. I'm potentially missing
understanding on the workings of the `pg_statistic` system catalog, but
figured this could be a small improvement made to clarify the docs about
this operation.

---

From: "David G. Johnston" <[email-masked]>
Date: Sat, 13 Sep 2025 15:59:32 -0700

> figured this could be a small improvement made to clarify the docs about

Yes, it is a write operation - otherwise it would be pretty useless since
it has no output to the client.

It reads the contents of the named table, computes statistics, and then
saves/stores/writes them for future reference - the location being saved to
is a system catalog (a special kind of table).

If you want to propose a complete suggestion here it would be entertained,
but none of the terms seem problematic on their own. Though maybe some
requiring looking up if one is unfamiliar.  “stores the results in the
system catalog” vs. “writes the results to the system catalog” seems like a
pure style choice.  They mean the same thing.  Though I’m probably biased
as a native English speaker.  But I’d want some other opinions in favor of
changing it before I’d try to go improve it.

David J.