# Copyright (c) 2021-2025, PostgreSQL Global Development Group
# # pgbench tests which do not need a server #
use strict;
use warnings FATAL => 'all';
use PostgreSQL::Test::Utils;
use Test::More;
# create a directory for scripts
my $testname = $0;
$testname =~ s,.*/,,;
$testname =~ s/\.pl$//;
my $testdir = "$PostgreSQL::Test::Utils::tmp_check/t_${testname}_stuff";
mkdir $testdir
or BAIL_OUT("could not create test directory \"${testdir}\": $!");
# invoke pgbench
sub pgbench
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
# name, err, { file => contents }
[ 'missing endif',
[qr{\\if without matching \\endif}],
{ 'if-noendif.sql' => '\if 1' }
],
[ 'missing if on elif',
[qr{\\elif without matching \\if}],
{ 'elif-noif.sql' => '\elif 1' }
],
[ 'missing if on else',
[qr{\\else without matching \\if}],
{ 'else-noif.sql' => '\else' }
],
[ 'missing if on endif',
[qr{\\endif without matching \\if}],
{ 'endif-noif.sql' => '\endif' }
],
[ 'elif after else',
[qr{\\elif after \\else}],
{ 'else-elif.sql' => "\\if 1\n\\else\n\\elif 0\n\\endif" }
],
[ 'else after else',
[qr{\\else after \\else}],
{ 'else-else.sql' => "\\if 1\n\\else\n\\else\n\\endif" }
],
[ 'if syntax error',
[qr{syntax error in command "if"}],
{ 'if-bad.sql' => "\\if\n\\endif\n" }
],
[ 'elif syntax error',
[qr{syntax error in command "elif"}],
{ 'elif-bad.sql' => "\\if 0\n\\elif +\n\\endif\n" }
],
[ 'else syntax error',
[qr{unexpected argument in command "else"}],
{ 'else-bad.sql' => "\\if 0\n\\else BAD\n\\endif\n" }
],
[ '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" }
], # overflow
[ 'bigint overflow 1',
[qr{bigint constant overflow}],
{ 'overflow-1.sql' => "\\set i 100000000000000000000\n" }
],
[ 'double overflow 2',
[qr{double constant overflow}],
{ 'overflow-2.sql' => "\\set d 1.0E309\n" }
],
[ 'double overflow 3',
[qr{double constant overflow}],
{ 'overflow-3.sql' => "\\set d .1E310\n" }
],
[ 'set i',
[ qr{set i 1 }, qr{\^ error found here} ],
{ 'set_i_op' => "\\set i 1 +\n" }
],
[ 'not enough arguments to permute',
[qr{unexpected number of arguments \(permute\)}],
{ 'bad-permute-1.sql' => "\\set i permute(1)\n" }
],
[ 'too many arguments to permute',
[qr{unexpected number of arguments \(permute\)}],
{ 'bad-permute-2.sql' => "\\set i permute(1, 2, 3, 4)\n" }
],);
for my $t (@script_tests)
{
my ($name, $err, $files) = @$t;
pgbench_scripts('', 1, [qr{^$}], $err, 'pgbench option error: ' . $name,
$files);
}
done_testing();
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.20Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-08-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.