aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/bootstrap/bootstrap.c4
-rw-r--r--src/backend/port/ipc_test.c13
-rw-r--r--src/backend/postmaster/postmaster.c6
-rw-r--r--src/backend/tcop/postgres.c35
-rw-r--r--src/backend/utils/error/Makefile4
-rw-r--r--src/backend/utils/error/assert.c41
-rw-r--r--src/backend/utils/error/exc.c198
-rw-r--r--src/backend/utils/error/excabort.c28
-rw-r--r--src/backend/utils/error/excid.c54
-rw-r--r--src/backend/utils/mmgr/mcxt.c3
-rw-r--r--src/include/postgres.h90
11 files changed, 35 insertions, 441 deletions
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 90e5c2b96c4..d2afa647688 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.136 2002/08/04 06:26:38 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.137 2002/08/10 20:29:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,7 +37,6 @@
#include "storage/proc.h"
#include "tcop/tcopprot.h"
#include "utils/builtins.h"
-#include "utils/exc.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
@@ -238,7 +237,6 @@ BootstrapMain(int argc, char *argv[])
*/
if (!IsUnderPostmaster)
{
- EnableExceptionHandling(true);
MemoryContextInit();
}
diff --git a/src/backend/port/ipc_test.c b/src/backend/port/ipc_test.c
index 9805ed5657e..2421a7e5a02 100644
--- a/src/backend/port/ipc_test.c
+++ b/src/backend/port/ipc_test.c
@@ -21,7 +21,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/ipc_test.c,v 1.3 2002/06/20 20:29:33 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/ipc_test.c,v 1.4 2002/08/10 20:29:18 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,7 +34,6 @@
#include "storage/ipc.h"
#include "storage/pg_sema.h"
#include "storage/pg_shmem.h"
-#include "utils/exc.h"
/********* stuff needed to satisfy references in shmem/sema code *********/
@@ -56,8 +55,6 @@ int NBuffers = DEF_NBUFFERS;
bool assert_enabled = true;
#endif
-Exception FailedAssertion = {"Failed Assertion"};
-
#define MAX_ON_EXITS 20
@@ -120,14 +117,12 @@ ProcessInterrupts(void)
int
ExceptionalCondition(char *conditionName,
- Exception *exceptionP,
- char *detail,
+ char *errorType,
char *fileName,
int lineNumber)
{
- fprintf(stderr, "TRAP: %s(\"%s:%s\", File: \"%s\", Line: %d)\n",
- exceptionP->message, conditionName,
- (detail == NULL ? "" : detail),
+ fprintf(stderr, "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n",
+ errorType, conditionName,
fileName, lineNumber);
abort();
return 0;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index acc4d0090b2..1c70c4f0ecd 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.282 2002/08/04 06:26:38 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.283 2002/08/10 20:29:18 momjian Exp $
*
* NOTES
*
@@ -102,7 +102,6 @@
#include "storage/proc.h"
#include "access/xlog.h"
#include "tcop/tcopprot.h"
-#include "utils/exc.h"
#include "utils/guc.h"
#include "utils/memutils.h"
#include "utils/ps_status.h"
@@ -380,9 +379,8 @@ PostmasterMain(int argc, char *argv[])
MyProcPid = getpid();
/*
- * Fire up essential subsystems: error and memory management
+ * Fire up essential subsystems: memory management
*/
- EnableExceptionHandling(true);
MemoryContextInit();
/*
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index e430d07c763..6c5e17b48f6 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.280 2002/08/06 05:24:04 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.281 2002/08/10 20:29:18 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -54,7 +54,6 @@
#include "tcop/pquery.h"
#include "tcop/tcopprot.h"
#include "tcop/utility.h"
-#include "utils/exc.h"
#include "utils/guc.h"
#include "utils/memutils.h"
#include "utils/ps_status.h"
@@ -1148,7 +1147,6 @@ PostgresMain(int argc, char *argv[], const char *username)
*/
if (!IsUnderPostmaster)
{
- EnableExceptionHandling(true);
MemoryContextInit();
}
@@ -1676,7 +1674,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.280 $ $Date: 2002/08/06 05:24:04 $\n");
+ puts("$Revision: 1.281 $ $Date: 2002/08/10 20:29:18 $\n");
}
/*
@@ -2074,35 +2072,6 @@ ShowUsage(const char *title)
pfree(str.data);
}
-#ifdef NOT_USED
-static int
-assertEnable(int val)
-{
- assert_enabled = val;
- return val;
-}
-
-#ifdef ASSERT_CHECKING_TEST
-int
-assertTest(int val)
-{
- Assert(val == 0);
-
- if (assert_enabled)
- {
- /* val != 0 should be trapped by previous Assert */
- elog(DEBUG3, "Assert test successful (val = %d)", val);
- }
- else
- elog(DEBUG3, "Assert checking is disabled (val = %d)", val);
-
- return val;
-}
-#endif
-
-#endif
-
-
/* ----------------------------------------------------------------
* CreateCommandTag
*
diff --git a/src/backend/utils/error/Makefile b/src/backend/utils/error/Makefile
index 147f03c0770..04d71039833 100644
--- a/src/backend/utils/error/Makefile
+++ b/src/backend/utils/error/Makefile
@@ -4,7 +4,7 @@
# Makefile for utils/error
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/utils/error/Makefile,v 1.9 2000/08/31 16:10:48 petere Exp $
+# $Header: /cvsroot/pgsql/src/backend/utils/error/Makefile,v 1.10 2002/08/10 20:29:18 momjian Exp $
#
#-------------------------------------------------------------------------
@@ -12,7 +12,7 @@ subdir = src/backend/utils/error
top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global
-OBJS = assert.o elog.o exc.o excabort.o excid.o format.o
+OBJS = assert.o elog.o
all: SUBSYS.o
diff --git a/src/backend/utils/error/assert.c b/src/backend/utils/error/assert.c
index eee458020df..81fe83c4b47 100644
--- a/src/backend/utils/error/assert.c
+++ b/src/backend/utils/error/assert.c
@@ -8,65 +8,44 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/error/assert.c,v 1.21 2002/06/20 20:29:39 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/error/assert.c,v 1.22 2002/08/10 20:29:18 momjian Exp $
*
* NOTE
- * This should eventually work with elog(), dlog(), etc.
+ * This should eventually work with elog()
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
-#include <stdio.h>
#include <unistd.h>
-#include "utils/exc.h"
-
+/*
+ * ExceptionalCondition - Handles the failure of an Assert()
+ */
int
ExceptionalCondition(char *conditionName,
- Exception *exceptionP,
- char *detail,
+ char *errorType,
char *fileName,
int lineNumber)
{
- ExcFileName = fileName;
- ExcLineNumber = lineNumber;
-
if (!PointerIsValid(conditionName)
|| !PointerIsValid(fileName)
- || !PointerIsValid(exceptionP))
+ || !PointerIsValid(errorType))
{
fprintf(stderr, "TRAP: ExceptionalCondition: bad arguments\n");
-
- ExcAbort(exceptionP,
- (ExcDetail) detail,
- (ExcData) NULL,
- (ExcMessage) NULL);
}
else
{
- fprintf(stderr, "TRAP: %s(\"%s:%s\", File: \"%s\", Line: %d)\n",
- exceptionP->message, conditionName,
- (detail == NULL ? "" : detail),
+ fprintf(stderr, "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n",
+ errorType, conditionName,
fileName, lineNumber);
}
-#ifdef ABORT_ON_ASSERT
- abort();
-#endif
#ifdef SLEEP_ON_ASSERT
sleep(1000000);
#endif
- /*
- * 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 */
+ abort();
- /* XXX FIXME: detail is lost */
- ExcRaise(exceptionP, (ExcDetail) 0, (ExcData) NULL, conditionName);
return 0;
}
diff --git a/src/backend/utils/error/exc.c b/src/backend/utils/error/exc.c
deleted file mode 100644
index 3dcf999154e..00000000000
--- a/src/backend/utils/error/exc.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * exc.c
- * POSTGRES exception handling code.
- *
- * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.39 2002/06/20 20:29:39 momjian Exp $
- *
- * NOTE
- * XXX this code needs improvement--check for state violations and
- * XXX reset after handling an exception.
- * XXX Probably should be merged with elog.c.
- *
- *-------------------------------------------------------------------------
- */
-#include "postgres.h"
-
-#include <errno.h>
-
-#include "storage/ipc.h"
-#include "utils/exc.h"
-
-extern int errno;
-
-
-static void ExcUnCaught(Exception *excP, ExcDetail detail, ExcData data,
- ExcMessage message);
-static void ExcPrint(Exception *excP, ExcDetail detail, ExcData data,
- ExcMessage message);
-
-/*
- * Global Variables
- */
-static bool ExceptionHandlingEnabled = false;
-
-char *ExcFileName = NULL;
-Index ExcLineNumber = 0;
-
-ExcFrame *ExcCurFrameP = NULL;
-
-static ExcProc *ExcUnCaughtP = NULL;
-
-/*
- * Exported Functions
- */
-
-/*
- * EnableExceptionHandling
- * Enables/disables the exception handling system.
- *
- * Note:
- * This must be called before any exceptions occur. I.e., call this first!
- * This routine will not return if an error is detected.
- * This does not follow the usual Enable... protocol.
- * This should be merged more closely with the error logging and tracing
- * packages.
- *
- * Exceptions:
- * none
- */
-/*
- * Excection handling should be supported by the language, thus there should
- * be no need to explicitly enable exception processing.
- *
- * This function should probably not be called, ever. Currently it does
- * almost nothing. If there is a need for this intialization and checking.
- * then this function should be converted to the new-style Enable code and
- * called by all the other module Enable functions.
- */
-void
-EnableExceptionHandling(bool on)
-{
- if (on == ExceptionHandlingEnabled)
- {
- /* XXX add logging of failed state */
- proc_exit(255);
- /* ExitPostgres(FatalExitStatus); */
- }
-
- if (on)
- { /* initialize */
- ;
- }
- else
- { /* cleanup */
- ExcFileName = NULL;
- ExcLineNumber = 0;
- ExcCurFrameP = NULL;
- ExcUnCaughtP = NULL;
- }
-
- ExceptionHandlingEnabled = on;
-}
-
-static void
-ExcPrint(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
-{
- /* this buffer is only used if errno has a bogus value: */
- char errorstr_buf[32];
- const char *errorstr;
-
-#ifdef lint
- data = data;
-#endif
-
- /* Save error str before calling any function that might change errno */
- errorstr = strerror(errno);
-
- /*
- * Some strerror()s return an empty string for out-of-range errno.
- * This is ANSI C spec compliant, but not exactly useful.
- */
- if (errorstr == NULL || *errorstr == '\0')
- {
- sprintf(errorstr_buf, "error %d", errno);
- errorstr = errorstr_buf;
- }
-
- fflush(stdout); /* In case stderr is buffered */
-
- if (message != NULL)
- fprintf(stderr, "%s", message);
- else if (excP->message != NULL)
- fprintf(stderr, "%s", excP->message);
- else
- fprintf(stderr, "UNNAMED EXCEPTION %p", excP);
-
- fprintf(stderr, " (%ld) [%s]\n", detail, errorstr);
-
- fflush(stderr);
-}
-
-#ifdef NOT_USED
-ExcProc *
-ExcGetUnCaught(void)
-{
- return ExcUnCaughtP;
-}
-#endif
-
-#ifdef NOT_USED
-ExcProc *
-ExcSetUnCaught(ExcProc *newP)
-{
- ExcProc *oldP = ExcUnCaughtP;
-
- ExcUnCaughtP = newP;
-
- return oldP;
-}
-#endif
-
-static void
-ExcUnCaught(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
-{
- ExcPrint(excP, detail, data, message);
-
- ExcAbort(excP, detail, data, message);
-}
-
-void
-ExcRaise(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
-{
- ExcFrame *efp;
-
- efp = ExcCurFrameP;
- if (efp == NULL)
- {
- if (ExcUnCaughtP != NULL)
- (*ExcUnCaughtP) (excP, detail, data, message);
-
- ExcUnCaught(excP, detail, data, message);
- }
- else
- {
- efp->id = excP;
- efp->detail = detail;
- efp->data = data;
- efp->message = message;
-
- ExcCurFrameP = efp->link;
-
- siglongjmp(efp->context, 1);
- }
-}
diff --git a/src/backend/utils/error/excabort.c b/src/backend/utils/error/excabort.c
deleted file mode 100644
index 00fb075b261..00000000000
--- a/src/backend/utils/error/excabort.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * excabort.c
- * Default exception abort code.
- *
- * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/excabort.c,v 1.10 2002/06/20 20:29:39 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
-
-#include "postgres.h"
-
-#include "utils/exc.h"
-
-void
-ExcAbort(const Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
-{
- /* dump core */
- abort();
-}
diff --git a/src/backend/utils/error/excid.c b/src/backend/utils/error/excid.c
deleted file mode 100644
index b32080a5fd1..00000000000
--- a/src/backend/utils/error/excid.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * excid.c
- * POSTGRES known exception identifier code.
- *
- * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/excid.c,v 1.11 2002/06/20 20:29:39 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
-
-#include "postgres.h"
-
-/*****************************************************************************
- * Generic Recoverable Exceptions *
- *****************************************************************************/
-
-
-/*
- * FailedAssertion
- * Indicates an Assert(...) failed.
- */
-Exception FailedAssertion = {"Failed Assertion"};
-
-/*
- * BadState
- * Indicates a function call request is inconsistent with module state.
- */
-Exception BadState = {"Bad State for Function Call"};
-
-/*
- * BadArg
- * Indicates a function call argument or arguments is out-of-bounds.
- */
-Exception BadArg = {"Bad Argument to Function Call"};
-
-/*****************************************************************************
- * Specific Recoverable Exceptions *
- *****************************************************************************/
-
-/*
- * Unimplemented
- * Indicates a function call request requires unimplemented code.
- */
-Exception Unimplemented = {"Unimplemented Functionality"};
-
-Exception CatalogFailure = {"Catalog failure"}; /* XXX inconsistent */
-Exception InternalError = {"Internal Error"}; /* XXX inconsistent */
-Exception SemanticError = {"Semantic Error"}; /* XXX inconsistent */
-Exception SystemError = {"System Error"}; /* XXX inconsistent */
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index 01669b62e2f..709bd74d328 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.30 2002/06/20 20:29:40 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.31 2002/08/10 20:29:18 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -22,7 +22,6 @@
#include "postgres.h"
#include "nodes/memnodes.h"
-#include "utils/excid.h"
#include "utils/memutils.h"
diff --git a/src/include/postgres.h b/src/include/postgres.h
index b95dc7c92f4..c509daf0611 100644
--- a/src/include/postgres.h
+++ b/src/include/postgres.h
@@ -10,7 +10,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1995, Regents of the University of California
*
- * $Id: postgres.h,v 1.58 2002/06/20 20:29:42 momjian Exp $
+ * $Id: postgres.h,v 1.59 2002/08/10 20:29:18 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -470,17 +470,6 @@ extern Datum Float8GetDatum(float8 X);
* ----------------------------------------------------------------
*/
-typedef char *ExcMessage;
-
-typedef struct Exception
-{
- ExcMessage message;
-} Exception;
-
-extern DLLIMPORT Exception FailedAssertion;
-extern DLLIMPORT Exception BadArg;
-extern DLLIMPORT Exception BadState;
-
extern DLLIMPORT bool assert_enabled;
/*
@@ -495,25 +484,24 @@ extern DLLIMPORT bool assert_enabled;
* Generates an exception if the given condition is true.
*
*/
-#define Trap(condition, exception) \
+#define Trap(condition, errorType) \
do { \
if ((assert_enabled) && (condition)) \
- ExceptionalCondition(CppAsString(condition), &(exception), \
- (char*)NULL, __FILE__, __LINE__); \
+ ExceptionalCondition(CppAsString(condition), (errorType), \
+ __FILE__, __LINE__); \
} while (0)
/*
* TrapMacro is the same as Trap but it's intended for use in macros:
*
- * #define foo(x) (AssertM(x != 0) && bar(x))
+ * #define foo(x) (AssertMacro(x != 0) && bar(x))
*
* Isn't CPP fun?
*/
-#define TrapMacro(condition, exception) \
+#define TrapMacro(condition, errorType) \
((bool) ((! assert_enabled) || ! (condition) || \
- (ExceptionalCondition(CppAsString(condition), \
- &(exception), \
- (char*) NULL, __FILE__, __LINE__))))
+ (ExceptionalCondition(CppAsString(condition), (errorType), \
+ __FILE__, __LINE__))))
#ifndef USE_ASSERT_CHECKING
#define Assert(condition)
@@ -523,73 +511,21 @@ extern DLLIMPORT bool assert_enabled;
#define assert_enabled 0
#else
#define Assert(condition) \
- Trap(!(condition), FailedAssertion)
+ Trap(!(condition), "FailedAssertion")
#define AssertMacro(condition) \
- ((void) TrapMacro(!(condition), FailedAssertion))
+ ((void) TrapMacro(!(condition), "FailedAssertion"))
#define AssertArg(condition) \
- Trap(!(condition), BadArg)
+ Trap(!(condition), "BadArgument")
#define AssertState(condition) \
- Trap(!(condition), BadState)
+ Trap(!(condition), "BadState")
#endif /* USE_ASSERT_CHECKING */
-/*
- * LogTrap
- * Generates an exception with a message if the given condition is true.
- *
- */
-#define LogTrap(condition, exception, printArgs) \
- do { \
- if ((assert_enabled) && (condition)) \
- ExceptionalCondition(CppAsString(condition), &(exception), \
- vararg_format printArgs, __FILE__, __LINE__); \
- } while (0)
-
-/*
- * LogTrapMacro is the same as LogTrap but it's intended for use in macros:
- *
- * #define foo(x) (LogAssertMacro(x != 0, "yow!") && bar(x))
- */
-#define LogTrapMacro(condition, exception, printArgs) \
- ((bool) ((! assert_enabled) || ! (condition) || \
- (ExceptionalCondition(CppAsString(condition), \
- &(exception), \
- vararg_format printArgs, __FILE__, __LINE__))))
-
-extern int ExceptionalCondition(char *conditionName,
- Exception *exceptionP, char *details,
+extern int ExceptionalCondition(char *conditionName, char *errorType,
char *fileName, int lineNumber);
-extern char *
-vararg_format(const char *fmt,...)
-/* This lets gcc check the format string for consistency. */
-__attribute__((format(printf, 1, 2)));
-
-#ifndef USE_ASSERT_CHECKING
-#define LogAssert(condition, printArgs)
-#define LogAssertMacro(condition, printArgs) true
-#define LogAssertArg(condition, printArgs)
-#define LogAssertState(condition, printArgs)
-#else
-#define LogAssert(condition, printArgs) \
- LogTrap(!(condition), FailedAssertion, printArgs)
-
-#define LogAssertMacro(condition, printArgs) \
- LogTrapMacro(!(condition), FailedAssertion, printArgs)
-
-#define LogAssertArg(condition, printArgs) \
- LogTrap(!(condition), BadArg, printArgs)
-
-#define LogAssertState(condition, printArgs) \
- LogTrap(!(condition), BadState, printArgs)
-
-#ifdef ASSERT_CHECKING_TEST
-extern int assertTest(int val);
-#endif
-#endif /* USE_ASSERT_CHECKING */
-
/* ----------------------------------------------------------------
* Section 4: genbki macros used by catalog/pg_xxx.h files
* ----------------------------------------------------------------