pgbench: Improve handling of NULL in \gset and \aset

Previously, readCommandResponse() stored every column with PQgetvalue(),
which returns an empty string for the SQL NULL value.  An empty string
is not a valid value in the pgbench expression language, and when
returned by the server it was also indistinguishable from a NULL.

When receiving a value, pgbench now checks for PQgetisnull() and sets a
NULL value with setNullValue() before saving it.  This behavior is more
consistent with \set, making the result saved testable with IS NULL.

This is a quality-of-life improvement, so no backpatch is done.

Author: Shinya Kato <[email protected]>
Reviewed-by: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Shihao Zhong <[email protected]>
Discussion: 
https://postgr.es/m/CAOzEurT9J9QMmpJt_8pWZCziNYCUHOD=c-hoccovyjlc_vx...@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d8304bc661c29600f82ba62719457837edf47b08

Modified Files
--------------
src/bin/pgbench/pgbench.c                    | 19 ++++++++++++++++---
src/bin/pgbench/t/001_pgbench_with_server.pl | 14 ++++++++++++++
2 files changed, 30 insertions(+), 3 deletions(-)

Reply via email to