2014-11-18 17:08 GMT+01:00 Simon Riggs <si...@2ndquadrant.com>: > On 18 November 2014 12:29, Pavel Stehule <pavel.steh...@gmail.com> wrote: > > >> Why is that not a requirement for a less wordier form of IF? > >> > >> IF (something) THEN action > > > > > > statement IF is a control statement - and syntax, pattern for control > > statements in plpgsql is consistent. I don't want to break it (more, > > probably it is hardly implemented due problems in bison). PL/pgSQL, > PL/SQL, > > Ada are well designed (in my opinion). Conditional statement has > precedent > > in PL/pgSQL now. We support EXIT and CONTINUE WHEN, so we don't propose a > > new pattern, only reuse some existing. > > I commend your wish to improve PL/pgSQL, I'm sorry to say that I just > don't see how this moves us forwards. > > It is not big step, but it open some doors
> What this does is introduce a fairly restricted new feature that > removes backwards compatibility and takes us further away from Oracle > compatibility. > It is not valid argument for this use case. RAISE statement is not compatible with Oracle long time. WHEN clause change nothing. > > If I want to write an Assert style test that fits on a single line, just > write > PEFORM raise_error_when(boolean expression); > it is possibility too. But a) it is limited little bit, b) we didn't find a agreement how to design it for upstream. c) I am thinking so there is a space for enhancing RAISE statement for other use cases - tracing, global condition assertions etc > > which requires a very short function like this > CREATE OR REPLACE FUNCTION raise_error_when(test boolean) returns void > language plpgsql > AS $$ > DECLARE > BEGIN > IF (test) THEN > RAISE EXCEPTION 'assertion failure'; > END IF; > END; > $$; > > -- > Simon Riggs http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Training & Services >