proposal: catch warnings

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема proposal: catch warnings
Дата
Msg-id BAY114-F38133B0D5D11B7CF019CE9F9BD0@phx.gbl
обсуждение исходный текст
Ответы Re: proposal: catch warnings  ("Simon Riggs" <simon@2ndquadrant.com>)
Re: proposal: catch warnings  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hello,

PostgreSQL allow only catch exception (elevel ERROR). SQL/PSM requires that 
warnings are catchable too. Simply solution's is adding one callback  to 
error's processing of errors on level WARNING.

typedef struct WarningHandlerCallback
{       bool            (*callback) (void *arg, ErrorData *edata);       void       *arg;
} WarningHandlerCallback;

extern DLLIMPORT WarningHandlerCallback *warning_handler;

Callback function returns true if accept warning and process it. This 
function is called from errfinish()
      /*        * Emit the message to the right places. If warning_handler is 
defined,        * try use warning_handler. Emit message only if handler don't 
accept        * message (returns false). Warning handlers are used in PL/pgPSM 
language.       */       if (elevel == WARNING)       {               bool handled = false;
               if (warning_handler)               handled = 
(*warning_handler->callback)(warning_handler->arg,edata);
               if (!handled)                       EmitErrorReport();       }       else
EmitErrorReport();

It's propably usable only for SQL/PSM implementation, and it's one from two 
necessery hacks to core for this PL (second is scrollable cursor's support). 
But without this hook I cannot simply distribute plpgpsm.

Any comments?

Best regards

Pavel Stehule

_________________________________________________________________
Chcete sdilet sve obrazky a hudbu s prateli? http://messenger.msn.cz/



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Simon Riggs"
Дата:
Сообщение: Re: 8.3 pending patch queue
Следующее
От: "Simon Riggs"
Дата:
Сообщение: Re: [PATCHES] [Fwd: Index Advisor]