|
|
|
@ -255,7 +255,7 @@ COMMIT; |
|
|
|
|
# test expressions |
|
|
|
|
# command 1..3 and 23 depend on random seed which is used to call srandom. |
|
|
|
|
pgbench( |
|
|
|
|
'--random-seed=5432 -t 1 -Dfoo=-10.1 -Dbla=false -Di=+3 -Dminint=-9223372036854775808 -Dn=null -Dt=t -Df=of -Dd=1.0', |
|
|
|
|
'--random-seed=5432 -t 1 -Dfoo=-10.1 -Dbla=false -Di=+3 -Dn=null -Dt=t -Df=of -Dd=1.0', |
|
|
|
|
0, |
|
|
|
|
[ qr{type: .*/001_pgbench_expressions}, qr{processed: 1/1} ], |
|
|
|
|
[ |
|
|
|
@ -278,7 +278,6 @@ pgbench( |
|
|
|
|
qr{command=15.: double 15\b}, |
|
|
|
|
qr{command=16.: double 16\b}, |
|
|
|
|
qr{command=17.: double 17\b}, |
|
|
|
|
qr{command=18.: int 9223372036854775807\b}, |
|
|
|
|
qr{command=20.: int \d\b}, # zipfian random: 1 on linux |
|
|
|
|
qr{command=21.: double -27\b}, |
|
|
|
|
qr{command=22.: double 1024\b}, |
|
|
|
@ -322,6 +321,8 @@ pgbench( |
|
|
|
|
qr{command=96.: int 1\b}, # :scale |
|
|
|
|
qr{command=97.: int 0\b}, # :client_id |
|
|
|
|
qr{command=98.: int 5432\b}, # :random_seed |
|
|
|
|
qr{command=99.: int -9223372036854775808\b}, # min int |
|
|
|
|
qr{command=100.: int 9223372036854775807\b}, # max int |
|
|
|
|
], |
|
|
|
|
'pgbench expressions', |
|
|
|
|
{ |
|
|
|
@ -345,10 +346,9 @@ pgbench( |
|
|
|
|
\set pi debug(pi() * 4.9) |
|
|
|
|
\set d4 debug(greatest(4, 2, -1.17) * 4.0 * Ln(Exp(1.0))) |
|
|
|
|
\set d5 debug(least(-5.18, .0E0, 1.0/0) * -3.3) |
|
|
|
|
-- forced overflow |
|
|
|
|
\set maxint debug(:minint - 1) |
|
|
|
|
-- reset a variable |
|
|
|
|
-- reset variables |
|
|
|
|
\set i1 0 |
|
|
|
|
\set d1 false |
|
|
|
|
-- yet another integer function |
|
|
|
|
\set id debug(random_zipfian(1, 9, 1.3)) |
|
|
|
|
--- pow and power |
|
|
|
@ -447,6 +447,9 @@ SELECT :v0, :v1, :v2, :v3; |
|
|
|
|
\set sc debug(:scale) |
|
|
|
|
\set ci debug(:client_id) |
|
|
|
|
\set rs debug(:random_seed) |
|
|
|
|
-- minint constant parsing |
|
|
|
|
\set min debug(-9223372036854775808) |
|
|
|
|
\set max debug(-(:min + 1)) |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -601,16 +604,10 @@ SELECT LEAST(:i, :i, :i, :i, :i, :i, :i, :i, :i, :i, :i); |
|
|
|
|
[qr{invalid variable name}], q{\set . 1} |
|
|
|
|
], |
|
|
|
|
[ |
|
|
|
|
'set int overflow', 0, |
|
|
|
|
[qr{double to int overflow for 100}], q{\set i int(1E32)} |
|
|
|
|
'set division by zero', 0, |
|
|
|
|
[qr{division by zero}], q{\set i 1/0} |
|
|
|
|
], |
|
|
|
|
[ 'set division by zero', 0, [qr{division by zero}], q{\set i 1/0} ], |
|
|
|
|
[ |
|
|
|
|
'set bigint out of range', 0, |
|
|
|
|
[qr{bigint out of range}], q{\set i 9223372036854775808 / -1} |
|
|
|
|
], |
|
|
|
|
[ |
|
|
|
|
'set undefined variable', |
|
|
|
|
[ 'set undefined variable', |
|
|
|
|
0, |
|
|
|
|
[qr{undefined variable "nosuchvariable"}], |
|
|
|
|
q{\set i :nosuchvariable} |
|
|
|
@ -630,7 +627,7 @@ SELECT LEAST(:i, :i, :i, :i, :i, :i, :i, :i, :i, :i, :i); |
|
|
|
|
'set random range too large', |
|
|
|
|
0, |
|
|
|
|
[qr{random range is too large}], |
|
|
|
|
q{\set i random(-9223372036854775808, 9223372036854775807)} |
|
|
|
|
q{\set i random(:minint, :maxint)} |
|
|
|
|
], |
|
|
|
|
[ |
|
|
|
|
'set gaussian param too small', |
|
|
|
@ -693,6 +690,18 @@ SELECT LEAST(:i, :i, :i, :i, :i, :i, :i, :i, :i, :i, :i); |
|
|
|
|
[qr{at least one argument expected}], q{\set i greatest())} |
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
# SET: ARITHMETIC OVERFLOW DETECTION |
|
|
|
|
[ 'set double to int overflow', 0, |
|
|
|
|
[ qr{double to int overflow for 100} ], q{\set i int(1E32)} ], |
|
|
|
|
[ 'set bigint add overflow', 0, |
|
|
|
|
[ qr{int add out} ], q{\set i (1<<62) + (1<<62)} ], |
|
|
|
|
[ 'set bigint sub overflow', 0, |
|
|
|
|
[ qr{int sub out} ], q{\set i 0 - (1<<62) - (1<<62) - (1<<62)} ], |
|
|
|
|
[ 'set bigint mul overflow', 0, |
|
|
|
|
[ qr{int mul out} ], q{\set i 2 * (1<<62)} ], |
|
|
|
|
[ 'set bigint div out of range', 0, |
|
|
|
|
[ qr{bigint div out of range} ], q{\set i :minint / -1} ], |
|
|
|
|
|
|
|
|
|
# SETSHELL |
|
|
|
|
[ |
|
|
|
|
'setshell not an int', 0, |
|
|
|
@ -740,7 +749,8 @@ for my $e (@errors) |
|
|
|
|
my $n = '001_pgbench_error_' . $name; |
|
|
|
|
$n =~ s/ /_/g; |
|
|
|
|
pgbench( |
|
|
|
|
'-n -t 1 -Dfoo=bla -Dnull=null -Dtrue=true -Done=1 -Dzero=0.0 -Dbadtrue=trueXXX -M prepared', |
|
|
|
|
'-n -t 1 -M prepared -Dfoo=bla -Dnull=null -Dtrue=true -Done=1 -Dzero=0.0 ' . |
|
|
|
|
'-Dbadtrue=trueXXX -Dmaxint=9223372036854775807 -Dminint=-9223372036854775808', |
|
|
|
|
$status, |
|
|
|
|
[ $status ? qr{^$} : qr{processed: 0/1} ], |
|
|
|
|
$re, |
|
|
|
|