[pgpool-committers: 9236] pgpool: Judge multi statement query using psqlscan.

Tatsuo Ishii ishii at sraoss.co.jp
Tue Mar 28 19:14:19 JST 2023

Judge multi statement query using psqlscan.

Psqlscan is a module in the PostgreSQL source tree. It is essentially
subset of PostgreSQL SQL scanner but it is specialized for detecting
the end of each SQL statement. Therefore we can count the number of
SQL statements in a query string by using it.

Because psqlscan is not designed as an external library, it is hard to
call it from outside of PostgreSQL source tree. So I decided to import
psqlscan source code. This module consists of multiple files.  Program
sources are deployed in src/utils directory and header files are
deployed in src/include/utils directory.

psqlscan module was originally designed for frontend programs and uses
malloc directly. So I changed them so that it calls palloc and
friends. Additionally pgstrcasecmp.c and pqexpbuffer.c are also
imported. They are used by psqlscan.

The example usage of psqlscan can be found in




Modified Files
src/Makefile.am                   |    9 +-
src/include/utils/pgstrcasecmp.h  |   22 +
src/include/utils/pqexpbuffer.h   |  192 +++++
src/include/utils/psqlscan.h      |   90 +++
src/include/utils/psqlscan_int.h  |  157 ++++
src/protocol/pool_proto_modules.c |  105 ++-
src/utils/pgstrcasecmp.c          |  154 ++++
src/utils/pqexpbuffer.c           |  418 ++++++++++
src/utils/psqlscan.l              | 1620 +++++++++++++++++++++++++++++++++++++
9 files changed, 2751 insertions(+), 16 deletions(-)

More information about the pgpool-committers mailing list