Re: BUG #8329: UPDATE x SET x.y = x.y + z does not work in PL/pgSQL

Поиск
Список
Период
Сортировка
От Petr Chmelar
Тема Re: BUG #8329: UPDATE x SET x.y = x.y + z does not work in PL/pgSQL
Дата
Msg-id cy1oxh.mqghb4.2x6c5e-qmf@kazi.fit.vutbr.cz
обсуждение исходный текст
Ответ на Re: BUG #8329: UPDATE x SET x.y = x.y + z does not work in PL/pgSQL  (bricklen <bricklen@gmail.com>)
Ответы Re: BUG #8329: UPDATE x SET x.y = x.y + z does not work in PL/pgSQL  (Petr Chmelar <chmelarp@fit.vutbr.cz>)
Список pgsql-bugs
Dear Briklen and Pavel,
Yes, the z. is a typo, it should be z.z ... I can send the complete query=
 and tables tomorrow, also I'll try to make it simpler (the function is=20=
about 300 lines).
Thanks for the early answers,
Petr


Dne 24.07.2013 17:14 napsal u=C5=BEivatel bricklen:

On Wed, Jul 24, 2013 at 7:45 AM, <chmelarp@fit.vutbr.cz> wrote:

The following bug has been logged on the website:

Bug reference:      8329
Logged by:          Petr
Email address:      chmelarp@fit.vutbr.cz
PostgreSQL version: 9.2.4
Operating system:   Fedora x64
Description:

Hi there,
we have an issue - if I run a query from a console, it runs OK. When it=20=
is
run using EXECUTE in an PL/pgSQL function, it sets NULL. The simplest
version of the query is like this:
UPDATE x
SET x.y =3D x.y + z.
FROM (SELECT z) as Z
WHERE ... ;


If I don't use the "+" in the SET command, it works OK. The whle query is
quite complex, but OK in a console. If you need the query an tables...,=20=
mail
me, please. I can't make it public.



Can you reduce it to a simpler test case without the details you are not=
 able to show?  Statistically it is more likely there is an error in your=
 plpgsql function than in postgres itself.

Also, is the "z." a typo, or is there really a dot after the "z"?

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: BUG #8329: UPDATE x SET x.y = x.y + z does not work in PL/pgSQL
Следующее
От: Terje Elde
Дата:
Сообщение: Single row INSERT on updatable VIEW on top of partitioned table is run against each inheriting table, giving multiple rows from single insert.