From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: how to make an SQL UPDATE from record returning function |
Date: | 2012-04-24 10:10:32 |
Message-ID: | jn5u3q$mhf$1@dough.gmane.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Rafal Pietrak, 24.04.2012 09:02:
> Hi all,
>
> Recently I have fell onto a multicolumn update problem, earlier
> discussed here:
>
> http://postgresql.1045698.n5.nabble.com/UPDATE-of-several-columns-using-SELECT-statement-td1916045.html
>
> But in my case, subselect does not help, since in my case, new values
> for a row I get from an output of record returning function ... and real
> problem is that this function is quite expensive to run.
>
> I currently check this on pg v8.4, and it doesn't work just like in that
> 2009. I was wondering if the 9th release changes anything, or may be
> there is a workaround?
>
> I actually try to:
>
> UPDATE my_table SET (col1,col2) = my_function(col3, col4, ...);
>
> And running the function twice:
>
> UPDATE my_table SET col1 = my_func1(col3, col4, ...), col2 =
> my_func2(col3, col4, ...);
>
> is not an option, since the function is *very* expensive (multiple join
> of large tables - inventories, history, etc).
>
> Is there a syntax workaround that I could possibly use to get the effect
> of launching my_function just once?
With 9.1 you could probably achieve this using a writeable CTE.
Although I have to admit I don't really understand what your function is returning.
Does the function return a result set or scalar values?
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2012-04-24 14:10:24 | Re: [HACKERS] Namespace of array of user defined types is confused by the parser in insert? |
Previous Message | Rafal Pietrak | 2012-04-24 09:37:18 | Re: how to make an SQL UPDATE from record returning function |