* and also calls any check hook the parameter may have.
*
* record: GUC variable's info record
- * name: variable name (should match the record of course)
* value: proposed value, as a string
* source: identifies source of value (check hooks may need this)
* elevel: level to log any error reports at
*/
static bool
parse_and_validate_value(struct config_generic *record,
- const char *name, const char *value,
+ const char *value,
GucSource source, int elevel,
union config_var_val *newval, void **newextra)
{
ereport(elevel,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("parameter \"%s\" requires a Boolean value",
- name)));
+ conf->gen.name)));
return false;
}
ereport(elevel,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid value for parameter \"%s\": \"%s\"",
- name, value),
+ conf->gen.name, value),
hintmsg ? errhint("%s", _(hintmsg)) : 0));
return false;
}
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("%d%s%s is outside the valid range for parameter \"%s\" (%d%s%s .. %d%s%s)",
newval->intval, unitspace, unit,
- name,
+ conf->gen.name,
conf->min, unitspace, unit,
conf->max, unitspace, unit)));
return false;
ereport(elevel,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid value for parameter \"%s\": \"%s\"",
- name, value),
+ conf->gen.name, value),
hintmsg ? errhint("%s", _(hintmsg)) : 0));
return false;
}
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("%g%s%s is outside the valid range for parameter \"%s\" (%g%s%s .. %g%s%s)",
newval->realval, unitspace, unit,
- name,
+ conf->gen.name,
conf->min, unitspace, unit,
conf->max, unitspace, unit)));
return false;
ereport(elevel,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid value for parameter \"%s\": \"%s\"",
- name, value),
+ conf->gen.name, value),
hintmsg ? errhint("%s", _(hintmsg)) : 0));
if (hintmsg)
ereport(elevel,
(errcode(ERRCODE_INVALID_TRANSACTION_STATE),
errmsg("parameter \"%s\" cannot be set during a parallel operation",
- name)));
+ record->name)));
return 0;
}
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed",
- name)));
+ record->name)));
return 0;
}
break;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the server",
- name)));
+ record->name)));
return 0;
}
break;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed now",
- name)));
+ record->name)));
return 0;
}
*/
AclResult aclresult;
- aclresult = pg_parameter_aclcheck(name, srole, ACL_SET);
+ aclresult = pg_parameter_aclcheck(record->name, srole, ACL_SET);
if (aclresult != ACLCHECK_OK)
{
/* No granted privilege */
ereport(elevel,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("permission denied to set parameter \"%s\"",
- name)));
+ record->name)));
return 0;
}
}
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be set after connection start",
- name)));
+ record->name)));
return 0;
}
break;
*/
AclResult aclresult;
- aclresult = pg_parameter_aclcheck(name, srole, ACL_SET);
+ aclresult = pg_parameter_aclcheck(record->name, srole, ACL_SET);
if (aclresult != ACLCHECK_OK)
{
/* No granted privilege */
ereport(elevel,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("permission denied to set parameter \"%s\"",
- name)));
+ record->name)));
return 0;
}
}
ereport(elevel,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("cannot set parameter \"%s\" within security-definer function",
- name)));
+ record->name)));
return 0;
}
if (InSecurityRestrictedOperation())
ereport(elevel,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("cannot set parameter \"%s\" within security-restricted operation",
- name)));
+ record->name)));
return 0;
}
}
{
ereport(elevel,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("parameter \"%s\" cannot be reset", name)));
+ errmsg("parameter \"%s\" cannot be reset", record->name)));
return 0;
}
if (action == GUC_ACTION_SAVE)
ereport(elevel,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("parameter \"%s\" cannot be set locally in functions",
- name)));
+ record->name)));
return 0;
}
}
if (changeVal && !makeDefault)
{
elog(DEBUG3, "\"%s\": setting ignored because previous source is higher priority",
- name);
+ record->name);
return -1;
}
changeVal = false;
if (value)
{
- if (!parse_and_validate_value(record, name, value,
+ if (!parse_and_validate_value(record, value,
source, elevel,
&newval_union, &newextra))
return 0;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the server",
- name)));
+ conf->gen.name)));
return 0;
}
record->status &= ~GUC_PENDING_RESTART;
if (value)
{
- if (!parse_and_validate_value(record, name, value,
+ if (!parse_and_validate_value(record, value,
source, elevel,
&newval_union, &newextra))
return 0;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the server",
- name)));
+ conf->gen.name)));
return 0;
}
record->status &= ~GUC_PENDING_RESTART;
if (value)
{
- if (!parse_and_validate_value(record, name, value,
+ if (!parse_and_validate_value(record, value,
source, elevel,
&newval_union, &newextra))
return 0;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the server",
- name)));
+ conf->gen.name)));
return 0;
}
record->status &= ~GUC_PENDING_RESTART;
if (value)
{
- if (!parse_and_validate_value(record, name, value,
+ if (!parse_and_validate_value(record, value,
source, elevel,
&newval_union, &newextra))
return 0;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the server",
- name)));
+ conf->gen.name)));
return 0;
}
record->status &= ~GUC_PENDING_RESTART;
if (value)
{
- if (!parse_and_validate_value(record, name, value,
+ if (!parse_and_validate_value(record, value,
source, elevel,
&newval_union, &newextra))
return 0;
ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
errmsg("parameter \"%s\" cannot be changed without restarting the server",
- name)));
+ conf->gen.name)));
return 0;
}
record->status &= ~GUC_PENDING_RESTART;
union config_var_val newval;
void *newextra = NULL;
- if (!parse_and_validate_value(record, name, value,
+ if (!parse_and_validate_value(record, value,
PGC_S_FILE, ERROR,
&newval, &newextra))
ereport(ERROR,