Re: UPDATE using query; per-row function calling problem - Mailing list pgsql-general

From pasman pasmański
Subject Re: UPDATE using query; per-row function calling problem
Date
Msg-id CAOWY8=Z4qfFmgHnRnoWS8RG9phzHOvX4-c9-nVAWFeJn1tyZ7g@mail.gmail.com
Whole thread Raw
In response to Re: UPDATE using query; per-row function calling problem  (Rory Campbell-Lange <rory@campbell-lange.net>)
Responses Re: UPDATE using query; per-row function calling problem  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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@campbell-lange.net>:
> On 02/09/11, Tom Lane (tgl@sss.pgh.pa.us) wrote:
>> Rory Campbell-Lange <rory@campbell-lange.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@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>


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

pgsql-general by date:

Previous
From: David Johnston
Date:
Subject: Re: UPDATE using query; per-row function calling problem
Next
From: Andrey Vorobiev
Date:
Subject: JDBC XA resource bug?