diff options
Diffstat (limited to 'src/backend/utils/error/assert.c')
-rw-r--r-- | src/backend/utils/error/assert.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/backend/utils/error/assert.c b/src/backend/utils/error/assert.c new file mode 100644 index 00000000000..ac2de1631d1 --- /dev/null +++ b/src/backend/utils/error/assert.c @@ -0,0 +1,64 @@ +/*------------------------------------------------------------------------- + * + * assert.c-- + * Assert code. + * + * Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * $Header: /cvsroot/pgsql/src/backend/utils/error/assert.c,v 1.1.1.1 1996/07/09 06:22:07 scrappy Exp $ + * + * NOTE + * This should eventually work with elog(), dlog(), etc. + * + *------------------------------------------------------------------------- + */ +#include <stdio.h> + +#include "c.h" /* where the declaration goes */ +#include "utils/module.h" + +#include "utils/exc.h" + +int +ExceptionalCondition(char* conditionName, + Exception *exceptionP, + char* detail, + char* fileName, + int lineNumber) +{ + extern char* ExcFileName; /* XXX */ + extern Index ExcLineNumber; /* XXX */ + + ExcFileName = fileName; + ExcLineNumber = lineNumber; + + if (!PointerIsValid(conditionName) + || !PointerIsValid(fileName) + || !PointerIsValid(exceptionP)) { + fprintf(stderr, "ExceptionalCondition: bad arguments\n"); + + ExcAbort(exceptionP, + (ExcDetail)detail, + (ExcData)NULL, + (ExcMessage)NULL); + } else { + fprintf(stderr, + "%s(\"%s:%s\", File: \"%s\", Line: %d)\n", + exceptionP->message, conditionName, detail, + fileName, lineNumber); + } + + /* + * XXX Depending on the Exception and tracing conditions, you will + * XXX want to stop here immediately and maybe dump core. + * XXX This may be especially true for Assert(), etc. + */ + + /* TraceDump(); dump the trace stack */ + + /* XXX FIXME: detail is lost */ + ExcRaise(exceptionP, (ExcDetail)0, (ExcData)NULL, conditionName); + return(0); +} |