Improve ThrowErrorData() comments for use with soft errors.

Reviewed-by: Corey Huinker
Discussion: https://postgr.es/m/901ab7cf01957f92ea8b30b6feeb0eacfb7505fc.camel@j-davis.com
This commit is contained in:
Jeff Davis 2024-10-17 14:56:44 -07:00
parent 1fed234f9f
commit eecd9138a0
2 changed files with 13 additions and 9 deletions

View File

@ -1881,12 +1881,15 @@ FlushErrorState(void)
/* /*
* ThrowErrorData --- report an error described by an ErrorData structure * ThrowErrorData --- report an error described by an ErrorData structure
* *
* This is somewhat like ReThrowError, but it allows elevels besides ERROR, * This function should be called on an ErrorData structure that isn't stored
* and the boolean flags such as output_to_server are computed via the * on the errordata stack and hasn't been processed yet. It will call
* default rules rather than being copied from the given ErrorData. * errstart() and errfinish() as needed, so those should not have already been
* This is primarily used to re-report errors originally reported by * called.
* background worker processes and then propagated (with or without *
* modification) to the backend responsible for them. * ThrowErrorData() is useful for handling soft errors. It's also useful for
* re-reporting errors originally reported by background worker processes and
* then propagated (with or without modification) to the backend responsible
* for them.
*/ */
void void
ThrowErrorData(ErrorData *edata) ThrowErrorData(ErrorData *edata)

View File

@ -36,9 +36,10 @@
* After calling code that might report an error this way, check * After calling code that might report an error this way, check
* error_occurred to see if an error happened. If so, and if details_wanted * error_occurred to see if an error happened. If so, and if details_wanted
* is true, error_data has been filled with error details (stored in the * is true, error_data has been filled with error details (stored in the
* callee's memory context!). FreeErrorData() can be called to release * callee's memory context!). The ErrorData can be modified (e.g. downgraded
* error_data, although that step is typically not necessary if the called * to a WARNING) and reported with ThrowErrorData(). FreeErrorData() can be
* code was run in a short-lived context. * called to release error_data, although that step is typically not necessary
* if the called code was run in a short-lived context.
*/ */
typedef struct ErrorSaveContext typedef struct ErrorSaveContext
{ {