Re: lastval()

From: "John Hansen" <john(at)geeknet(dot)com(dot)au>
To: "Alvaro Herrera" <alvherre(at)surnet(dot)cl>
Cc: "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>, "Neil Conway" <neilc(at)samurai(dot)com>, "Dennis Bjorklund" <db(at)zigo(dot)dhs(dot)org>, <pgsql-patches(at)postgresql(dot)org>
Subject: Re: lastval()
Date: 2005-05-11 18:58:54
Message-ID: 5066E5A966339E42AA04BA10BA706AE50A9320@rodrick.geeknet.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

Alvaro Herrera wrote:
> Sent: Wednesday, May 11, 2005 10:46 PM
> To: John Hansen
> Cc: Bruce Momjian; Neil Conway; Dennis Bjorklund;
> pgsql-patches(at)postgresql(dot)org
> Subject: Re: [PATCHES] lastval()
>
> On Wed, May 11, 2005 at 02:08:16PM +1000, John Hansen wrote:
>
> > Take for instance this (overly simplified) function used in
> a program
> > that builds the query strings dynamically:
> >
> > int64 runquery(char *query) {
> > PQexec(query);
> > result = Pqexec("SELECT lastval()");
> > return result;
> > }
> >
> > The program expects this function to return the 'id' that was
> > inserted, or 0 if the table didn't contain a sequence or it
> wasn't an insert.
> >
> > Rewriting that would take a considerable effort.
>
> Actually, having it throw an error would be helpful, because
> then you can find in the application which calls should be
> replaced by the generic runquery() that has to return nothing
> versus the one that has to return a sequence value. So
> porting is a little more involved but more useful in the end.

Indeed, but my point was that often it is going in the too hard basket.
Not that I disagree, but how do you predetermine which queries would
throw an error if they're built dynamically?

>
> --
> Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
>
>

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2005-05-11 19:00:54 Re: Patch that deals with that AtCommit_Portals encounters
Previous Message Tom Lane 2005-05-11 18:32:38 Re: [PATCHES] plperl and pltcl installcheck targets