Обсуждение: Auto-timestamp generator (attached)
Following the 'new type proposal' discussion recently I decided to have a
play at creating an automatic trigger generator. Attached is the sql and an
example of its use.
Basically you call a function:
  select lastchg_addto(mytable,mycol);
where mycol is of type timestamp. The function builds the
To use it you will need plpgsql enabled (man createlang) and also version
7.1
After use, there are two functions left - you can remove these with:
  drop function lastchg_addto(text,text);
  drop function lastchg_remove(text,text);
I've tried to layout the plpgsql for ease of understanding - if you want to
see how the trigger gets created, you can return exec1 or exec2 instead of
the success message.
This just a demo - obviously it's fairly simple to put together triggers for
this purpose, but I'd appreciate any thoughts about the approach.
TIA people
Oh - 2 questions for any of the developers/clued up
1. Is there any way to parse a variable-length list of parameters in
plpgsql?
2. Is there any chance of a different quoting method for functions? e.g.
    create function ... as q[ ...body here ...];
   So we can avoid the '''' stuff - it's a lot of static
- Richard Huxton
			
		Вложения
I think that modules like this could be included in the distribution or archieved at the ftp. They'd make it easier for people new to sql to start using postgresql. Also there would be no performance loss in the backend code, as these "modules" don't need any support. - Einar On Thu, 8 Feb 2001, Richard Huxton wrote: > Following the 'new type proposal' discussion recently I decided to have a > play at creating an automatic trigger generator. Attached is the sql and an > example of its use. > > Basically you call a function: > select lastchg_addto(mytable,mycol); > where mycol is of type timestamp. The function builds the > > To use it you will need plpgsql enabled (man createlang) and also version > 7.1 > After use, there are two functions left - you can remove these with: > drop function lastchg_addto(text,text); > drop function lastchg_remove(text,text); > > I've tried to layout the plpgsql for ease of understanding - if you want to > see how the trigger gets created, you can return exec1 or exec2 instead of > the success message. > > This just a demo - obviously it's fairly simple to put together triggers for > this purpose, but I'd appreciate any thoughts about the approach. > > TIA people > > Oh - 2 questions for any of the developers/clued up > > 1. Is there any way to parse a variable-length list of parameters in > plpgsql? > 2. Is there any chance of a different quoting method for functions? e.g. > create function ... as q[ ...body here ...]; > So we can avoid the '''' stuff - it's a lot of static > > - Richard Huxton >
Quoting Einar Karttunen <ekarttun@cs.Helsinki.FI>: > I think that modules like this could be included in the distribution or > archieved at the ftp. They'd make it easier for people new to sql to > start using postgresql. Also there would be no performance loss in > the backend code, as these "modules" don't need any support. This is what /contrib in the source is for ;-) Peter > > - Einar > > On Thu, 8 Feb 2001, Richard Huxton wrote: > > Following the 'new type proposal' discussion recently I decided to > have a > > play at creating an automatic trigger generator. Attached is the sql > and an > > example of its use. > > > > Basically you call a function: > > select lastchg_addto(mytable,mycol); > > where mycol is of type timestamp. The function builds the > > > > To use it you will need plpgsql enabled (man createlang) and also > version > > 7.1 > > After use, there are two functions left - you can remove these with: > > drop function lastchg_addto(text,text); > > drop function lastchg_remove(text,text); > > > > I've tried to layout the plpgsql for ease of understanding - if you > want to > > see how the trigger gets created, you can return exec1 or exec2 > instead of > > the success message. > > > > This just a demo - obviously it's fairly simple to put together > triggers for > > this purpose, but I'd appreciate any thoughts about the approach. > > > > TIA people > > > > Oh - 2 questions for any of the developers/clued up > > > > 1. Is there any way to parse a variable-length list of parameters in > > plpgsql? > > 2. Is there any chance of a different quoting method for functions? > e.g. > > create function ... as q[ ...body here ...]; > > So we can avoid the '''' stuff - it's a lot of static > > > > - Richard Huxton > > > > -- Peter Mount peter@retep.org.uk PostgreSQL JDBC Driver: http://www.retep.org.uk/postgres/ RetepPDF PDF library for Java: http://www.retep.org.uk/pdf/
When I try this in 7.0.3:
playpen=# \i temp.txt
CREATE
CREATE
playpen=# create table foo (a serial, b text, c timestamp);
NOTICE:  CREATE TABLE will create implicit sequence 'foo_a_seq' for
SERIAL column 'foo.a'
NOTICE:  CREATE TABLE/UNIQUE will create implicit index 'foo_a_key' for
table 'foo'
CREATE
playpen=# select lastchg_addto('foo','c');
ERROR:  plpgsql: cache lookup from pg_proc failed
playpen=# select version();
                               version
---------------------------------------------------------------------
 PostgreSQL 7.0.3 on i686-pc-linux-gnu, compiled by gcc egcs-2.91.66
(1 row)
That error (cache lookup from pg_proc failed) is the same one I got when
I was trying to implement this myself, and I still don't know what it
means.
Richard Huxton wrote:
>
> Following the 'new type proposal' discussion recently I decided to have a
> play at creating an automatic trigger generator. Attached is the sql and an
> example of its use.
>
> Basically you call a function:
>   select lastchg_addto(mytable,mycol);
> where mycol is of type timestamp. The function builds the
>
> To use it you will need plpgsql enabled (man createlang) and also version
> 7.1
> After use, there are two functions left - you can remove these with:
>   drop function lastchg_addto(text,text);
>   drop function lastchg_remove(text,text);
>
> I've tried to layout the plpgsql for ease of understanding - if you want to
> see how the trigger gets created, you can return exec1 or exec2 instead of
> the success message.
>
> This just a demo - obviously it's fairly simple to put together triggers for
> this purpose, but I'd appreciate any thoughts about the approach.
>
> TIA people
>
> Oh - 2 questions for any of the developers/clued up
>
> 1. Is there any way to parse a variable-length list of parameters in
> plpgsql?
> 2. Is there any chance of a different quoting method for functions? e.g.
>     create function ... as q[ ...body here ...];
>    So we can avoid the '''' stuff - it's a lot of static
>
> - Richard Huxton
>
>   ------------------------------------------------------------------------
>                      Name: lastchange.sql
>    lastchange.sql    Type: unspecified type (application/octet-stream)
>                  Encoding: quoted-printable
>
>                              Name: lastchange_example.txt
>    lastchange_example.txt    Type: Plain Text (text/plain)
>                          Encoding: quoted-printable
--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com
			
		Joseph Shraibman <jks@selectacast.net> writes:
