Re: UPDATE using query; per-row function calling problem

From: pasman pasmański <pasman(dot)p(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: UPDATE using query; per-row function calling problem
Date: 2011-09-02 14:48:34
Message-ID: CAOWY8=Z4qfFmgHnRnoWS8RG9phzHOvX4-c9-nVAWFeJn1tyZ7g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

That's interpretation of subselect is ok, when it contains only stable
functions.

Maybe add a warning when subselect contains volatile function.

2011/9/2, Rory Campbell-Lange <rory(at)campbell-lange(dot)net>:
> On 02/09/11, Tom Lane (tgl(at)sss(dot)pgh(dot)pa(dot)us) wrote:
>> Rory Campbell-Lange <rory(at)campbell-lange(dot)net> writes:
>> > I'm doing an UPDATE something like this:
>> > UPDATE
>> > slots
>> > SET
>> > a = 'a'
>> > ,b = (SELECT uuid_generate_v1())
>> > WHERE
>> > c = TRUE;
>>
>> > Each updated row in slots is getting the same value for b.
>
>> That's Postgres' interpretation of an uncorrelated sub-SELECT: there's
>> no reason to do it more than once, so it doesn't.
>>
>> > Is there a way of getting a per-row value from uuid_generate_v1()
>> > without doing a PL loop?
>>
>> Drop the word "SELECT". Why did you put that in in the first place?
>
> Hi Tom
>
> Good question to which I don't know the answer. Thanks very much for the
> advice.
>
> I was able to force a per-row call to uuid_generate_v1 by using this
> pattern
>
> UPDATE
> r_slots
> SET b = (SELECT
> y.x
> FROM
> (select -1 as n, uuid_generate_v1() as x )y
> WHERE
> y.n != r_slots.id)
> ...
>
> But
> b = uuid_generate_v1()
> is a lot simpler!
>
> In my "-1" example, am I right in assuming that I created a correlated
> subquery rather than an correlated one? I'm confused about the
> difference.
>
> Many thanks
> Rory
>
>
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

--
------------
pasman

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2011-09-02 17:20:26 Re: UPDATE using query; per-row function calling problem
Previous Message David Johnston 2011-09-02 13:16:06 Re: UPDATE using query; per-row function calling problem