Re: pgbench - allow backslash-continuations in custom scripts - Mailing list pgsql-hackers

From Kyotaro HORIGUCHI
Subject Re: pgbench - allow backslash-continuations in custom scripts
Date
Msg-id 20150904.141114.155567080.horiguchi.kyotaro@lab.ntt.co.jp
Whole thread Raw
In response to Re: pgbench - allow backslash-continuations in custom scripts  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Responses Re: pgbench - allow backslash-continuations in custom scripts
List pgsql-hackers
Hello, Thank you for registering this to CF-Sep.
I missed the regtration window.. It ended earlier than usual..

Most troubles have gone and I'll be back next week.

> The work to be left is eliminating double-format of Command
> struct.

This is done as the additional fourth patch, not merged into
previous ones, to show what's changed in the manner of command
storing.

I repost on this thread the new version of this patch including
this and posted before. This is rebased to current master.

The changes in behaviors brought by this patch has been described
in the privous mail as the following,

> Hmm. psqlscan.l handles multistatement naturally.
> I worked on that and the attached patche set does,
> 
>  - backslash continuation for pgbench metacommands.
> 
>    set variable \
>        <some value>
> 
>  - SQL statement natural continuation lines.
> 
>    SELECT :foo
>     FROM  :bar;
> 
>  - SQL multi-statement.
> 
>    SELECT 1; SELECT 2;

Each of the four patches does the following thigs,

1. 0001-Prepare-to-share-psqlscan-with-pgbench.patch
 The global variable pset, VariableSpace and backslash syntax of psql are the obstacles for psqlscan.l from being used
bypgbench.  This patch eliminates direct reference to pset and masks VariableSpace feature (looks ugry..), and enables
backslashsyntax in psqlscan.l to be hidden from outside psql by defining the symbol OUTSIDE_PSQL.
 
 No behavioral changes of pasql are introduced by ths patch.

2. 0002-Make-use-of-psqlscan-for-parsing-of-custom-script.patch
 This is the core of this patch, which makes pgbench to use psqlscan.l and enables multi-statements,
multiline-SQL-statementand backslash-continuation of metacommands.
 
 The struct Command is modified that it can be chained in order to convey multistatement in one line. But the commands
arestored in an array of Command just outside process_commands as of old. This double-formatting will be removed by the
fourthpatch.
 
 psqlscan.c is compiled as a part of mainloop.c for some reason described at the end of the file. I haven't confirmed
thatthe same thing will happen in pgbench, but I did the same thing for pgbenc.c.
 
 Compilation will fail on Windows as of this patch.

3. 0003-Change-MSVC-Build-script.patch
 Changes the build script for Windows platform. It certainly works but might look a bit odd because of the anormaly of
thecompilation way of psqlscan.l
 

4. 0004-Change-the-way-to-hold-command-list.patch
 Changes the way to hold commad list from an array to linked list, to remove the double formatting of Command-list
introducedby the second patch. This removes the explicit limitation on the number of commands in scripts, as a
side-effect.


regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center

pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: BRIN INDEX value
Next
From: Michael Paquier
Date:
Subject: Re: Allow replication roles to use file access functions