> playpen=# select lastchg_addto('foo','c');
> ERROR:  plpgsql: cache lookup from pg_proc failed
Somewhere you've got a stored plan --- probably a view or rule or
trigger, if it persists across backend runs --- that refers to a plpgsql
function that no longer exists (at least not under the same OID).  You
need to drop and recreate that view or whatever.  Unfortunately you
haven't shown us enough info to guess which one...
            regards, tom lane
			
		Tom Lane wrote:
>
> Joseph Shraibman <jks@selectacast.net> writes:
> > playpen=# select lastchg_addto('foo','c');
> > ERROR:  plpgsql: cache lookup from pg_proc failed
>
> Somewhere you've got a stored plan --- probably a view or rule or
> trigger, if it persists across backend runs --- that refers to a plpgsql
> function that no longer exists (at least not under the same OID).  You
> need to drop and recreate that view or whatever.  Unfortunately you
> haven't shown us enough info to guess which one...
>
>                         regards, tom lane
It is persisting accross backend restarts, and on a newly created
database too.  There are no views, rules, or triggers on this database.
If this is involving rules, could this be related to the patched version
of command.c that I have (the patch was to fix an error when trying to
add foreign keys, see:
http://postgresql.readysetnet.com/mhonarc/pgsql-sql/2000-12/msg00057.html
)?
The patched command.c is at:
http://www.selectacast.net/~jks/postgres/command.c
--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com
			
		Joseph Shraibman <jks@selectacast.net> writes:
