Peter Eisentraut <peter.eisentr...@2ndquadrant.com> writes: > On 03/01/2019 19:03, Andres Freund wrote: >>> Relatedly, rewriting all the frontend programs to exception style would >>> end up being a 10x project to rewrite everything for no particular >>> benefit. Going from 8 or so APIs to 2 is already an improvement, I >>> think. If someone wants to try going further, it can be considered, but >>> it would be an entirely different project.
>> Why would it be 10x the effort, > Because you would have to rewrite all the programs to handle elog(ERROR) > jumping somewhere else. FWIW, this argument has nothing to do with what I was actually proposing. I envisioned that we'd have a wrapper in which non-error ereports() map directly onto what you're calling pg_log_debug, pg_log_warning, etc, while ereport(ERROR) has the effect of writing a message and then calling exit(1). We would use ereport(ERROR) in exactly the places where we're now writing a message and calling exit(1). No change at all in program flow control, but an opportunity to consolidate code in places that are currently doing this sort of thing: #ifndef FRONTEND ereport(ERROR, (errcode_for_file_access(), errmsg("could not open file \"%s\" for reading: %m", ControlFilePath))); #else { fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"), progname, ControlFilePath, strerror(errno)); exit(EXIT_FAILURE); } #endif regards, tom lane