Re: PL/pgSQL 2 - Mailing list pgsql-hackers

From Marko Tiikkaja
Subject Re: PL/pgSQL 2
Date
Msg-id 5405FB86.3060006@joh.to
Whole thread Raw
In response to Re: PL/pgSQL 2  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Responses Re: PL/pgSQL 2
List pgsql-hackers
On 9/2/14 6:31 PM, Heikki Linnakangas wrote:
> On 09/02/2014 07:12 PM, Joel Jacobson wrote:
>> For me, updating a row, is like setting a variable in a normal language.
>> No normal language would require two rows to set a variable.
>> It would be like having to do:
>>      my $var = 10;
>>      die unless $var == 10;
>> in Perl to set a variable.
>
> I don't think most applications are like that. See Kevin's comments
> about doing things in a set-oriented way instead of row-by-row. I know
> I've changed several procedures from the row-oriented style, looping
> over rows with a FOR loop, updating each one individually, to
> set-oriented style with a single UPDATE for a bunch of rows. It makes
> for more concise code, and performs better. I'm sure there are
> counter-examples, and I've also written many UPDATE statements that are
> expected to update exactly one row, but I find an ASSERT would be
> adequate for that.

Well, just off the top of my head a normal function invocation could be: 
one worker working on a single "order" started by a single end user to 
transfer money from one account to another.  And we have *a lot* of code 
like this where there isn't a way to write the code in "set-oriented 
style" without inventing a time machine.  Which just might be out of the 
scope of plpgsql2 (or perhaps as a GUC).


.marko



pgsql-hackers by date:

Previous
From: Joel Jacobson
Date:
Subject: Re: PL/pgSQL 2
Next
From: Kevin Grittner
Date:
Subject: Re: PL/pgSQL 2