Обсуждение: About the return states of SPI_execute for plpy.execute().status()
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
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 thedocumentation 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 forthe result object of plpy.execute(), the function status() can be called andit returns "The SPI_execute() return value". However when testing it thestatus function returns a number. In the specific test I made it returns"11". The problem is that the SPI_execute() documentation [2] does notmention which numeric constant each return code is assigned to. I wouldexpect 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 bemore explicit about the meaning of the status() return value. I have notread the whole PL/Python documentation yet, but if there is any resourcethat maps the raw integer that status() returns to the correct code for theSPI_execute() return value, it would be very helpful to mention it in thestatus() 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" <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