Re: Variable substitution in psql backtick expansion - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Variable substitution in psql backtick expansion
Date
Msg-id CAFj8pRAOZvoO4gVS1uioo1eUE7+EmzfdkdacQsejMrPHwZZrog@mail.gmail.com
Whole thread Raw
In response to Re: Variable substitution in psql backtick expansion  (Fabien COELHO <coelho@cri.ensmp.fr>)
Responses Re: Variable substitution in psql backtick expansion  (Fabien COELHO <coelho@cri.ensmp.fr>)
List pgsql-hackers


2017-04-03 21:24 GMT+02:00 Fabien COELHO <coelho@cri.ensmp.fr>:

Hello Tom,

  \if [select current_setting('server_version_num')::int < 110000]

I really dislike this syntax proposal.

It would get us into having to count nested brackets, and distinguish quoted from unquoted brackets, and so on ... and for what?  It's not really better than

  \if sql select 1 from pg_catalog.pg_extension where extname='pgcrypto'

Hmmm. On the positive side, it looks more expression-like, and it allows to think of handling a multi-line expression on day.

ISTM that the lexer already counts parentheses, so maybe using external parentheses might work without much effort?

(ie, "\if sql ...text to send to server...").

If you're worried about shaving keystrokes, make the "select" be implicit.
That would be particularly convenient for the common case where you're
just trying to evaluate a boolean expression with no table reference.

I'm looking for a solution to avoid the suggested "sql" prefix, because "I really dislike this proposal", as you put it.


The expression evaluation is interesting question, but there is a workaround - we can use \gset already.

What is more important, because there is not any workaround, is detection if some variable exists or not.

So possibilities

1. \if defined varname
2. \ifdefined or \ifdef varname 
3. \if :?varname

I like first two, and I can live with @3 - although it is not intuitive 

Regards

Pavel

pgsql-hackers by date:

Previous
From: Andrew Gierth
Date:
Subject: Re: Instead of DROP function use UPDATE pg_proc in an upgrade extension script
Next
From: Pavan Deolasee
Date:
Subject: Re: Patch: Write Amplification Reduction Method (WARM)