Adding lfirst_node (was Re: [sqlsmith] Planner crash on foreign table join)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andrew Gierth <andrew@tao11.riddles.org.uk>
Cc: pgsql-hackers@postgresql.org
Date: 2017-04-10T16:20:16Z
Lists: pgsql-hackers
Attachments
- add-lfirst_node-and-friends.patch (text/x-diff) patch
I wrote: > Andrew Gierth <andrew@tao11.riddles.org.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 improvement. 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
Commits
-
Improve castNode notation by introducing list-extraction-specific variants.
- 8f0530f58061 10.0 landed
- ff9398052df5 9.3.17 landed
- be182d570210 9.6.3 landed
- bcb1a27dc039 9.5.7 landed
- ba0a0f3ed9e0 9.2.21 landed
- 89a41a1b6b71 9.4.12 landed
-
Clean up bugs in clause_selectivity() cleanup.
- eef8c0069e4d 10.0 landed
-
Add newly-symlinked files to "make clean" target.
- aba696d1af9a 10.0 cited
-
Reset API of clause_selectivity()
- ac2b09508834 10.0 cited