mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Throw error for ALTER TABLE RESET of an invalid option
Also adjust pg_upgrade to not use this method for optional TOAST table creation. Patch by Fabrízio de Royes Mello
This commit is contained in:
@ -307,6 +307,8 @@ static void initialize_reloptions(void);
|
||||
static void parse_one_reloption(relopt_value *option, char *text_str,
|
||||
int text_len, bool validate);
|
||||
|
||||
static bool is_valid_reloption(char *name);
|
||||
|
||||
/*
|
||||
* initialize_reloptions
|
||||
* initialization routine, must be called before parsing
|
||||
@ -381,6 +383,25 @@ initialize_reloptions(void)
|
||||
need_initialization = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* is_valid_reloption
|
||||
* check if a reloption exists
|
||||
*
|
||||
*/
|
||||
static bool
|
||||
is_valid_reloption(char *name)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; relOpts[i]; i++)
|
||||
{
|
||||
if (pg_strcasecmp(relOpts[i]->name, name) == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* add_reloption_kind
|
||||
* Create a new relopt_kind value, to be used in custom reloptions by
|
||||
@ -672,6 +693,11 @@ transformRelOptions(Datum oldOptions, List *defList, char *namspace,
|
||||
|
||||
if (isReset)
|
||||
{
|
||||
if (!is_valid_reloption(def->defname))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
errmsg("unrecognized parameter \"%s\"", def->defname)));
|
||||
|
||||
if (def->arg != NULL)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_SYNTAX_ERROR),
|
||||
|
Reference in New Issue
Block a user