This patch adds reporting of tcl global variable errorInfo
authorBruce Momjian
Thu, 4 Oct 2001 15:47:41 +0000 (15:47 +0000)
committerBruce Momjian
Thu, 4 Oct 2001 15:47:41 +0000 (15:47 +0000)
which contains stack trace.
  One problem, after this patch errors will generate multiline ERROR
messages. Is it acceptable or do I need split it and generate multiple
singleline messages?

Vsevolod Lobko

src/pl/tcl/pltcl.c

index 5800320615c7b36530616a398023745bb6b8f2fe..73c5247e3c52de7cc5f41472c2785ff03577f9b2 100644 (file)
@@ -31,7 +31,7 @@
  *   ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.40 2001/10/01 15:33:31 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.41 2001/10/04 15:47:41 momjian Exp $
  *
  **********************************************************************/
 
@@ -789,7 +789,11 @@ pltcl_func_handler(PG_FUNCTION_ARGS)
            pltcl_restart_in_progress = 1;
            if (--pltcl_call_level == 0)
                pltcl_restart_in_progress = 0;
-           elog(ERROR, "pltcl: %s", interp->result);
+           UTF_BEGIN;
+           elog(ERROR, "pltcl: %s\n%s", interp->result,
+               UTF_U2E(Tcl_GetVar(interp,"errorInfo",
+                   TCL_GLOBAL_ONLY)));
+           UTF_END;
        }
        if (--pltcl_call_level == 0)
            pltcl_restart_in_progress = 0;
@@ -1162,7 +1166,11 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS)
            pltcl_restart_in_progress = 1;
            if (--pltcl_call_level == 0)
                pltcl_restart_in_progress = 0;
-           elog(ERROR, "pltcl: %s", interp->result);
+           UTF_BEGIN;
+           elog(ERROR, "pltcl: %s\n%s", interp->result,
+               UTF_U2E(Tcl_GetVar(interp,"errorInfo",
+                   TCL_GLOBAL_ONLY)));
+           UTF_END;
        }
        if (--pltcl_call_level == 0)
            pltcl_restart_in_progress = 0;