> It is persisting accross backend restarts, and on a newly created
> database too.  There are no views, rules, or triggers on this database.
Oh?  That's interesting.  It might help to patch
src/pl/plpgsql/src/pl_comp.c to show you the OID that it's unhappy about
... um ... waitasec.  7.0.* already *has* that patch.  If you're getting
an error message that doesn't mention an OID, you must be running a
7.0.0 or older plpgsql.  That might not play too well with a post-7.0
backend.  Check the path that's defined for the plpgsql shlib.
            regards, tom lane
			
		No, this is 7.0.3. Look in my pervious message where I did a version(). Tom Lane wrote: > > Joseph Shraibman <jks@selectacast.net> writes: > > It is persisting accross backend restarts, and on a newly created > > database too. There are no views, rules, or triggers on this database. > > Oh? That's interesting. It might help to patch > src/pl/plpgsql/src/pl_comp.c to show you the OID that it's unhappy about > ... um ... waitasec. 7.0.* already *has* that patch. If you're getting > an error message that doesn't mention an OID, you must be running a > 7.0.0 or older plpgsql. That might not play too well with a post-7.0 > backend. Check the path that's defined for the plpgsql shlib. > > regards, tom lane -- Joseph Shraibman jks@selectacast.net Increase signal to noise ratio. http://www.targabot.com
Joseph Shraibman <jks@selectacast.net> writes:
> No, this is 7.0.3.  Look in my pervious message where I did a version().
Yes, that proves that your core backend is 7.0.3.  However, the spelling
of the error message proves that your plpgsql shlib is NOT 7.0.3.  It
might well be 6.5 or even older.
            regards, tom lane
			
		Tom Lane wrote: > > Joseph Shraibman <jks@selectacast.net> writes: > > No, this is 7.0.3. Look in my pervious message where I did a version(). > > Yes, that proves that your core backend is 7.0.3. However, the spelling > of the error message proves that your plpgsql shlib is NOT 7.0.3. It > might well be 6.5 or even older. > > regards, tom lane Huh? How could that happen? -- Joseph Shraibman jks@selectacast.net Increase signal to noise ratio. http://www.targabot.com
Joseph Shraibman <jks@selectacast.net> writes:
>> Yes, that proves that your core backend is 7.0.3.  However, the spelling
>> of the error message proves that your plpgsql shlib is NOT 7.0.3.  It
>> might well be 6.5 or even older.
> Huh?  How could that happen?
Easily.  Check the path to the shlib that's defined in the CREATE
FUNCTION call for plpgsql_call_handler, eg do
    select * from pg_proc where proname = 'plpgsql_call_handler';
The backend will believe whatever you tell it --- if, say, you restored
a 6.5 dump that had a different library path than your current
installation, you'd be in trouble.  How exactly did you install plpgsql
support into this database?
            regards, tom lane
			
		Tom Lane wrote:
>
> Joseph Shraibman <jks@selectacast.net> writes:
> >> Yes, that proves that your core backend is 7.0.3.  However, the spelling
> >> of the error message proves that your plpgsql shlib is NOT 7.0.3.  It
> >> might well be 6.5 or even older.
>
> > Huh?  How could that happen?
>
> Easily.  Check the path to the shlib that's defined in the CREATE
> FUNCTION call for plpgsql_call_handler, eg do
>         select * from pg_proc where proname = 'plpgsql_call_handler';
> The backend will believe whatever you tell it --- if, say, you restored
> a 6.5 dump that had a different library path than your current
> installation, you'd be in trouble.  How exactly did you install plpgsql
> support into this database?
>
>                         regards, tom lane
CREATE FUNCTION "plpgsql_call_handler" ( ) RETURNS opaque AS
'/usr/lib/pgsql/plpgsql.so' LANGUAGE 'C';
CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER
"plpgsql_call_handler" LANCOMPILER 'PL/pgSQL';
I just cut and pasted without looking at it.  Stupid me.  That points to
the 6.5.3 lib that came with redhat.
Now:
playpen=# select lastchg_addto('foo','c');
ERROR:  fmgr_info: function 326368: cache lookup failed
There is nothing in  pg_proc with oid of 326368.
But if try again in a newly created database:
playpen2=# CREATE FUNCTION "plpgsql_call_handler" ( ) RETURNS opaque AS
playpen2-# '/usr/local/pgsql/lib/plpgsql.so' LANGUAGE 'C';
CREATE
playpen2=#
playpen2=# CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER
playpen2-# "plpgsql_call_handler" LANCOMPILER 'PL/pgSQL';
CREATE
playpen2=# \i temp.txt
CREATE
CREATE
playpen2=# create table foo (a serial, b text, c timestamp);
NOTICE:  CREATE TABLE will create implicit sequence 'foo_a_seq' for
SERIAL column 'foo.a'
NOTICE:  CREATE TABLE/UNIQUE will create implicit index 'foo_a_key' for
table 'foo'
CREATE
playpen2=#  select lastchg_addto('foo','c');
ERROR:  parser: parse error at or near "execute"
Is there something in the script that is not compatible with 7.0.3?
--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com
			
		Joseph Shraibman <jks@selectacast.net> writes:
