Re: pgbench - allow to store select results into variables

From: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>, Robert Haas <robertmhaas(at)gmail(dot)com>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, PostgreSQL Developers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pgbench - allow to store select results into variables
Date: 2017-01-07 09:25:06
Message-ID: alpine.DEB.2.20.1701070938300.10378@lancre
Views: Raw Message | Whole Thread | Download mbox
Thread:
Lists: pgsql-hackers


Hello Tom,

> Please look at changing \into to be a SQL-command-ending backslash
> command as we previously discussed.

Done.

There are two variants: \gset & \gcset for compound (end SQL query, set
variables, but do not end command, so that several settings are allowed in
a compound command, a key feature for performance testing).

Personnally, I find the end-of-query semicolon-replacing syntax ugly.
However I'm more interested in feature than in elegance on this one, so
I'll put up with it.

> I think you will find that the implementation is a great deal simpler
> that way and doesn't require weird hackery on the shared lexer.

I have removed the "hackery", only counting embedded semicolons remains to
keep track of compound queries.

Note that the (somehow buggy and indeed not too clean) hackery was not
related to the into syntax, but to detecting empty queries which are
silently skipped by the server.

> If you won't do that, [...]

I think that I have done what you required.

I have documented the fact that now the feature does not work if compound
commands contain empty queries, which is a very minor drawback for a
pgbench script anyway.

Attached are the patch, a test script for the feature, and various test
scripts to trigger error cases.

--
Fabien.

Attachment Content-Type Size
pgbench-into-7.patch text/x-diff 16.0 KB
gset-1.sql application/x-sql 473 bytes
gset-err-1.sql application/x-sql 36 bytes
gset-err-2.sql application/x-sql 46 bytes
gset-err-3.sql application/x-sql 35 bytes
gset-err-4.sql application/x-sql 15 bytes
gset-err-5.sql application/x-sql 31 bytes
gset-err-6.sql application/x-sql 13 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Magnus Hagander 2017-01-07 11:19:03 Re: Support for pg_receivexlog --format=plain|tar
Previous Message Andrew Borodin 2017-01-07 08:36:03 Re: pg_background contrib module proposal