On Mon, 2023-12-04 at 14:26 +0900, Michael Paquier wrote:
> On a recent thread about adding support for event triggers with
> REINDEX, a change has been proposed to make REINDEX queries reflect in
> the logs under the DDL category:
> https://www.postgresql.org/message-id/ZW0ltJXJ2Aigvizl%40paquier.xyz
>
> REINDEX being classified as LOGSTMT_ALL comes from 893632be4e17 back
> in 2006, and the code does not know what to do about it. Doing the
> change would be as simple as that:
> case T_ReindexStmt:
> - lev = LOGSTMT_ALL; /* should this be DDL? */
> + lev = LOGSTMT_DDL;
>
> REINDEX is philosophically a maintenance command and a Postgres
> extension not in the SQL standard, so it does not really qualify as a
> DDL because it does not do in object definitions, so we could just
> delete this comment. Or could it be more useful to consider that as a
> special case and report it as a DDL, impacting log_statements?
It should be qualified just like CREATE INDEX.
Both are not covered by the standard, which does not mention indexes,
since they are an "implementation detail".
I think that it is pretty clear that CREATE INDEX should be considered
DDL, since it defines (creates) and object. The same should apply to
REINDEX.
Yours,
Laurenz Albe