>> The backend will believe whatever you tell it --- if, say, you restored
>> a 6.5 dump that had a different library path than your current
>> installation, you'd be in trouble.  How exactly did you install plpgsql
>> support into this database?
>>
> CREATE FUNCTION "plpgsql_call_handler" ( ) RETURNS opaque AS
> '/usr/lib/pgsql/plpgsql.so' LANGUAGE 'C';
> CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER
> "plpgsql_call_handler" LANCOMPILER 'PL/pgSQL';
> I just cut and pasted without looking at it.  Stupid me.  That points to
> the 6.5.3 lib that came with redhat.
Ah, that explains a good deal.  You were lucky that the 6.5.3 shlib was
just incompatible enough to fail cleanly, and not to do anything really
screwy :-(
BTW, the recommended way to crank up plpgsql or other PL languages is
to use the 'createlang' script, which has a slightly better chance of
getting this sort of detail right.
> playpen2=#  select lastchg_addto('foo','c');
> ERROR:  parser: parse error at or near "execute"
> Is there something in the script that is not compatible with 7.0.3?
plpgsql's 'execute' feature is new for 7.1 ...
            regards, tom lane
			
		Tom Lane wrote: > > BTW, the recommended way to crank up plpgsql or other PL languages is > to use the 'createlang' script, which has a slightly better chance of > getting this sort of detail right. > I got that piece of sql from someone on the sql list. These things should be on: http://www.postgresql.org/docs/postgres/c4091.htm ... and the doc pages for PL/tcl and PL/perl. I was having no idea why the examples weren't working because the documentation neglected to point out that I had to explicitly add the languages. -- Joseph Shraibman jks@selectacast.net Increase signal to noise ratio. http://www.targabot.com
Joseph Shraibman <jks@selectacast.net> writes: >> BTW, the recommended way to crank up plpgsql or other PL languages is >> to use the 'createlang' script, which has a slightly better chance of >> getting this sort of detail right. > I got that piece of sql from someone on the sql list. These things > should be on: > http://www.postgresql.org/docs/postgres/c4091.htm > ... and the doc pages for PL/tcl and PL/perl. I was having no idea why > the examples weren't working because the documentation neglected to > point out that I had to explicitly add the languages. The 7.1 docs do mention that more prominently, see http://www.postgresql.org/devel-corner/docs/postgres/programmer-pl.htm Peter Eisentraut has done a lot of good work on the docs over the last few months... regards, tom lane
Tom Lane wrote: > > Joseph Shraibman <jks@selectacast.net> writes: > >> BTW, the recommended way to crank up plpgsql or other PL languages is > >> to use the 'createlang' script, which has a slightly better chance of > >> getting this sort of detail right. > > > I got that piece of sql from someone on the sql list. These things > > should be on: > > http://www.postgresql.org/docs/postgres/c4091.htm > > > ... and the doc pages for PL/tcl and PL/perl. I was having no idea why > > the examples weren't working because the documentation neglected to > > point out that I had to explicitly add the languages. > > The 7.1 docs do mention that more prominently, see > http://www.postgresql.org/devel-corner/docs/postgres/programmer-pl.htm > Peter Eisentraut has done a lot of good work on the docs over the last > few months... > I'm not sure I like the new docs. In the current (7.x) ones at least there is one contents page for all the docs so I would be more likely to find this stuff. -- Joseph Shraibman jks@selectacast.net Increase signal to noise ratio. http://www.targabot.com
Joseph Shraibman writes: > I'm not sure I like the new docs. In the current (7.x) ones at least > there is one contents page for all the docs so I would be more likely to > find this stuff. Yeah, that's going to be fixed within a day or two. -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
As a suggestion regarding the docs ... as a newbie, I went straight to the"user's lounge" and didn't check out the "developer's corner" because I figured those docs would be pretty hard-core technical. But in reality, many of the developer's docs are much the same, only more current and more complete. I think I have seen other questions on this listserv deriving from the same problem (they would be easily answered from the developer's docs). IMHO, perhaps there should be some sort of a pointer from the user's lounge to the developer's docs, with warning, if that is necessary?? While I'm at it ... to show that I am super-anal-retentive ... the "l" in "lounge" on the www.postgresql.org home page should be capitalized. :) Cheers, Laurel Williams tech@clearwater-inst.com Watertown, MA Peter Eisentraut wrote: > Joseph Shraibman writes: > >> I'm not sure I like the new docs. In the current (7.x) ones at least >> there is one contents page for all the docs so I would be more likely to >> find this stuff. > > > Yeah, that's going to be fixed within a day or two. >
> As a suggestion regarding the docs ... as a newbie, I went straight to > the"user's lounge" and didn't check out the "developer's corner" because > I figured those docs would be pretty hard-core technical. But in > reality, many of the developer's docs are much the same, only more > current and more complete. I think I have seen other questions on this > listserv deriving from the same problem (they would be easily answered > from the developer's docs). IMHO, perhaps there should be some sort of a > pointer from the user's lounge to the developer's docs, with warning, if > that is necessary?? Can you give us an example of something you found in developers that was not in users? > While I'm at it ... to show that I am super-anal-retentive ... the "l" > in "lounge" on the www.postgresql.org home page should be capitalized. :) Oh, he got us there. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Laurel Williams writes: > As a suggestion regarding the docs ... as a newbie, I went straight to > the"user's lounge" and didn't check out the "developer's corner" because > I figured those docs would be pretty hard-core technical. But in > reality, many of the developer's docs are much the same, only more > current and more complete. I think I have seen other questions on this > listserv deriving from the same problem (they would be easily answered > >from the developer's docs). IMHO, perhaps there should be some sort of a > pointer from the user's lounge to the developer's docs, with warning, if > that is necessary?? The documentation in the developer's corner is for the upcoming version 7.1, mostly for the benefit of developers that don't want to build it themselves, whereas the one in the user's lounge are for the released version 7.0 and earlier releases. The reason that they are mostly the same is that the product they're describing is mostly the same. The reason they are more complete is that people have taken the time to work on them since 7.0 was released. And there is a link from the user's lounge to the current development docs. -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
On Mon, 12 Feb 2001, Bruce Momjian wrote: > > As a suggestion regarding the docs ... as a newbie, I went straight to > > the"user's lounge" and didn't check out the "developer's corner" because > > I figured those docs would be pretty hard-core technical. But in > > reality, many of the developer's docs are much the same, only more > > current and more complete. I think I have seen other questions on this > > listserv deriving from the same problem (they would be easily answered > > from the developer's docs). IMHO, perhaps there should be some sort of a > > pointer from the user's lounge to the developer's docs, with warning, if > > that is necessary?? > > Can you give us an example of something you found in developers that was > not in users? The docs in devel-corner are for a not yet released version. If you're running a beta or developer's version of PostgreSQL, that's what you need. Otherwise you should avoid it or encounter the same pitfall as others who thought the stuff was relevant to their release systems and spent hours trying to get something working that wasn't implemented in their version. > > While I'm at it ... to show that I am super-anal-retentive ... the "l" > > in "lounge" on the www.postgresql.org home page should be capitalized. :) > > Oh, he got us there. No, as he said he's being anal. Since I came up with the user's lounge I'm the one that knows it's not a proper noun and therefore *should* be lower case. I do however make it upper case at times for no apparent reason -- my bad :) Vince. -- ========================================================================== Vince Vielhaber -- KA8CSH email: vev@michvhf.com http://www.pop4.net 128K ISDN from $22.00/mo - 56K Dialup from $16.00/mo at Pop4 Networking Online Campground Directory http://www.camping-usa.com Online Giftshop Superstore http://www.cloudninegifts.com ==========================================================================
It doesn't look as if this ever made it into contrib for 7.1 Peter T Mount wrote: > > Quoting Einar Karttunen <ekarttun@cs.Helsinki.FI>: > > > I think that modules like this could be included in the distribution or > > archieved at the ftp. They'd make it easier for people new to sql to > > start using postgresql. Also there would be no performance loss in > > the backend code, as these "modules" don't need any support. > > This is what /contrib in the source is for ;-) > > Peter > > > > > - Einar > > > > On Thu, 8 Feb 2001, Richard Huxton wrote: > > > Following the 'new type proposal' discussion recently I decided to > > have a > > > play at creating an automatic trigger generator. Attached is the sql > > and an > > > example of its use. > > > > > > Basically you call a function: > > > select lastchg_addto(mytable,mycol); > > > where mycol is of type timestamp. The function builds the > > > > > > To use it you will need plpgsql enabled (man createlang) and also > > version > > > 7.1 > > > After use, there are two functions left - you can remove these with: > > > drop function lastchg_addto(text,text); > > > drop function lastchg_remove(text,text); > > > > > > I've tried to layout the plpgsql for ease of understanding - if you > > want to > > > see how the trigger gets created, you can return exec1 or exec2 > > instead of > > > the success message. > > > > > > This just a demo - obviously it's fairly simple to put together > > triggers for > > > this purpose, but I'd appreciate any thoughts about the approach. > > > > > > TIA people > > > > > > Oh - 2 questions for any of the developers/clued up > > > > > > 1. Is there any way to parse a variable-length list of parameters in > > > plpgsql? > > > 2. Is there any chance of a different quoting method for functions? > > e.g. > > > create function ... as q[ ...body here ...]; > > > So we can avoid the '''' stuff - it's a lot of static > > > > > > - Richard Huxton > > > > > > > > > -- > Peter Mount peter@retep.org.uk > PostgreSQL JDBC Driver: http://www.retep.org.uk/postgres/ > RetepPDF PDF library for Java: http://www.retep.org.uk/pdf/ -- Joseph Shraibman jks@selectacast.net Increase signal to noise ratio. http://www.targabot.com
Didn't make it into 7.1.1 either. Joseph Shraibman wrote: > > It doesn't look as if this ever made it into contrib for 7.1 > > Peter T Mount wrote: > > > > Quoting Einar Karttunen <ekarttun@cs.Helsinki.FI>: > > > > > I think that modules like this could be included in the distribution or > > > archieved at the ftp. They'd make it easier for people new to sql to > > > start using postgresql. Also there would be no performance loss in > > > the backend code, as these "modules" don't need any support. > > > > This is what /contrib in the source is for ;-) > > > > Peter > > > > > > > > - Einar > > > > > > On Thu, 8 Feb 2001, Richard Huxton wrote: > > > > Following the 'new type proposal' discussion recently I decided to > > > have a > > > > play at creating an automatic trigger generator. Attached is the sql > > > and an > > > > example of its use. > > > > > > > > Basically you call a function: > > > > select lastchg_addto(mytable,mycol); > > > > where mycol is of type timestamp. The function builds the > > > > > > > > To use it you will need plpgsql enabled (man createlang) and also > > > version > > > > 7.1 > > > > After use, there are two functions left - you can remove these with: > > > > drop function lastchg_addto(text,text); > > > > drop function lastchg_remove(text,text); > > > > > > > > I've tried to layout the plpgsql for ease of understanding - if you > > > want to > > > > see how the trigger gets created, you can return exec1 or exec2 > > > instead of > > > > the success message. > > > > > > > > This just a demo - obviously it's fairly simple to put together > > > triggers for > > > > this purpose, but I'd appreciate any thoughts about the approach. > > > > > > > > TIA people > > > > > > > > Oh - 2 questions for any of the developers/clued up > > > > > > > > 1. Is there any way to parse a variable-length list of parameters in > > > > plpgsql? > > > > 2. Is there any chance of a different quoting method for functions? > > > e.g. > > > > create function ... as q[ ...body here ...]; > > > > So we can avoid the '''' stuff - it's a lot of static > > > > > > > > - Richard Huxton > > > > > > > > > > > > -- Joseph Shraibman jks@selectacast.net Increase signal to noise ratio. http://www.targabot.com
From: "Joseph Shraibman" <jks@selectacast.net> > Didn't make it into 7.1.1 either. As far as my generator goes, it is in the plpgsql cookbook linked off http://techdocs.postgresql.org though. I think this needs more publicity (and contributors) - it seems like a good idea. - Richard Huxton > Joseph Shraibman wrote: > > > > It doesn't look as if this ever made it into contrib for 7.1 > > > > Peter T Mount wrote: > > > > > > Quoting Einar Karttunen <ekarttun@cs.Helsinki.FI>: > > > > > > > I think that modules like this could be included in the distribution or > > > > archieved at the ftp. They'd make it easier for people new to sql to > > > > start using postgresql. Also there would be no performance loss in > > > > the backend code, as these "modules" don't need any support. > > > > > > This is what /contrib in the source is for ;-)