Re: Make name optional in CREATE STATISTICS

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, Dean Rasheed <dean.a.rasheed@gmail.com>, Matthias van de Meent <boekewurm+postgres@gmail.com>, Simon Riggs <simon.riggs@enterprisedb.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2022-07-23T05:43:52Z
Lists: pgsql-hackers

Attachments

On Fri, Jul 22, 2022 at 11:54:27PM -0400, Tom Lane wrote:
> That does not seem like an improvement.  In v15:
> 
> regression=# REINDEX SYSTEM CONCURRENTLY db;
> ERROR:  cannot reindex system catalogs concurrently
> 
> As of HEAD:
> 
> regression=# REINDEX SYSTEM CONCURRENTLY db;
> ERROR:  syntax error at or near "CONCURRENTLY"
> LINE 1: REINDEX SYSTEM CONCURRENTLY db;
>                        ^
> 
> That is not a very helpful error, not even if the man page
> doesn't show the syntax as legal.

As the problem comes down to the fact that INDEX/TABLE, SCHEMA and
DATABASE/SYSTEM need to handle names for different object types each,
I think that we could do something like the attached, removing one
block on the way at the cost of an extra parser node.

By the way, it seems that 83011ce also broke the case of "REINDEX
DATABASE CONCURRENTLY", where the parser missed the addition of a
DefElem for "concurrently" in this case.
--
Michael

Commits

  1. Fix a few issues with REINDEX grammar

  2. Rework grammar for REINDEX

  3. parser: centralize common auxiliary productions

  4. Make the name optional in CREATE STATISTICS.