Re: pgbench - allow backslash continuations in \set expressions

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Christoph Berg <myon@debian.org>
Cc: PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2016-10-03T11:58:04Z
Lists: pgsql-hackers
Hello Christoph,

>> Attached patch does what is described in the title, hopefully. Continuations
>> in other pgbench backslash-commands should be dealt with elsewhere...
>
> Would (a similar version of) that patch also apply to .psqlrc?

Pgbench has its own lexer & parser for \set expressions, so the 
continuation is handled there.

> I "\set" a bunch of lengthy SQL commands in there, e.g.

I agree that this looks like a desirable feature, however I would tend to 
see that as material for another independent patch.

I think that .pgsqrc is really just a "psql" script so the handling would 
be somewhere there... I'll have a look.

> \set config 'SELECT name, current_setting(name), CASE source WHEN 
> $$configuration file$$ THEN sourcefile||$$:$$||sourceline ELSE source 
> END FROM pg_settings WHERE source <> $$default$$;'

Hmmm. I'm not sure how this is parsed. If this is considered a string 
'...', then maybe \set should wait for the end of the string instead of 
the end of the line, i.e. no continuation would be needed...

  \set config '
     SELECT name, ...
            CASE ... END
     FROM pg_settings
     WHERE ...;'

> Being able to split that over several lines would greatly improve
> maintainability. (Though I do realize this would also require a notion
> for splitting/continuing strings.)

Yep. I'm not sure of the actual feature which is needed.

-- 
Fabien.


Commits

  1. Allow backslash line continuations in pgbench's meta commands.