Re: Assert for frontend programs?

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <hlinnakangas@vmware.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-12-14T20:32:16Z
Lists: pgsql-hackers

Attachments

On 12/14/2012 11:33 AM, Tom Lane wrote:
> Heikki Linnakangas <hlinnakangas@vmware.com> writes:
>> On 14.12.2012 17:54, Tom Lane wrote:
>>> BTW, I think psql already has a "psql_assert".
>> psql_assert looks like this:
>> #ifdef USE_ASSERT_CHECKING
>> #include <assert.h>
>> #define psql_assert(p) assert(p)
>> #else
>> ...
>> On my Linux system, a failure looks like this:
>> ~$ ./a.out
>> a.out: a.c:5: main: Assertion `1==2' failed.
>> Aborted
>> That seems fine to me.
> Works for me.  So just rename that to Assert() and move it into
> postgres-fe.h?
>
> 			


Here's a patch for that. I changed some of the psql assertions so they 
all have explicit boolean expressions - I think that's better style for 
use of assert.

I noticed, BTW, that there are one or two places in backend code that 
seem to call plain assert unconditionally, notably src/port/open.c, 
src/backend/utils/adt/inet_net_pton.c and some contrib modules. That 
seems undesirable. Should we need to look at turning these into Assert 
calls?

cheers

andrew