OSDN Git Service

Fix behavior when raising plpy.Fatal()
authorPeter Eisentraut <peter_e@gmx.net>
Mon, 7 Mar 2011 21:01:54 +0000 (23:01 +0200)
committerPeter Eisentraut <peter_e@gmx.net>
Mon, 7 Mar 2011 21:47:43 +0000 (23:47 +0200)
It should cause a elog(FATAL) error, and it fact it was simply causing
a elog(ERROR).

Jan Urbański

src/pl/plpython/plpython.c

index 43d332d..1f8c27f 100644 (file)
@@ -4381,8 +4381,13 @@ PLy_elog(int elevel, const char *fmt,...)
        int                     position = 0;
 
        PyErr_Fetch(&exc, &val, &tb);
-       if (exc != NULL && PyErr_GivenExceptionMatches(val, PLy_exc_spi_error))
-               PLy_get_spi_error_data(val, &detail, &hint, &query, &position);
+       if (exc != NULL)
+       {
+               if (PyErr_GivenExceptionMatches(val, PLy_exc_spi_error))
+                       PLy_get_spi_error_data(val, &detail, &hint, &query, &position);
+               else if (PyErr_GivenExceptionMatches(val, PLy_exc_fatal))
+                       elevel = FATAL;
+       }
        PyErr_Restore(exc, val, tb);
 
        xmsg = PLy_traceback(&xlevel);