Add new elog() levels to stored procedure languages. plperl DEBUG hack
authorBruce Momjian <bruce@momjian.us>
Wed, 6 Mar 2002 18:50:33 +0000 (18:50 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 6 Mar 2002 18:50:33 +0000 (18:50 +0000)
still needed because only removed in 7.4.

src/pl/plperl/SPI.xs
src/pl/plperl/eloglvl.c
src/pl/plperl/eloglvl.h
src/pl/plperl/plperl.c
src/pl/plpgsql/src/gram.y
src/pl/plpgsql/src/scan.l
src/pl/plpython/error.expected
src/pl/plpython/feature.expected
src/pl/plpython/plpython.c
src/pl/tcl/pltcl.c

index 451714ce0e85d80a42349ce43bac92dc1e04d0af..61f59fa43c7d89752e1ec7be85ee6c90535d4c8c 100644 (file)
@@ -55,17 +55,25 @@ elog_elog(level, message)
        int level
        char* message
        CODE:
-       if (level > 0)
-               return;
-       else
-               elog(level, message);
+       elog(level, message);
 
 
 int
 elog_DEBUG()
 
 int
-elog_ERROR()
+elog_LOG()
+
+int
+elog_INFO()
 
 int
 elog_NOTICE()
+
+int
+elog_WARNING()
+
+int
+elog_ERROR()
+
+
index 23289479cd574d4308b3501b20be6a8fa2010eeb..a0da01a2f02e3eb49a6459a763c23f7041454388 100644 (file)
 
 int
 elog_DEBUG(void)
+{
+       return DEBUG1;
+}
+
+int
+elog_LOG(void)
 {
        return LOG;
 }
 
 int
-elog_ERROR(void)
+elog_INFO(void)
 {
-       return ERROR;
+       return INFO;
 }
 
 int
@@ -27,3 +33,16 @@ elog_NOTICE(void)
 {
        return NOTICE;
 }
+
+int
+elog_WARNING(void)
+{
+       return WARNING;
+}
+
+int
+elog_ERROR(void)
+{
+       return ERROR;
+}
+
index c07cd5b5d494d02337f7f75d930fd05d97db1412..742b5e6434b1c70eedf7f06fec8e11cb25868fab 100644 (file)
@@ -1,8 +1,13 @@
 
-int
-                       elog_DEBUG(void);
+int    elog_DEBUG(void);
 
-int
-                       elog_ERROR(void);
+int    elog_LOG(void);
+
+int    elog_INFO(void);
+
+int    elog_NOTICE(void);
+
+int    elog_WARNING(void);
+
+int    elog_ERROR(void);
 
-int                    elog_NOTICE(void);
index 85aeda6d5037c0cba17beb3ae4eb5e5b5366344a..819b68714941af36c4749afc7409da0d0833ec39 100644 (file)
@@ -210,7 +210,7 @@ plperl_init_interp(void)
                 */
                "require Safe; SPI::bootstrap();"
                "sub ::mksafefunc { my $x = new Safe; $x->permit_only(':default');$x->permit(':base_math');"
-               "$x->share(qw[&elog &DEBUG &NOTICE &ERROR]);"
+               "$x->share(qw[&elog &DEBUG &LOG &INFO &NOTICE &WARNING &ERROR]);"
                " return $x->reval(qq[sub { $_[0] }]); }"
                "sub ::mkunsafefunc {return eval(qq[ sub { $_[0] } ]); }"
        };
index 92e079ee26c2cc6a5c878c06adb6a225f6a2eba9..48a683d41a457521cb069b8451f3608e6c009f9b 100644 (file)
@@ -161,8 +161,10 @@ static     PLpgSQL_expr    *make_tupret_expr(PLpgSQL_row *row);
 %token K_GET
 %token K_IF
 %token K_IN
+%token K_INFO
 %token K_INTO
 %token K_IS
+%token K_LOG
 %token K_LOOP
 %token K_NOT
 %token K_NOTICE
