From:
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To:
Andres Freund <andres(at)2ndquadrant(dot)com>
Cc:
Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>,
Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org
Subject:
Re: [PATCH] unified frontend support for pg_malloc et al and palloc/pfree mulation (was xlogreader-v4)
Date:
2013-01-13 18:41:36
Message-ID:
13628.1358102496@sss.pgh.pa.us (view raw or flat )
Thread:
2013-01-08 19:09:42 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 19:09:43 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 19:25:06 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 19:31:29 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 19:35:12 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 20:18:08 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 20:36:19 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-08 20:42:05 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 20:55:24 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-18 14:48:01 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-18 15:09:18 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-18 15:23:07 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-18 15:33:16 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-18 15:54:52 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-18 16:11:50 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-18 16:17:13 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-02-01 21:34:08 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-18 15:34:36 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-18 15:43:06 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 19:09:44 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 19:28:14 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 19:37:00 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 19:53:29 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 20:00:22 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 20:27:23 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 20:38:20 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-08 20:39:57 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 20:45:07 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-08 21:09:00 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 20:47:43 from Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
2013-01-08 21:00:10 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 21:02:15 from Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
2013-01-08 21:13:12 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 11:27:08 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 11:27:09 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 12:34:12 from Magnus Hagander <magnus(at)hagander(dot)net>
2013-01-09 12:47:35 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 12:54:03 from Magnus Hagander <magnus(at)hagander(dot)net>
2013-01-09 13:23:25 from Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
2013-01-09 13:58:12 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 16:27:46 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 16:47:35 from Peter Geoghegan <peter(at)2ndquadrant(dot)com>
2013-01-09 16:56:50 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 19:07:58 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 19:20:35 from "anarazel(at)anarazel(dot)de" <andres(at)anarazel(dot)de>
2013-01-09 14:45:12 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-09 14:58:28 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 15:18:51 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 11:27:10 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 11:46:53 from Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
2013-01-09 11:56:46 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 16:37:46 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 16:42:33 from Andres Freund <andres(at)anarazel(dot)de>
2013-01-09 16:57:35 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 17:02:47 from Andres Freund <andres(at)anarazel(dot)de>
2013-01-09 17:32:20 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 17:59:30 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 20:07:10 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 20:43:19 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 22:14:52 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-09 22:28:35 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 23:05:07 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-10 09:31:04 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-10 09:55:20 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 16:04:52 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 19:01:40 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-11 19:33:29 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 20:05:54 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-11 20:33:45 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 20:52:19 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-11 21:02:07 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 21:16:58 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-11 21:18:37 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 21:28:13 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-11 21:46:14 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-11 21:49:31 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-12 10:26:37 from Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
2013-01-12 17:20:34 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-12 18:16:56 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-12 18:42:18 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-12 20:14:21 from Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
2013-01-12 20:39:16 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-13 17:51:26 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-13 18:41:36 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-12 23:15:17 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-13 18:07:33 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-13 00:47:18 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-13 18:01:07 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-12 21:36:39 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-13 19:06:37 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-13 19:17:52 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-13 19:43:50 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-13 20:44:58 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-13 21:06:37 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-13 21:16:10 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-15 19:40:36 from Robert Haas <robertmhaas(at)gmail(dot)com>
2013-01-15 20:02:23 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-23 11:03:53 from Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
2013-01-09 22:35:15 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 22:22:29 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-18 15:06:29 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-19 22:33:05 from Steve Singer <steve(at)ssinger(dot)info>
2013-01-21 07:28:56 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-21 16:59:18 from Steve Singer <steve(at)ssinger(dot)info>
2013-01-21 17:15:26 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-21 21:59:04 from Steve Singer <steve(at)ssinger(dot)info>
2013-01-08 22:28:33 from Robert Haas <robertmhaas(at)gmail(dot)com>
2013-01-08 22:37:01 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-08 22:40:29 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 23:23:30 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 00:52:42 from Robert Haas <robertmhaas(at)gmail(dot)com>
2013-01-09 00:57:50 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2013-01-09 01:02:16 from Robert Haas <robertmhaas(at)gmail(dot)com>
2013-02-20 03:28:04 from Noah Misch <noah(at)leadboat(dot)com>
2013-01-08 19:09:45 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-16 19:20:52 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-08 19:09:46 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-02-04 16:22:26 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-02-04 16:29:29 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-02-04 17:55:56 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-02-04 17:57:49 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-02-04 18:03:27 from Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
2013-01-08 19:09:47 from Andres Freund <andres(at)2ndquadrant(dot)com>
2013-01-08 19:15:30 from Thom Brown <thom(at)linux(dot)com>
2013-01-08 19:16:38 from Thom Brown <thom(at)linux(dot)com>
2013-01-08 19:26:30 from Andres Freund <andres(at)2ndquadrant(dot)com>
Lists:
pgsql-hackers
Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> On 2013-01-12 15:39:16 -0500, Tom Lane wrote:
>> This is actually a disadvantage of the proposal to replace the abort()
>> calls with __builtin_unreachable(), too. The gcc boys interpret the
>> semantics of that as "if control reaches here, the behavior is
>> undefined"
> We could make add an Assert() additionally?
I see little value in that. In a non-assert build it will do nothing at
all, and in an assert build it'd just add code bloat.
I think there might be a good argument for defining pg_unreachable() as
abort() in assert-enabled builds, even if the compiler has
__builtin_unreachable(): that way, if the impossible happens, we'll find
out about it in a predictable and debuggable way. And by definition,
we're not so concerned about either performance or code bloat in assert
builds.
> Where my variant is:
> #define ereport_domain(elevel, domain, rest) \
> do { \
> const int elevel_ = elevel; \
> if (errstart(elevel_,__FILE__, __LINE__, PG_FUNCNAME_MACRO, domain))\
> { \
> errfinish rest; \
> } \
> if (elevel_>= ERROR) \
> pg_unreachable(); \
> } while(0)
This is the same implementation I'd arrived at after looking at
Heikki's. I think we should probably use this for non-gcc builds.
However, for recent gcc (those with __builtin_constant_p) I think that
my original suggestion is better, ie don't use a local variable but
instead use __builtin_constant_p(elevel) && (elevel) >= ERROR in the
second test. That way we don't have the problem with unreachability
tests failing at -O0. We may still have some issues with bogus warnings
in other compilers, but I think most PG developers are using recent gcc.
regards, tom lane
In response to
pgsql-hackers by date
Next :From: Andres FreundDate: 2013-01-13 19:06:37
Subject : Re: Re: [PATCH] unified frontend support for pg_malloc et
al and palloc/pfree mulation (was xlogreader-v4)
Previous :From : Andrew DunstanDate : 2013-01-13 18:18:58
Subject : psql binary output