diff options
Diffstat (limited to 'src/bin/pgbench/t/001_pgbench_with_server.pl')
-rw-r--r-- | src/bin/pgbench/t/001_pgbench_with_server.pl | 82 |
1 files changed, 74 insertions, 8 deletions
diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl index 89678e7f3f7..c87748086ab 100644 --- a/src/bin/pgbench/t/001_pgbench_with_server.pl +++ b/src/bin/pgbench/t/001_pgbench_with_server.pl @@ -528,6 +528,48 @@ pgbench( } }); +# working \gset and \cset +pgbench( + '-t 1', 0, + [ qr{type: .*/001_pgbench_gset_and_cset}, qr{processed: 1/1} ], + [ qr{command=3.: int 0\b}, + qr{command=5.: int 1\b}, + qr{command=6.: int 2\b}, + qr{command=8.: int 3\b}, + qr{command=9.: int 4\b}, + qr{command=10.: int 5\b}, + qr{command=12.: int 6\b}, + qr{command=13.: int 7\b}, + qr{command=14.: int 8\b}, + qr{command=16.: int 9\b} ], + 'pgbench gset and cset commands', + { '001_pgbench_gset_and_cset' => q{-- test gset and cset +-- no columns +SELECT \gset +-- one value +SELECT 0 AS i0 \gset +\set i debug(:i0) +-- two values +SELECT 1 AS i1, 2 AS i2 \gset +\set i debug(:i1) +\set i debug(:i2) +-- cset & gset to follow +SELECT :i2 + 1 AS i3, :i2 * :i2 AS i4 \cset + SELECT 5 AS i5 \gset +\set i debug(:i3) +\set i debug(:i4) +\set i debug(:i5) +-- with prefix +SELECT 6 AS i6, 7 AS i7 \cset x_ + SELECT 8 AS i8 \gset y_ +\set i debug(:x_i6) +\set i debug(:x_i7) +\set i debug(:y_i8) +-- overwrite existing variable +SELECT 0 AS i9, 9 AS i9 \gset +\set i debug(:i9) +} }); + # trigger many expression errors my @errors = ( @@ -735,21 +777,45 @@ SELECT LEAST(:i, :i, :i, :i, :i, :i, :i, :i, :i, :i, :i); [qr{invalid command .* "nosuchcommand"}], q{\nosuchcommand} ], [ 'misc empty script', 1, [qr{empty command list for script}], q{} ], - [ - 'bad boolean', 2, - [qr{malformed variable.*trueXXX}], q{\set b :badtrue or true} - ],); - + [ 'bad boolean', 2, + [qr{malformed variable.*trueXXX}], q{\set b :badtrue or true} ], + + # GSET & CSET + [ 'gset no row', 2, + [qr{expected one row, got 0\b}], q{SELECT WHERE FALSE \gset} ], + [ 'cset no row', 2, + [qr{expected one row, got 0\b}], q{SELECT WHERE FALSE \cset +SELECT 1 AS i\gset}, 1 ], + [ 'gset alone', 1, [qr{gset/cset cannot start a script}], q{\gset} ], + [ 'gset no SQL', 1, + [qr{gset/cset must follow a SQL command}], q{\set i +1 +\gset} ], + [ 'gset too many arguments', 1, + [qr{too many arguments}], q{SELECT 1 \gset a b} ], + [ 'gset after gset', 1, + [qr{gset/cset cannot follow one another}], q{SELECT 1 AS i \gset +\gset} ], + [ 'gset non SELECT', 2, + [qr{expected one row, got 0}], + q{DROP TABLE IF EXISTS no_such_table \gset} ], + [ 'gset bad default name', 2, + [qr{error storing into variable \?column\?}], + q{SELECT 1 \gset} ], + [ 'gset bad name', 2, + [qr{error storing into variable bad name!}], + q{SELECT 1 AS "bad name!" \gset} ], + ); for my $e (@errors) { - my ($name, $status, $re, $script) = @$e; + my ($name, $status, $re, $script, $no_prepare) = @$e; $status != 0 or die "invalid expected status for test \"$name\""; my $n = '001_pgbench_error_' . $name; $n =~ s/ /_/g; pgbench( - '-n -t 1 -M prepared -Dfoo=bla -Dnull=null -Dtrue=true -Done=1 -Dzero=0.0 ' . - '-Dbadtrue=trueXXX -Dmaxint=9223372036854775807 -Dminint=-9223372036854775808', + '-n -t 1 -Dfoo=bla -Dnull=null -Dtrue=true -Done=1 -Dzero=0.0 -Dbadtrue=trueXXX' . + ' -Dmaxint=9223372036854775807 -Dminint=-9223372036854775808' . + ($no_prepare ? '' : ' -M prepared'), $status, [ $status == 1 ? qr{^$} : qr{processed: 0/1} ], $re, |