@@ -180,6 +182,7 @@ static      PLpgSQL_expr    *make_tupret_expr(PLpgSQL_row *row);
 %token K_THEN
 %token K_TO
 %token K_TYPE
+%token K_WARNING
 %token K_WHEN
 %token K_WHILE
 
@@ -1201,10 +1204,22 @@ raise_level             : K_EXCEPTION
                                        {
                                                $$ = ERROR;
                                        }
+                               | K_WARNING
+                                       {
+                                               $$ = WARNING;
+                                       }
                                | K_NOTICE
                                        {
                                                $$ = NOTICE;
                                        }
+                               | K_INFO
+                                       {
+                                               $$ = INFO;
+                                       }
+                               | K_LOG
+                                       {
+                                               $$ = LOG;
+                                       }
                                | K_DEBUG
                                        {
                                                $$ = DEBUG5;
index a5a363098cf876d11d978a10c134815f87e6acf2..9ef01b7806be4a8b757770b6d90685b84a4892d3 100644 (file)
@@ -117,8 +117,10 @@ from                       { return K_FROM;                        }
 get                            { return K_GET;                         }
 if                             { return K_IF;                          }
 in                             { return K_IN;                          }
+info                   { return K_INFO;                        }
 into                   { return K_INTO;                        }
 is                             { return K_IS;                          }
+log                            { return K_LOG;                         }
 loop                   { return K_LOOP;                        }
 not                            { return K_NOT;                         }
 notice                 { return K_NOTICE;                      }
@@ -136,6 +138,7 @@ select                      { return K_SELECT;                      }
 then                   { return K_THEN;                        }
 to                             { return K_TO;                          }
 type                   { return K_TYPE;                        }
+warning                        { return K_WARNING;                     }
 when                   { return K_WHEN;                        }
 while                  { return K_WHILE;                       }
 
index 96de5da6603a645b31852b06cf0ad7c7f4a03af8..9f0eff0762f0f19d58684d3835515b0169de90d3 100644 (file)
@@ -1,11 +1,11 @@
 SELECT invalid_type_uncaught('rick');
-NOTICE:  plpython: in function __plpython_procedure_invalid_type_uncaught_49801:
+WARNING:  plpython: in function __plpython_procedure_invalid_type_uncaught_49801:
 plpy.SPIError: Cache lookup for type `test' failed.
 SELECT invalid_type_caught('rick');
-NOTICE:  plpython: in function __plpython_procedure_invalid_type_caught_49802:
+WARNING:  plpython: in function __plpython_procedure_invalid_type_caught_49802:
 plpy.SPIError: Cache lookup for type `test' failed.
 SELECT invalid_type_reraised('rick');
-NOTICE:  plpython: in function __plpython_procedure_invalid_type_reraised_49803:
+WARNING:  plpython: in function __plpython_procedure_invalid_type_reraised_49803:
 plpy.SPIError: Cache lookup for type `test' failed.
 SELECT valid_type('rick');
  valid_type 
index b689c1f6154994c1a667aab9a915f221d9205aac..9afd782e7d27644b62187d912707d590149f157c 100644 (file)
@@ -29,7 +29,7 @@ SELECT global_test_two();
 (1 row)
 
 SELECT import_fail();
-NOTICE:  ('import socket failed -- untrusted dynamic module: _socket',)
+WARNING:  ('import socket failed -- untrusted dynamic module: _socket',)
     import_fail     
 --------------------
  failed as expected
index bf9de11c847a0ccd88de5398dc4a1ead82243701..0f4cd68bc2c161ee08dc53a6f9d31c9fb01e0a47 100644 (file)
@@ -1658,9 +1658,12 @@ PLyDict_FromTuple(PLyTypeInfo * info, HeapTuple tuple, TupleDesc desc)
 /* interface to postgresql elog
  */
 static PyObject *PLy_debug(PyObject *, PyObject *);
+static PyObject *PLy_log(PyObject *, PyObject *);
+static PyObject *PLy_info(PyObject *, PyObject *);
+static PyObject *PLy_notice(PyObject *, PyObject *);
+static PyObject *PLy_warning(PyObject *, PyObject *);
 static PyObject *PLy_error(PyObject *, PyObject *);
 static PyObject *PLy_fatal(PyObject *, PyObject *);
-static PyObject *PLy_notice(PyObject *, PyObject *);
 
 /* PLyPlanObject, PLyResultObject and SPI interface
  */
@@ -1782,9 +1785,12 @@ static PyMethodDef PLy_methods[] = {
         * logging methods
         */
        {"debug", PLy_debug, METH_VARARGS, NULL},
+       {"log", PLy_log, METH_VARARGS, NULL},
+       {"info", PLy_info, METH_VARARGS, NULL},
+       {"notice", PLy_notice, METH_VARARGS, NULL},
+       {"warning", PLy_warning, METH_VARARGS, NULL},
        {"error", PLy_error, METH_VARARGS, NULL},
        {"fatal", PLy_fatal, METH_VARARGS, NULL},
-       {"notice", PLy_notice, METH_VARARGS, NULL},
 
        /*
         * create a stored plan
@@ -2627,35 +2633,53 @@ populate_methods(PyObject *klass, PyMethodDef *methods)
 /* the python interface to the elog function
  * don't confuse these with PLy_elog
  */
-static PyObject *PLy_log(int, PyObject *, PyObject *);
+static PyObject *PLy_output(int, PyObject *, PyObject *);
 
 PyObject *
 PLy_debug(PyObject * self, PyObject * args)
 {
-       return PLy_log(LOG, self, args);
+       return PLy_output(DEBUG1, self, args);
 }
 
 PyObject *
-PLy_error(PyObject * self, PyObject * args)
+PLy_log(PyObject * self, PyObject * args)
 {
-       return PLy_log(ERROR, self, args);
+       return PLy_output(LOG, self, args);
 }
 
 PyObject *
-PLy_fatal(PyObject * self, PyObject * args)
+PLy_info(PyObject * self, PyObject * args)
 {
-       return PLy_log(FATAL, self, args);
+       return PLy_output(INFO, self, args);
 }
 
 PyObject *
 PLy_notice(PyObject * self, PyObject * args)
 {
-       return PLy_log(NOTICE, self, args);
+       return PLy_output(NOTICE, self, args);
+}
+
+PyObject *
+PLy_warning(PyObject * self, PyObject * args)
+{
+       return PLy_output(WARNING, self, args);
+}
+
+PyObject *
+PLy_error(PyObject * self, PyObject * args)
+{
+       return PLy_output(ERROR, self, args);
+}
+
+PyObject *
+PLy_fatal(PyObject * self, PyObject * args)
+{
+       return PLy_output(FATAL, self, args);
 }
 
 
 PyObject *
-PLy_log(volatile int level, PyObject * self, PyObject * args)
+PLy_output(volatile int level, PyObject * self, PyObject * args)
 {
        DECLARE_EXC();
        PyObject   *so;
index 2be4701c30e2f92693fd50fed324c8e95de51241..b92363f60e82a7737574a2aba437b269242c90f0 100644 (file)
@@ -1259,7 +1259,11 @@ pltcl_elog(ClientData cdata, Tcl_Interp *interp,
                return TCL_ERROR;
        }
 
-       if (strcmp(argv[1], "INFO") == 0)
+       if (strcmp(argv[1], "DEBUG") == 0)
+               level = DEBUG1;
+       else if (strcmp(argv[1], "LOG") == 0)
+               level = LOG;
+       else if (strcmp(argv[1], "INFO") == 0)
                level = INFO;
        else if (strcmp(argv[1], "NOTICE") == 0)
                level = NOTICE;
@@ -1269,8 +1273,6 @@ pltcl_elog(ClientData cdata, Tcl_Interp *interp,
                level = ERROR;
        else if (strcmp(argv[1], "FATAL") == 0)
                level = FATAL;
-       else if (strcmp(argv[1], "DEBUG") == 0)
-               level = DEBUG1;
        else
        {
                Tcl_AppendResult(interp, "Unknown elog level '", argv[1],