mirror of https://github.com/citusdata/citus.git
72 lines
1.6 KiB
C
72 lines
1.6 KiB
C
/*
|
|
* errormessage.c
|
|
* Error handling related support functionality.
|
|
*
|
|
* Copyright (c) 2017, Citus Data, Inc.
|
|
*/
|
|
|
|
#include "postgres.h"
|
|
#include "utils/memutils.h"
|
|
|
|
#include "distributed/citus_nodes.h"
|
|
#include "distributed/errormessage.h"
|
|
|
|
|
|
/*
|
|
* ApplyLogRedaction is only supported in Citus Enterprise
|
|
*/
|
|
char *
|
|
ApplyLogRedaction(const char *text)
|
|
{
|
|
return (char *) text;
|
|
}
|
|
|
|
|
|
/*
|
|
* DeferredErrorInternal is a helper function for DeferredError().
|
|
*/
|
|
DeferredErrorMessage *
|
|
DeferredErrorInternal(int code, const char *message, const char *detail, const char *hint,
|
|
const char *filename, int linenumber, const char *functionname)
|
|
{
|
|
DeferredErrorMessage *error = CitusMakeNode(DeferredErrorMessage);
|
|
|
|
error->code = code;
|
|
error->message = message;
|
|
error->detail = detail;
|
|
error->hint = hint;
|
|
error->filename = filename;
|
|
error->linenumber = linenumber;
|
|
error->functionname = functionname;
|
|
return error;
|
|
}
|
|
|
|
|
|
/*
|
|
* RaiseDeferredErrorInternal is a helper function for RaiseDeferredError().
|
|
*/
|
|
void
|
|
RaiseDeferredErrorInternal(DeferredErrorMessage *error, int elevel)
|
|
{
|
|
ErrorData *errorData = palloc0(sizeof(ErrorData));
|
|
|
|
errorData->sqlerrcode = error->code;
|
|
errorData->elevel = elevel;
|
|
errorData->message = pstrdup(error->message);
|
|
if (error->detail)
|
|
{
|
|
errorData->detail = pstrdup(error->detail);
|
|
}
|
|
if (error->hint)
|
|
{
|
|
errorData->hint = pstrdup(error->hint);
|
|
}
|
|
errorData->filename = pstrdup(error->filename);
|
|
errorData->lineno = error->linenumber;
|
|
errorData->funcname = error->functionname;
|
|
|
|
errorData->assoc_context = ErrorContext;
|
|
|
|
ThrowErrorData(errorData);
|
|
}
|