Re: [sqlsmith] Planner crash on foreign table join
Andrew Gierth <andrew@tao11.riddles.org.uk>
From: Andrew Gierth <andrew@tao11.riddles.org.uk>
To: Thomas Munro <thomas.munro@enterprisedb.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Andreas Seltenreich <seltenreich@gmx.de>,
Pg Hackers <pgsql-hackers@postgresql.org>,
Simon Riggs <simon@2ndquadrant.com>
Date: 2017-04-10T05:14:42Z
Lists: pgsql-hackers
>>>>> "Thomas" == Thomas Munro <thomas.munro@enterprisedb.com> writes: >> SomeType *x = (SomeType *) lfirst(l); >> >> (in my code I tend to omit the (SomeType *), which I dislike because >> it adds no real protection) Thomas> Just BTW, without that cast it's not compilable as C++, so I'm Thomas> guessing that Peter E will finish up putting it back in Thomas> wherever you leave it out... There's north of 150 other examples (just grep for '= lfirst' in the source). Some were even committed by Peter E :-) In the discussion with Andres the same point came up for palloc, for which I suggested we add something along the lines of: #define palloc_object(_type_) (_type_ *) palloc(sizeof(_type_)) #define palloc_array(_type_, n) (_type_ *) palloc((n) * sizeof(_type_)) palloc() without a cast is even more common than lfirst() without one, and something like half of those (and 80%+ of the pallocs that do have a cast) are palloc(sizeof(...)) or palloc(something * sizeof(...)). -- Andrew (irc:RhodiumToad)
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