Re: [PATCH] PL/Python: Add spidata to all spiexceptions

Поиск
Список
Период
Сортировка
От Jan Urbański
Тема Re: [PATCH] PL/Python: Add spidata to all spiexceptions
Дата
Msg-id 5090F05D.5060507@wulczer.org
обсуждение исходный текст
Ответ на [PATCH] PL/Python: Add spidata to all spiexceptions  (Oskari Saarenmaa <os@ohmu.fi>)
Ответы Re: [PATCH] PL/Python: Add spidata to all spiexceptions
Re: [PATCH] PL/Python: Add spidata to all spiexceptions
Список pgsql-hackers
On 30/10/12 22:06, Oskari Saarenmaa wrote:
> PL/Python maps Python SPIError exceptions with 'spidata' attribute into SQL
> errors.  PL/Python also creates classes in plpy.spiexceptions for all known
> errors but does not initialize their spidata, so when a PL/Python function
> raises such an exception it is not recognized properly and is always
> reported as an internal error.

You're right, I never thought of the possibility of user code explicitly
throwing SPIError exceptions.

The root issue is that PLy_elog will only set errcode if it finds the
"spidata" attribute, but I think passing error details through that
attribute is a kludge more than something more code should rely on.

Here's an alternative patch that takes advantage of the already present
(and documented) "sqlstate" variable to set the error code when handling
SPIError exceptions.

I also used your test case and added another one, just in case.

Thanks,
Jan

Вложения

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

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: state of patch - lock waits stats?
Следующее
От: Baptiste LHOSTE
Дата:
Сообщение: Autoanalyze of the autovacuum daemon ...