I think it's really time we seriously considered adding some flow
control logic, though.

Yeah, maybe.  I'd be interested to see a fully worked out proposal
for that.

I agree that designing a fuller proposal before including individual parts would be great and result in a more consistent result.

In order to bootstrap the discussion, I suggest the following:

 - boolexpr is a simple "boolean" (t, non 0 int, non empty string.. as
   proposed by Corey and Pavel) or !/not boolexp ; it could be extended if
   necessary, but I would try to avoid that, as

 - actual more complex expressions could be left to the server through SQL
   which simplifies the client a lot by avoiding an expression language

 - then having a conditional block is very versatile and can be adapted to
   many use cases... maybe all

 - \quit CODE, or I would prefer \exit CODE, could be used to exit while
   controlling the status

It could look like (although I do not like gset in this context, but anyway):

 SELECT ... AS has_foo_extension \gset
 SELECT ... AS has_bla_extension \gset
 \if :has_foo_extension
 \elif :has_bla_extension
 \else -- no foo nor bla extension
   \echo please install foo or bla extension
   \exit 1
 \fi -- extension
 SELECT ... AS has_xxx_feature \gset
 \if ! :has_xxx_feature
  \echo "feature xxx is needed, aborting"
  \exit 2


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

Reply via email to