Re: [HACKERS] psql - add ability to test whether a variable exists

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: [HACKERS] psql - add ability to test whether a variable exists
Дата
Msg-id CAFj8pRCUdH3qy6s0Aj_Q3XLOTosi8k0thZWUs_dZhfryQYsLcw@mail.gmail.com
обсуждение исходный текст
Ответ на [HACKERS] psql - add ability to test whether a variable exists  (Fabien COELHO <coelho@cri.ensmp.fr>)
Ответы Re: [HACKERS] psql - add ability to test whether a variable exists  (Fabien COELHO <coelho@cri.ensmp.fr>)
Список pgsql-hackers


2017-08-26 8:54 GMT+02:00 Fabien COELHO <coelho@cri.ensmp.fr>:

Hello,

As a follow-up to the \if patch by Corey Huinker, here is a proposal to allow testing whether a client-side variable exists in psql.

The syntax is as ugly as the current :'var' and :"var" things, but ISTM that this is the only simple option to have a working SQL-compatible syntax with both client-side substitution and server side execution. See the second example below.

It is really ugly - the ? symbol is not used in pair usually - so it is much more visible - it is bad readable.

Maybe some other syntax: :{fx xxx} .. where fx can be one from more possible operators ? ! ... 
 

  -- client side use
  psql> \set i 1
  psql> \if :?i?
  psql>   \echo 'i is defined'
  psql> \endif 
 
  -- use server-side in an SQL expression
  psql> SELECT NOT :?VERSION_NUM? OR :'VERSION' <> VERSTION() AS bad_conf \gset


 
  psql> \if :bad_conf \echo 'too bad...' \quit \endif

The other option would be to have some special keyword syntax, say "defined var", but then it would have to be parsed client side, and how to
do that in an SQL expression is unclear, and moreover it would not look right in an SQL expression. If it would look like a function call, say "defined('var')", it would potentially interact with existing server-side user-defined functions, which is pretty undesirable. Hence the :?...? proposal above which is limited to variable subsitution syntax.

should not be solved by introduction \ifdef ? 




--
Fabien.


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Fabien COELHO
Дата:
Сообщение: [HACKERS] psql - add ability to test whether a variable exists
Следующее
От: Noah Misch
Дата:
Сообщение: [HACKERS] Re: [PATCH] Fix drop replication slot blocking instead of returningerror