Skip to content
Snippets Groups Projects
Commit c2e5f60d authored by Michael Paquier's avatar Michael Paquier
Browse files

Fix handling of pgbench's hash when no argument is provided

Depending on the platform used, this can cause a crash in the worst
case, or an unhelpful error message, so fail gracefully.

Author: Fabien Coelho
Discussion: https://postgr.es/m/alpine.DEB.2.21.1807262302550.29874@lancre
Backpatch: 11-, where hash() has been added in pgbench.
parent c606f10f
No related branches found
No related tags found
No related merge requests found
......@@ -467,7 +467,7 @@ make_func(yyscan_t yyscanner, int fnumber, PgBenchExprList *args)
/* hash functions with optional seed argument */
case PGBENCH_NARGS_HASH:
if (len > 2)
if (len < 1 || len > 2)
expr_yyerror_more(yyscanner, "unexpected number of arguments",
PGBENCH_FUNCTIONS[fnumber].fname);
......
......@@ -266,6 +266,26 @@ my @script_tests = (
'endif syntax error',
[qr{unexpected argument in command "endif"}],
{ 'endif-bad.sql' => "\\if 0\n\\endif BAD\n" }
],
[
'not enough arguments for least',
[qr{at least one argument expected \(least\)}],
{ 'bad-least.sql' => "\\set i least()\n" }
],
[
'not enough arguments for greatest',
[qr{at least one argument expected \(greatest\)}],
{ 'bad-greatest.sql' => "\\set i greatest()\n" }
],
[
'not enough arguments for hash',
[qr{unexpected number of arguments \(hash\)}],
{ 'bad-hash-1.sql' => "\\set i hash()\n" }
],
[
'too many arguments for hash',
[qr{unexpected number of arguments \(hash\)}],
{ 'bad-hash-2.sql' => "\\set i hash(1,2,3)\n" }
],);
for my $t (@script_tests)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment