Re: Add SPI results constants available for PL/* - Mailing list pgsql-hackers

From Samuel PHAN
Subject Re: Add SPI results constants available for PL/*
Date
Msg-id CAC4O=anySvaFV_Cnxh_REnYuCUDKwscPT45kTykiuHE41pEoCA@mail.gmail.com
Whole thread Raw
In response to Re: Add SPI results constants available for PL/*  (Andrew Dunstan <andrew@dunslane.net>)
List 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:


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'd suppose it interesting to add a table to pg_catalog containing this data.
- it is useless overhead
I tend to agree.

I am expecting so definition some constants in Perl, Python is simple
Presumably 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.

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.

  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 by date:

Previous
From: Tom Lane
Date:
Subject: Re: [BUGS] BUG #6379: SQL Function Causes Back-end Crash
Next
From: Andrew Dunstan
Date:
Subject: Re: pg_restore direct to database is broken for --insert dumps