Mark Dilger <hornschnor...@gmail.com> writes: >> On Nov 25, 2017, at 3:33 PM, Tomas Vondra <tomas.von...@2ndquadrant.com> >> wrote: >> I might be missing something, but why would ereport be more appropriate >> than elog? Ultimately, there's not much difference between elog(ERROR) >> and ereport(ERROR) - both will cause a failure.
The core technical differences are (1) an ereport message is exposed for translation, normally, while an elog is not; and (2) with ereport you can set the errcode, whereas with elog it's always going to be XX000 (ERRCODE_INTERNAL_ERROR). > I understand project policy to allow elog for error conditions that will be > reported > in "can't happen" type situations, similar to how an Assert would be used. > For > conditions that can happen through (mis)use by the user, ereport is > appropriate. The project policy about this is basically that elog should only be used for things that are legitimately "internal errors", ie not user-facing. If there's a deterministic way for a user to trigger the error, or if it can reasonably be expected to occur during normal operation, it should definitely have an ereport (and a non-default errcode). regards, tom lane