Re: making the backend's json parser work in frontend code
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Mahendra Singh Thalor <mahi6run@gmail.com>,
Mark Dilger <mark.dilger@enterprisedb.com>,
Andrew Dunstan <andrew.dunstan@2ndquadrant.com>,
David Steele <david@pgmasters.net>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2020-01-28T19:29:46Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > On Tue, Jan 28, 2020 at 1:32 PM Tom Lane <tgl@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. > 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. Well, yeah, that's exactly my point. But in my book, "refuse to do anything" should be "elog(ERROR)", not "invoke undefined behavior". An actual abort() call might be all right here, in that at least we'd know what would happen and we could debug it once we got hold of a stack trace. But pg_unreachable() is not that. Basically, if there's *any* circumstance, broken code or not, where control could reach a pg_unreachable() call, you did it wrong. regards, tom lane
Commits
-
Add jsonapi.c to Mkvcbuild.pm's @pgcommonallfiles.
- 006b9dcad419 13.0 landed
-
Move jsonapi.c and jsonapi.h to src/common.
- beb4699091e9 13.0 landed
-
Move some code from jsonapi.c to jsonfuncs.c.
- 73ce2a03f30b 13.0 landed
-
Adjust pg_parse_json() so that it does not directly ereport().
- 1f3a021730be 13.0 landed
-
Remove jsonapi.c's lex_accept().
- 530609aa4263 13.0 landed
-
Split JSON lexer/parser from 'json' data type support.
- 11b5e3e35d39 13.0 landed
-
Rationalize code placement between wchar.c, encnames.c, and mbutils.c.
- 5afaa2e42655 13.0 landed
-
Move wchar.c and encnames.c to src/common/.
- e6afa8918c46 13.0 landed
-
Update header comments for wchar.c and encnames.c.
- 3d4cb5d6c180 13.0 landed
-
Make StringInfo available to frontend code.
- 26aaf97b683d 13.0 cited
-
Use SASLprep to normalize passwords for SCRAM authentication.
- 60f11b87a234 10.0 cited