> Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> writes:
>> In a discussion with Andres on the hash grouping sets review thread, I
>> proposed that we should have something of the form
>> #define lfirst_node(_type_, l) (castNode(_type_,lfirst(l)))
> That seems like a fairly good idea. A significant fraction of the
> existing castNode() calls are being applied to lfirst(something),
> and this would shorten that idiom a bit.
PFA a patch to do this. It turns out that just under half of the
castNode() calls in the current tree have List-cell-extraction
functions as arguments, and so can be replaced like this. So I think
this is a great idea and we should do it; it's a definite notational
As with the original addition of castNode, it seems like a good idea
to back-patch the additions to pg_list.h, so that we won't have
back-patching problems for new code using this feature.
> There's another noticeable fraction that are being applied to
> linitial(something), but I'm not sure if defining linitial_node()
> is worth the trouble.
It is, and in fact I ended up providing equivalents for all the
List-cell-extraction functions. All except lfourth_node() are
actually in use in this patch.
Barring objections, I'll push this shortly.
regards, tom lane
In response to
pgsql-hackers by date
|Next:||From: Andres Freund||Date: 2017-04-10 16:23:38|
|Subject: Re: Adding lfirst_node (was Re: [sqlsmith] Planner crash
on foreign table join)|
|Previous:||From: Andres Freund||Date: 2017-04-10 16:16:27|
|Subject: Re: GCC 7 warnings|