mirror of
https://github.com/postgres/postgres.git
synced 2025-10-22 14:32:25 +03:00
Refactor CLUSTER and REINDEX grammar to use DefElem for option lists
This changes CLUSTER and REINDEX so as a parenthesized grammar becomes
possible for options, while unifying the grammar parsing rules for
option lists with the existing ones.
This is a follow-up of the work done in 873ea9e
for VACUUM, ANALYZE and
EXPLAIN. This benefits REINDEX for a potential backend-side filtering
for collatable-sensitive indexes and TABLESPACE, while CLUSTER would
benefit from the latter.
Author: Alexey Kondratov, Justin Pryzby
Discussion: https://postgr.es/m/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru
This commit is contained in:
@@ -14,11 +14,19 @@
|
||||
#define CLUSTER_H
|
||||
|
||||
#include "nodes/parsenodes.h"
|
||||
#include "parser/parse_node.h"
|
||||
#include "storage/lock.h"
|
||||
#include "utils/relcache.h"
|
||||
|
||||
|
||||
extern void cluster(ClusterStmt *stmt, bool isTopLevel);
|
||||
/* options for CLUSTER */
|
||||
typedef enum ClusterOption
|
||||
{
|
||||
CLUOPT_RECHECK = 1 << 0, /* recheck relation state */
|
||||
CLUOPT_VERBOSE = 1 << 1 /* print progress info */
|
||||
} ClusterOption;
|
||||
|
||||
extern void cluster(ParseState *pstate, ClusterStmt *stmt, bool isTopLevel);
|
||||
extern void cluster_rel(Oid tableOid, Oid indexOid, int options);
|
||||
extern void check_index_is_clusterable(Relation OldHeap, Oid indexOid,
|
||||
bool recheck, LOCKMODE lockmode);
|
||||
|
@@ -34,6 +34,7 @@ extern ObjectAddress DefineIndex(Oid relationId,
|
||||
bool check_not_in_use,
|
||||
bool skip_build,
|
||||
bool quiet);
|
||||
extern int ReindexParseOptions(ParseState *pstate, ReindexStmt *stmt);
|
||||
extern void ReindexIndex(RangeVar *indexRelation, int options, bool isTopLevel);
|
||||
extern Oid ReindexTable(RangeVar *relation, int options, bool isTopLevel);
|
||||
extern void ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind,
|
||||
|
Reference in New Issue
Block a user