Skip site navigation (1) Skip section navigation (2)

Adding lfirst_node (was Re: [sqlsmith] Planner crash on foreign table join)

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Adding lfirst_node (was Re: [sqlsmith] Planner crash on foreign table join)
Date: 2017-04-10 16:20:16
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-hackers
I wrote:
> 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

Attachment: add-lfirst_node-and-friends.patch
Description: text/x-diff (65.7 KB)

In response to


pgsql-hackers by date

Next:From: Andres FreundDate: 2017-04-10 16:23:38
Subject: Re: Adding lfirst_node (was Re: [sqlsmith] Planner crash on foreign table join)
Previous:From: Andres FreundDate: 2017-04-10 16:16:27
Subject: Re: GCC 7 warnings

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group