[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-general
Subject:    Re: [HACKERS] proposal: plpgsql - Assert statement
From:       Jim Nasby <jim () nasby ! net>
Date:       2014-09-30 3:04:15
Message-ID: 542A1DAF.2000101 () nasby ! net
[Download RAW message or body]

On 9/17/14, 7:40 PM, Jan Wieck wrote:
> Exactly. Doing something like
> 
> ASSERT (select count(*) from foo
> where fk not in (select pk from bar)) = 0;
> 
> is a perfectly fine, arbitrary boolean expression. It will probably work well in a \
> development environment too. And I am very sure that it will not scale well once \
> that code gets deployed. And I know how DBAs react to the guaranteed following \
> performance problem. They will disable ALL assert ... or was there some sort of \
> assert class system proposed that I missed?

Keep in mind that nothing we come up with will be immune to abuse, and trying to \
solve what is fundamentally an education problem through technology rarely turns out \
well.

We're also putting too much weight on the term "assert" here. C-style asserts are \
generally not nearly as useful in a database as general sanity-checking or error \
handling, especially if you're trying to use the database to enforce data sanity.

My wish-list for "asserts" is:

- Works at a SQL level
- Unique/clear way to identify asserts (so you're not guessing where the assert came \
                from)
- Allows for over-riding individual asserts (so if you need to do something you're \
                "not supposed to do" you still have the protection of all other \
                asserts)
- Less verbose than IF THEN RAISE END IF
-- 
Jim C. Nasby, Data Architect                       jim@nasby.net
512.569.9461 (cell)                         http://jim.nasby.net


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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic