Re: Assertions in PL/PgSQL

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Marko Tiikkaja <marko(at)joh(dot)to>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Assertions in PL/PgSQL
Date: 2013-09-20 15:48:18
Message-ID: CAFj8pRDrPK-gVk-hQCK7wqTYHk-7QUpjbtJFDdOVQ0JjBiA9CA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2013/9/20 Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>

> Pavel Stehule escribió:
>
> > PL/pgSQL had a ADA completeness, uniformity and beauty newer. But it is
> not
> > too bad, and one new specialized statement doesn't kill us. A proposed
> > functionality is often used and we have not tools (macros) how to
> implement
> > it simply.
> >
> > we support a conditions for few statement - so enhancing RAISE statement
> is
> > possible
>
> Extending RAISE is one option. Another option is to decorate BEGIN and
> END with an assertion option; and the assertion would be checked when
> the block is entered (in BEGIN) or finished (in END).
>
> BEGIN ASSERT (a = 1) WITH (name = a_is_one)
> a := a + 1;
> END;
>
>
> BEGIN ASSERT (a > 0)
> a := a + 1;
> END ASSERT (a = 2) WITH (name = a_is_two);
>
> This would play nice with loops too, where the assertion is checked on
> every iteration. And you can have empty blocks if you want the
> assertion to be standalone in the middle of some block.
>

it can works, but it looks too strange

-1

Pavel

>
> --
> Álvaro Herrera http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2013-09-20 15:51:33 Re: [PERFORM] encouraging index-only scans
Previous Message Stephen Frost 2013-09-20 15:30:27 Re: record identical operator