summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Davis2024-10-17 21:56:44 +0000
committerJeff Davis2024-10-17 21:56:44 +0000
commiteecd9138a0ef565366427a88866d0651530f7da4 (patch)
tree90d907dc3b756028612012062dd53a1e342084c1
parent1fed234f9faf1071d925434c5e9c14688fb4c77e (diff)
Improve ThrowErrorData() comments for use with soft errors.
Reviewed-by: Corey Huinker Discussion: https://postgr.es/m/[email protected]
-rw-r--r--src/backend/utils/error/elog.c15
-rw-r--r--src/include/nodes/miscnodes.h7
2 files changed, 13 insertions, 9 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 987ff98067b..8acca3e0a0b 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -1881,12 +1881,15 @@ FlushErrorState(void)
/*
* ThrowErrorData --- report an error described by an ErrorData structure
*
- * This is somewhat like ReThrowError, but it allows elevels besides ERROR,
- * and the boolean flags such as output_to_server are computed via the
- * default rules rather than being copied from the given ErrorData.
- * This is primarily used to re-report errors originally reported by
- * background worker processes and then propagated (with or without
- * modification) to the backend responsible for them.
+ * This function should be called on an ErrorData structure that isn't stored
+ * on the errordata stack and hasn't been processed yet. It will call
+ * errstart() and errfinish() as needed, so those should not have already been
+ * called.
+ *
+ * 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
ThrowErrorData(ErrorData *edata)
diff --git a/src/include/nodes/miscnodes.h b/src/include/nodes/miscnodes.h
index 1612b63acda..2a4bc3012ce 100644
--- a/src/include/nodes/miscnodes.h
+++ b/src/include/nodes/miscnodes.h
@@ -36,9 +36,10 @@
* 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
* is true, error_data has been filled with error details (stored in the
- * callee's memory context!). FreeErrorData() can be called to release
- * error_data, although that step is typically not necessary if the called
- * code was run in a short-lived context.
+ * callee's memory context!). The ErrorData can be modified (e.g. downgraded
+ * to a WARNING) and reported with ThrowErrorData(). FreeErrorData() can be
+ * 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
{