Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit68a2a43

Browse files
committed
Improve ereports for VACUUM's BUFFER_USAGE_LIMIT option
There's no need to check if opt->arg is NULL since defGetString() alreadydoes that and raises an ERROR if it is. Let's just remove that check.Also, combine the two remaining ERRORs into a single check. It seemsbetter to give an indication about what sort of values we're looking forrather than just to state that the value given isn't valid. MakeBUFFER_USAGE_LIMIT uppercase in this ERROR message too. It's alreadyupper case in one other error message, so make that consistent.Reported-by: Kyotaro HoriguchiDiscussion:https://postgr.es/m/20230411.102335.1643720544536884844.horikyota.ntt@gmail.com
1 parentd866f03 commit68a2a43

File tree

2 files changed

+11
-28
lines changed

2 files changed

+11
-28
lines changed

‎src/backend/commands/vacuum.c

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -195,38 +195,21 @@ ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel)
195195
intresult;
196196
char*vac_buffer_size;
197197

198-
if (opt->arg==NULL)
199-
{
200-
ereport(ERROR,
201-
(errcode(ERRCODE_SYNTAX_ERROR),
202-
errmsg("buffer_usage_limit option requires a valid value"),
203-
parser_errposition(pstate,opt->location)));
204-
}
205-
206198
vac_buffer_size=defGetString(opt);
207199

208-
if (!parse_int(vac_buffer_size,&result,GUC_UNIT_KB,&hintmsg))
209-
{
210-
ereport(ERROR,
211-
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
212-
errmsg("value: \"%s\": is invalid for buffer_usage_limit",
213-
vac_buffer_size),
214-
hintmsg ?errhint("%s",_(hintmsg)) :0));
215-
}
216-
217200
/*
218-
* Check that the specified size falls within the hard upper and
219-
* lower limits if it is not 0. We explicitly disallow -1 since
220-
* that behavior can be obtained by not specifying
221-
* BUFFER_USAGE_LIMIT.
201+
* Check that the specified value is valid and the size falls
202+
* within the hard upper and lower limits if it is not 0.
222203
*/
223-
if (result!=0&&
224-
(result<MIN_BAS_VAC_RING_SIZE_KB||result>MAX_BAS_VAC_RING_SIZE_KB))
204+
if (!parse_int(vac_buffer_size,&result,GUC_UNIT_KB,&hintmsg)||
205+
(result!=0&&
206+
(result<MIN_BAS_VAC_RING_SIZE_KB||result>MAX_BAS_VAC_RING_SIZE_KB)))
225207
{
226208
ereport(ERROR,
227209
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
228-
errmsg("buffer_usage_limit option must be 0 or between %d kB and %d kB",
229-
MIN_BAS_VAC_RING_SIZE_KB,MAX_BAS_VAC_RING_SIZE_KB)));
210+
errmsg("BUFFER_USAGE_LIMIT option must be 0 or between %d kB and %d kB",
211+
MIN_BAS_VAC_RING_SIZE_KB,MAX_BAS_VAC_RING_SIZE_KB),
212+
hintmsg ?errhint("%s",_(hintmsg)) :0));
230213
}
231214

232215
ring_size=result;

‎src/test/regress/expected/vacuum.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,13 +358,13 @@ VACUUM (BUFFER_USAGE_LIMIT 0) vac_option_tab;
358358
ANALYZE (BUFFER_USAGE_LIMIT 0) vac_option_tab;
359359
-- value exceeds max size error
360360
VACUUM (BUFFER_USAGE_LIMIT 16777220) vac_option_tab;
361-
ERROR:buffer_usage_limit option must be 0 or between 128 kB and 16777216 kB
361+
ERROR:BUFFER_USAGE_LIMIT option must be 0 or between 128 kB and 16777216 kB
362362
-- value is less than min size error
363363
VACUUM (BUFFER_USAGE_LIMIT 120) vac_option_tab;
364-
ERROR:buffer_usage_limit option must be 0 or between 128 kB and 16777216 kB
364+
ERROR:BUFFER_USAGE_LIMIT option must be 0 or between 128 kB and 16777216 kB
365365
-- integer overflow error
366366
VACUUM (BUFFER_USAGE_LIMIT 10000000000) vac_option_tab;
367-
ERROR:value: "10000000000": is invalid for buffer_usage_limit
367+
ERROR:BUFFER_USAGE_LIMIT option must be 0 or between 128 kB and 16777216 kB
368368
HINT: Value exceeds integer range.
369369
-- incompatible with VACUUM FULL error
370370
VACUUM (BUFFER_USAGE_LIMIT '512 kB', FULL) vac_option_tab;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp