pgsql: Improve scripting language in pgbench
Improve scripting language in pgbench
Added:
- variable now might contain integer, double, boolean and null values
- functions ln, exp
- logical AND/OR/NOT
- bitwise AND/OR/NOT/XOR
- bit right/left shift
- comparison operators
- IS [NOT] (NULL|TRUE|FALSE)
- conditional choice (in form of when/case/then)
New operations and functions allow to implement more complicated test scenario.
Author: Fabien Coelho with minor editorization by me
Reviewed-By: Pavel Stehule, Jeevan Ladhe, me
Discussion: /messages/by-id/alpine.DEB.2.10.1604030742390.31618@sto
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/bc7fa0c15c590ddf4872e426abd76c2634f22aca
Modified Files
--------------
doc/src/sgml/ref/pgbench.sgml | 223 +++++++++++-
src/bin/pgbench/exprparse.y | 195 ++++++++++-
src/bin/pgbench/exprscan.l | 55 ++-
src/bin/pgbench/pgbench.c | 484 +++++++++++++++++++++++----
src/bin/pgbench/pgbench.h | 24 +-
src/bin/pgbench/t/001_pgbench_with_server.pl | 171 ++++++++--
6 files changed, 1026 insertions(+), 126 deletions(-)
On Wed, Jan 10, 2018 at 4:02 AM, Teodor Sigaev <teodor@sigaev.ru> wrote:
Improve scripting language in pgbench
Hi Teodor,
I think this commit might have lost a fix from
0aa1d489ea756b96b6d5573692ae9cd5d143c2a5. bowerbird and jacana now
fail when they see an unexpected "0" before the exponent:
Jan 09 11:49:51 # debug(script=0,command=29): double 1e+030
...
Jan 09 11:49:51 # doesn't match '(?-xism:command=29.: double 1e\+30\b)'
I think you need to put "0?" back into the pattern like in the attached.
--
Thomas Munro
http://www.enterprisedb.com
Attachments:
fix.patchapplication/octet-stream; name=fix.patchDownload
diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl
index e5793349149..a8b2962bd08 100644
--- a/src/bin/pgbench/t/001_pgbench_with_server.pl
+++ b/src/bin/pgbench/t/001_pgbench_with_server.pl
@@ -239,7 +239,7 @@ pgbench(
qr{command=26.: double -0.125\b},
qr{command=27.: double -0.00032\b},
qr{command=28.: double 8.50705917302346e\+0?37\b},
- qr{command=29.: double 1e\+30\b},
+ qr{command=29.: double 1e\+0?30\b},
qr{command=30.: boolean false\b},
qr{command=31.: boolean true\b},
qr{command=32.: int 32\b},
Thank you very much, applied
Thomas Munro wrote:
On Wed, Jan 10, 2018 at 4:02 AM, Teodor Sigaev <teodor@sigaev.ru> wrote:
Improve scripting language in pgbench
Hi Teodor,
I think this commit might have lost a fix from
0aa1d489ea756b96b6d5573692ae9cd5d143c2a5. bowerbird and jacana now
fail when they see an unexpected "0" before the exponent:Jan 09 11:49:51 # debug(script=0,command=29): double 1e+030
...
Jan 09 11:49:51 # doesn't match '(?-xism:command=29.: double 1e\+30\b)'I think you need to put "0?" back into the pattern like in the attached.
--
Teodor Sigaev E-mail: teodor@sigaev.ru
WWW: http://www.sigaev.ru/
Hello Teodor,
I just noticed while rebasing stuff that there is some crust in
"pgbench/t/001_pgbench_with_server.pl" coming from this patch:
+=head
+
+} });
+
+=cut
I cannot find any use for these lines which are ignored by perl execution
anyway. It may be some leftovers from debugging which got past everyone.
If so, I think that it is better removed, see the attached cleanup patch.
--
Fabien.
Attachments:
pgbench-tap-test-typo.patchtext/x-diff; name=pgbench-tap-test-typo.patchDownload
diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl
index a8b2962..99286f6 100644
--- a/src/bin/pgbench/t/001_pgbench_with_server.pl
+++ b/src/bin/pgbench/t/001_pgbench_with_server.pl
@@ -340,12 +340,6 @@ pgbench(
SELECT :v0, :v1, :v2, :v3;
} });
-=head
-
-} });
-
-=cut
-
# backslash commands
pgbench(
'-t 1', 0,
On 1/10/18 07:36, Fabien COELHO wrote:
I just noticed while rebasing stuff that there is some crust in
"pgbench/t/001_pgbench_with_server.pl" coming from this patch:+=head + +} }); + +=cutI cannot find any use for these lines which are ignored by perl execution
anyway. It may be some leftovers from debugging which got past everyone.
If so, I think that it is better removed, see the attached cleanup patch.
fixed
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services