diff options
Diffstat (limited to 'src/backend/commands/indexcmds.c')
-rw-r--r-- | src/backend/commands/indexcmds.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index d35deb433aa..14d24b3cc40 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -2452,6 +2452,42 @@ ChooseIndexColumnNames(List *indexElems) } /* + * ReindexParseOptions + * Parse list of REINDEX options, returning a bitmask of ReindexOption. + */ +int +ReindexParseOptions(ParseState *pstate, ReindexStmt *stmt) +{ + ListCell *lc; + int options = 0; + bool concurrently = false; + bool verbose = false; + + /* Parse option list */ + foreach(lc, stmt->params) + { + DefElem *opt = (DefElem *) lfirst(lc); + + if (strcmp(opt->defname, "verbose") == 0) + verbose = defGetBoolean(opt); + else if (strcmp(opt->defname, "concurrently") == 0) + concurrently = defGetBoolean(opt); + else + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized REINDEX option \"%s\"", + opt->defname), + parser_errposition(pstate, opt->location))); + } + + options = + (verbose ? REINDEXOPT_VERBOSE : 0) | + (concurrently ? REINDEXOPT_CONCURRENTLY : 0); + + return options; +} + +/* * ReindexIndex * Recreate a specific index. */ |