mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-12 12:17:53 +02:00
Rework grammar for REINDEX
The part of grammar have grown needlessly duplicative and more complex that necessary. Rewrite. Reviewed-by: Michaël Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/20220721174212.cmitjpuimx6ssyyj@alvherre.pgsql
This commit is contained in:
parent
0b292bed92
commit
83011ce7d7
@ -22,7 +22,8 @@ PostgreSQL documentation
|
|||||||
<refsynopsisdiv>
|
<refsynopsisdiv>
|
||||||
<synopsis>
|
<synopsis>
|
||||||
REINDEX [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] { INDEX | TABLE | SCHEMA } [ CONCURRENTLY ] <replaceable class="parameter">name</replaceable>
|
REINDEX [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] { INDEX | TABLE | SCHEMA } [ CONCURRENTLY ] <replaceable class="parameter">name</replaceable>
|
||||||
REINDEX [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] { DATABASE | SYSTEM } [ CONCURRENTLY ] [ <replaceable class="parameter">name</replaceable> ]
|
REINDEX [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] DATABASE [ CONCURRENTLY ] [ <replaceable class="parameter">name</replaceable> ]
|
||||||
|
REINDEX [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] SYSTEM [ <replaceable class="parameter">name</replaceable> ]
|
||||||
|
|
||||||
<phrase>where <replaceable class="parameter">option</replaceable> can be one of:</phrase>
|
<phrase>where <replaceable class="parameter">option</replaceable> can be one of:</phrase>
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
|
|||||||
|
|
||||||
%type <str> opt_single_name
|
%type <str> opt_single_name
|
||||||
%type <list> opt_qualified_name
|
%type <list> opt_qualified_name
|
||||||
%type <boolean> opt_concurrently
|
%type <boolean> opt_concurrently
|
||||||
%type <dbehavior> opt_drop_behavior
|
%type <dbehavior> opt_drop_behavior
|
||||||
|
|
||||||
%type <node> alter_column_default opclass_item opclass_drop alter_using
|
%type <node> alter_column_default opclass_item opclass_drop alter_using
|
||||||
@ -564,7 +564,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
|
|||||||
%type <defelt> generic_option_elem alter_generic_option_elem
|
%type <defelt> generic_option_elem alter_generic_option_elem
|
||||||
%type <list> generic_option_list alter_generic_option_list
|
%type <list> generic_option_list alter_generic_option_list
|
||||||
|
|
||||||
%type <ival> reindex_target_type reindex_target_multitable reindex_name_optional
|
%type <ival> reindex_target_type
|
||||||
|
%type <list> opt_reindex_option_list
|
||||||
|
|
||||||
%type <node> copy_generic_opt_arg copy_generic_opt_arg_list_item
|
%type <node> copy_generic_opt_arg copy_generic_opt_arg_list_item
|
||||||
%type <defelt> copy_generic_opt_elem
|
%type <defelt> copy_generic_opt_elem
|
||||||
@ -9091,78 +9092,54 @@ DropTransformStmt: DROP TRANSFORM opt_if_exists FOR Typename LANGUAGE name opt_d
|
|||||||
*
|
*
|
||||||
* QUERY:
|
* QUERY:
|
||||||
*
|
*
|
||||||
* REINDEX [ (options) ] type [CONCURRENTLY] <name>
|
* REINDEX [ (options) ] {TABLE | INDEX | SCHEMA} [CONCURRENTLY] <name>
|
||||||
|
* REINDEX [ (options) ] DATABASE [CONCURRENTLY] [<name>]
|
||||||
|
* REINDEX [ (options) ] SYSTEM [<name>]
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
ReindexStmt:
|
ReindexStmt:
|
||||||
REINDEX reindex_target_type opt_concurrently qualified_name
|
REINDEX opt_reindex_option_list reindex_target_type opt_concurrently qualified_name
|
||||||
{
|
{
|
||||||
ReindexStmt *n = makeNode(ReindexStmt);
|
ReindexStmt *n = makeNode(ReindexStmt);
|
||||||
|
|
||||||
n->kind = $2;
|
n->kind = $3;
|
||||||
n->relation = $4;
|
n->relation = $5;
|
||||||
n->name = NULL;
|
n->name = NULL;
|
||||||
n->params = NIL;
|
n->params = $2;
|
||||||
if ($3)
|
if ($4)
|
||||||
n->params = lappend(n->params,
|
n->params = lappend(n->params,
|
||||||
makeDefElem("concurrently", NULL, @3));
|
makeDefElem("concurrently", NULL, @4));
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
| REINDEX reindex_target_multitable opt_concurrently name
|
| REINDEX opt_reindex_option_list SCHEMA opt_concurrently name
|
||||||
{
|
{
|
||||||
ReindexStmt *n = makeNode(ReindexStmt);
|
ReindexStmt *n = makeNode(ReindexStmt);
|
||||||
|
|
||||||
n->kind = $2;
|
n->kind = REINDEX_OBJECT_SCHEMA;
|
||||||
n->name = $4;
|
n->name = $5;
|
||||||
n->relation = NULL;
|
n->relation = NULL;
|
||||||
n->params = NIL;
|
n->params = $2;
|
||||||
if ($3)
|
if ($4)
|
||||||
n->params = lappend(n->params,
|
n->params = lappend(n->params,
|
||||||
makeDefElem("concurrently", NULL, @3));
|
makeDefElem("concurrently", NULL, @4));
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
| REINDEX reindex_name_optional
|
| REINDEX opt_reindex_option_list DATABASE opt_concurrently opt_single_name
|
||||||
{
|
{
|
||||||
ReindexStmt *n = makeNode(ReindexStmt);
|
ReindexStmt *n = makeNode(ReindexStmt);
|
||||||
n->kind = $2;
|
n->kind = REINDEX_OBJECT_DATABASE;
|
||||||
n->name = NULL;
|
n->name = NULL;
|
||||||
n->relation = NULL;
|
n->relation = NULL;
|
||||||
n->params = NIL;
|
n->params = $2;
|
||||||
$$ = (Node *)n;
|
|
||||||
}
|
|
||||||
| REINDEX '(' utility_option_list ')' reindex_name_optional
|
|
||||||
{
|
|
||||||
ReindexStmt *n = makeNode(ReindexStmt);
|
|
||||||
n->kind = $5;
|
|
||||||
n->name = NULL;
|
|
||||||
n->relation = NULL;
|
|
||||||
n->params = $3;
|
|
||||||
$$ = (Node *)n;
|
|
||||||
}
|
|
||||||
| REINDEX '(' utility_option_list ')' reindex_target_type opt_concurrently qualified_name
|
|
||||||
{
|
|
||||||
ReindexStmt *n = makeNode(ReindexStmt);
|
|
||||||
|
|
||||||
n->kind = $5;
|
|
||||||
n->relation = $7;
|
|
||||||
n->name = NULL;
|
|
||||||
n->params = $3;
|
|
||||||
if ($6)
|
|
||||||
n->params = lappend(n->params,
|
|
||||||
makeDefElem("concurrently", NULL, @6));
|
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
| REINDEX '(' utility_option_list ')' reindex_target_multitable opt_concurrently name
|
| REINDEX opt_reindex_option_list SYSTEM_P opt_single_name
|
||||||
{
|
{
|
||||||
ReindexStmt *n = makeNode(ReindexStmt);
|
ReindexStmt *n = makeNode(ReindexStmt);
|
||||||
|
n->kind = REINDEX_OBJECT_SYSTEM;
|
||||||
n->kind = $5;
|
n->name = NULL;
|
||||||
n->name = $7;
|
|
||||||
n->relation = NULL;
|
n->relation = NULL;
|
||||||
n->params = $3;
|
n->params = $2;
|
||||||
if ($6)
|
|
||||||
n->params = lappend(n->params,
|
|
||||||
makeDefElem("concurrently", NULL, @6));
|
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -9170,15 +9147,9 @@ reindex_target_type:
|
|||||||
INDEX { $$ = REINDEX_OBJECT_INDEX; }
|
INDEX { $$ = REINDEX_OBJECT_INDEX; }
|
||||||
| TABLE { $$ = REINDEX_OBJECT_TABLE; }
|
| TABLE { $$ = REINDEX_OBJECT_TABLE; }
|
||||||
;
|
;
|
||||||
reindex_target_multitable:
|
opt_reindex_option_list:
|
||||||
SCHEMA { $$ = REINDEX_OBJECT_SCHEMA; }
|
'(' utility_option_list ')' { $$ = $2; }
|
||||||
| SYSTEM_P { $$ = REINDEX_OBJECT_SYSTEM; }
|
| /* EMPTY */ { $$ = NULL; }
|
||||||
| DATABASE { $$ = REINDEX_OBJECT_DATABASE; }
|
|
||||||
;
|
|
||||||
/* For these options the name is optional */
|
|
||||||
reindex_name_optional:
|
|
||||||
SYSTEM_P { $$ = REINDEX_OBJECT_SYSTEM; }
|
|
||||||
| DATABASE { $$ = REINDEX_OBJECT_DATABASE; }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
@ -2521,6 +2521,12 @@ ERROR: cannot reindex system catalogs concurrently
|
|||||||
REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index
|
REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index
|
||||||
ERROR: cannot reindex system catalogs concurrently
|
ERROR: cannot reindex system catalogs concurrently
|
||||||
REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM
|
REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM
|
||||||
|
ERROR: syntax error at or near "CONCURRENTLY"
|
||||||
|
LINE 1: REINDEX SYSTEM CONCURRENTLY postgres;
|
||||||
|
^
|
||||||
|
REINDEX (CONCURRENTLY) SYSTEM postgres; -- ditto
|
||||||
|
ERROR: cannot reindex system catalogs concurrently
|
||||||
|
REINDEX (CONCURRENTLY) SYSTEM; -- ditto
|
||||||
ERROR: cannot reindex system catalogs concurrently
|
ERROR: cannot reindex system catalogs concurrently
|
||||||
-- Warns about catalog relations
|
-- Warns about catalog relations
|
||||||
REINDEX SCHEMA CONCURRENTLY pg_catalog;
|
REINDEX SCHEMA CONCURRENTLY pg_catalog;
|
||||||
|
@ -1072,6 +1072,8 @@ REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index
|
|||||||
REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table
|
REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table
|
||||||
REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index
|
REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index
|
||||||
REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM
|
REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM
|
||||||
|
REINDEX (CONCURRENTLY) SYSTEM postgres; -- ditto
|
||||||
|
REINDEX (CONCURRENTLY) SYSTEM; -- ditto
|
||||||
-- Warns about catalog relations
|
-- Warns about catalog relations
|
||||||
REINDEX SCHEMA CONCURRENTLY pg_catalog;
|
REINDEX SCHEMA CONCURRENTLY pg_catalog;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user