pgbench - allow to store select results into variables

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2016-07-09T08:20:39Z
Lists: pgsql-hackers

Attachments

Hello devs,

I mentionned my intention to add some features to pgbench back in March:
https://www.postgresql.org/message-id/alpine.DEB.2.10.1603301618570.5677@sto

The attached patch adds an \into meta command to store results of 
preceding SELECTs into pgbench variables, so that they can be reused 
afterwards.

The feature is useful to make more realistic scripts, currently pgbench 
script cannot really interact with the database as results are discarded.

The chosen syntax is easy to understand and the implementation is quite 
light, with minimal impact on the code base. I think that this is a 
reasonnable compromise.

The SELECTs must yield exactly one row, the number of variables must be 
less than the number of columns.

Also attached a set of test scripts, especially to trigger various error 
cases.

-- 
Fabien.

Commits

  1. pgbench: Remove \cset

  2. pgbench: add \cset and \gset commands

  3. Adjust pgbench to allow non-ASCII characters in variable names.

  4. Refactor script execution state machine in pgbench.

  5. Allow empty queries in pgbench.