diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-08-02 23:49:19 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-08-02 23:49:19 -0400 |
commit | 09cecdf285ea9f51aed669f9ea1ba840197d49d0 (patch) | |
tree | 3ae143caf62089b9579acee6b52a92ad2975a6d8 /src/backend/access/common/reloptions.c | |
parent | 690ed2b76ab91eb79ea04ee2bfbdc8a2693f2a37 (diff) | |
download | postgresql-09cecdf285ea9f51aed669f9ea1ba840197d49d0.tar.gz postgresql-09cecdf285ea9f51aed669f9ea1ba840197d49d0.zip |
Fix a number of places that produced XX000 errors in the regression tests.
It's against project policy to use elog() for user-facing errors, or to
omit an errcode() selection for errors that aren't supposed to be "can't
happen" cases. Fix all the violations of this policy that result in
ERRCODE_INTERNAL_ERROR log entries during the standard regression tests,
as errors that can reliably be triggered from SQL surely should be
considered user-facing.
I also looked through all the files touched by this commit and fixed
other nearby problems of the same ilk. I do not claim to have fixed
all violations of the policy, just the ones in these files.
In a few places I also changed existing ERRCODE choices that didn't
seem particularly appropriate; mainly replacing ERRCODE_SYNTAX_ERROR
by something more specific.
Back-patch to 9.5, but no further; changing ERRCODE assignments in
stable branches doesn't seem like a good idea.
Diffstat (limited to 'src/backend/access/common/reloptions.c')
-rw-r--r-- | src/backend/access/common/reloptions.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c index 8176b6a6d41..180f529060d 100644 --- a/src/backend/access/common/reloptions.c +++ b/src/backend/access/common/reloptions.c @@ -484,7 +484,7 @@ allocate_reloption(bits32 kinds, int type, char *name, char *desc) size = sizeof(relopt_string); break; default: - elog(ERROR, "unsupported option type"); + elog(ERROR, "unsupported reloption type %d", type); return NULL; /* keep compiler quiet */ } @@ -1016,7 +1016,8 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, parsed = parse_bool(value, &option->values.bool_val); if (validate && !parsed) ereport(ERROR, - (errmsg("invalid value for boolean option \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("invalid value for boolean option \"%s\": %s", option->gen->name, value))); } break; @@ -1027,12 +1028,14 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, parsed = parse_int(value, &option->values.int_val, 0, NULL); if (validate && !parsed) ereport(ERROR, - (errmsg("invalid value for integer option \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("invalid value for integer option \"%s\": %s", option->gen->name, value))); if (validate && (option->values.int_val < optint->min || option->values.int_val > optint->max)) ereport(ERROR, - (errmsg("value %s out of bounds for option \"%s\"", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("value %s out of bounds for option \"%s\"", value, option->gen->name), errdetail("Valid values are between \"%d\" and \"%d\".", optint->min, optint->max))); @@ -1045,12 +1048,14 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, parsed = parse_real(value, &option->values.real_val); if (validate && !parsed) ereport(ERROR, - (errmsg("invalid value for floating point option \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("invalid value for floating point option \"%s\": %s", option->gen->name, value))); if (validate && (option->values.real_val < optreal->min || option->values.real_val > optreal->max)) ereport(ERROR, - (errmsg("value %s out of bounds for option \"%s\"", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("value %s out of bounds for option \"%s\"", value, option->gen->name), errdetail("Valid values are between \"%f\" and \"%f\".", optreal->min, optreal->max))); @@ -1168,7 +1173,7 @@ fillRelOptions(void *rdopts, Size basesize, } break; default: - elog(ERROR, "unrecognized reloption type %c", + elog(ERROR, "unsupported reloption type %d", options[i].gen->type); break; } |