On Tue, Jan 28, 2020 at 1:32 PM Tom Lane <t...@sss.pgh.pa.us> wrote: > BTW, now that I think about it, CreateDestReceiver is not up to project > standards anyway, in that it fails to provide reasonable behavior in > the case where what's passed is not a legal value of the enum. > What you'll get, if you're lucky, is a SIGABRT crash with no > indication of the cause --- or if you're not lucky, some very > hard-to-debug crash elsewhere as a result of the function returning > a garbage pointer. So independently of whether the current coding > suppresses compiler warnings reliably, I think we ought to replace it > with elog()-and-return-NULL. Admittedly, that's wasting a few bytes > on a case that should never happen ... but we haven't ever hesitated > to do that elsewhere, if it'd make the problem more diagnosable.
Well, I might be responsible for the CreateDestReceiver thing -- or I might not, I haven't checked -- but I do think that style is a bit cleaner and more elegant. I think it's VERY unlikely that anyone would ever manage to call it with something that's not a legal value of the enum, and if they do, I think the chances of surviving are basically nil, and frankly, I'd rather die. If you asked me where you want me to store my output and I tell you to store it in the sdklgjsdjgslkdg, you really should refuse to do anything at all, not just stick my output someplace-or-other and hope for the best. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company