Re: Add SPI results constants available for PL/*
| От | Samuel PHAN |
|---|---|
| Тема | Re: Add SPI results constants available for PL/* |
| Дата | |
| Msg-id | CAC4O=anySvaFV_Cnxh_REnYuCUDKwscPT45kTykiuHE41pEoCA@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: Add SPI results constants available for PL/* (Andrew Dunstan <andrew@dunslane.net>) |
| Список | pgsql-hackers |
I agree with Pavel also. Putting these constants in the pg_catalog isn't the cleanest solution.
Though one can make its own little lib in python, perl, whatever, to store these constants, it would be better if through the compilation, these C constants were copied in a way for PL/*.
I can't really tell for the procedure languages other than PL/python but for this one, typically, it would be nice to have them in "plpy" module.
result = plpy.execute(sql_query)
if result.status() == plpy.SPI_OK_SELECT:
# something...
Since the PG developers are the one who decide these constant values, it's quite logic that the equivalent constants for each PL are made available by the PG developers and not each geek to redo the wheel on it's own.
Well, it's not a crucial feature of course, but a nice to have, that was my point ;-)
Have a nice day, guys,
Samuel
On Wed, Jan 4, 2012 at 3:11 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
Yeah, I'm with you and Pavel. Here's my quick perl one-liner to produce a set of SPI_* constants for pl/perl. I'm looking at the best way to include this in the bootstrap code.
On 01/03/2012 08:40 PM, Robert Haas wrote:On Tue, Jan 3, 2012 at 9:33 AM, Pavel Stehule<pavel.stehule@gmail.com> wrote:I tend to agree.I'd suppose it interesting to add a table to pg_catalog containing this data.- it is useless overheadI am expecting so definition some constants in Perl, Python is simplePresumably one could instead write a script to transform the list of
constants into a .pm file that could be loaded into the background, or
whatever PL/python's equivalent of that concept is. Not sure if
there's a better way to do it.
perl -ne 'BEGIN { print "use constant\n{\n"; } END { print "};\n"; }
print "\t$1 => $2,\n" if /#define (SPI_\S+)\s+\(?(-?\d+)\)?/;'
src/include/executor/spi.h
cheers
andrew
В списке pgsql-hackers по дате отправления: