Re: making the backend's json parser work in frontend code
От | David Steele |
---|---|
Тема | Re: making the backend's json parser work in frontend code |
Дата | |
Msg-id | ac6a122e-17c5-c962-6e7e-73cde7ffdda6@pgmasters.net обсуждение исходный текст |
Ответ на | Re: making the backend's json parser work in frontend code (Andres Freund <andres@anarazel.de>) |
Список | pgsql-hackers |
On 1/16/20 12:26 PM, Andres Freund wrote: > Hi, > > On 2020-01-16 14:20:28 -0500, Tom Lane wrote: >> David Steele <david@pgmasters.net> writes: >>> The way we handle this in pgBackRest is to put a TRY ... CATCH block in >>> main() to log and exit on any uncaught THROW. That seems like a >>> reasonable way to start here. Without memory contexts that almost >>> certainly will mean memory leaks but I'm not sure how much that matters >>> if the action is to exit immediately. >> >> If that's the expectation, we might as well replace backend ereport(ERROR) >> with something that just prints a message and does exit(1). > > Well, the process might still want to do some cleanup of half-finished > work. You'd not need to be resistant against memory leaks to do so, if > followed by an exit. Obviously you can also do all the necessarily > cleanup from within the ereport(ERROR) itself, but that doesn't seem > appealing to me (not composable, harder to reuse for other programs, > etc). In pgBackRest we have a default handler that just logs the message to stderr and exits (though we consider it a coding error if it gets called). Seems like we could do the same here. Default message and exit if no handler, but optionally allow a handler (which could RETHROW to get to the default handler afterwards). It seems like we've been wanting a front end version of ereport() for a while so I'll take a look at that and see what it involves. Regards, -- -David david@pgmasters.net
В списке pgsql-hackers по дате отправления: