Обсуждение: About the return states of SPI_execute for plpy.execute().status()

Поиск
Список
Период
Сортировка

About the return states of SPI_execute for plpy.execute().status()

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/13/spi-spi-execute.html
Description:

Hello. I'm using Postgres 9.3.25. I know it's an unsupported version but the
documentation pages that I will mention stay the same between 9.3 and 13.

In the docs for Database Access with PL/Python [1] it is mentioned that for
the result object of plpy.execute(), the function status() can be called and
it returns "The SPI_execute() return value". However when testing it the
status function returns a number. In the specific test I made it returns
"11". The problem is that the SPI_execute() documentation [2] does not
mention which numeric constant each return code is assigned to. I would
expect that the number 11 maps to the 11th code in the Return Value list,
but only 10 non-negative values are listed. I think the PL/Python can be
more explicit about the meaning of the status() return value. I have not
read the whole PL/Python documentation yet, but if there is any resource
that maps the raw integer that status() returns to the correct code for the
SPI_execute() return value, it would be very helpful to mention it in the
status() documentation.

[1] https://www.postgresql.org/docs/current/plpython-database.html
[2] https://www.postgresql.org/docs/current/spi-spi-execute.html

Re: About the return states of SPI_execute for plpy.execute().status()

От
"Euler Taveira"
Дата:
On Mon, Feb 15, 2021, at 12:25 PM, PG Doc comments form wrote:
Hello. I'm using Postgres 9.3.25. I know it's an unsupported version but the
documentation pages that I will mention stay the same between 9.3 and 13.
You should upgrade as soon as possible.

In the docs for Database Access with PL/Python [1] it is mentioned that for
the result object of plpy.execute(), the function status() can be called and
it returns "The SPI_execute() return value". However when testing it the
status function returns a number. In the specific test I made it returns
"11". The problem is that the SPI_execute() documentation [2] does not
mention which numeric constant each return code is assigned to. I would
expect that the number 11 maps to the 11th code in the Return Value list,
but only 10 non-negative values are listed. I think the PL/Python can be
more explicit about the meaning of the status() return value. I have not
read the whole PL/Python documentation yet, but if there is any resource
that maps the raw integer that status() returns to the correct code for the
SPI_execute() return value, it would be very helpful to mention it in the
status() documentation.
It is referring to the SPI_execute() return values [1] whose mapped integers      
are available in [2]. 11 refers to INSERT ... RETURNING. Maybe PL/Python should
expose these SPI constants too (if it doesn't).




--
Euler Taveira

Re: Re: About the return states of SPI_execute for plpy.execute().status()

От
Tom Lane
Дата:
"Euler Taveira" <euler@eulerto.com> writes:
> It is referring to the SPI_execute() return values [1] whose mapped integers
> are available in [2]. 11 refers to INSERT ... RETURNING. Maybe PL/Python should
> expose these SPI constants too (if it doesn't).

I wouldn't be in too much of a hurry to do that, because there's been
repeated discussion of removing (or at least obsoleting) most of those
codes in favor of throwing regular errors for the cases that represent
error conditions.  Better to wait to change plpython until after that
dust settles.

            regards, tom lane