Weird behaviour
От | Vlad Arkhipov |
---|---|
Тема | Weird behaviour |
Дата | |
Msg-id | 4F608016.4020109@dc.baikal.ru обсуждение исходный текст |
Ответы |
Re: Weird behaviour
|
Список | pgsql-hackers |
Could anyone please explain the behaviour of Postgres in the cases below? It evaluates an unused expression t.x || t.y in the first case but doesn't do it in the second one. It's also strange that the last explain throws an error. postgres=# select version(); version --------------------------------------------------------------------------------------------------------------- PostgreSQL9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51), 64-bit (1 row) postgres=# create or replace function f() postgres-# returns text as $$ postgres$# begin postgres$# raise exception 'here'; postgres$# end; postgres$# $$ language plpgsql immutable; postgres=# select t.x postgres-# from ( postgres(# select t.x, t.x || f() postgres(# from (values(1)) as t(x) postgres(# ) t; ERROR: here postgres=# select t.x postgres-# from ( postgres(# select t.x, t.x::text || f() postgres(# from (values(1)) as t(x) postgres(# ) t; x --- 1 (1 row) postgres=# explain select t.x postgres-# from ( postgres(# select t.x, t.x || f() postgres(# from (values(1)) as t(x) postgres(# ) t; ERROR: here
В списке pgsql-hackers по дате отправления: