Re: spurious function execution in prepared statements.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: spurious function execution in prepared statements.
Дата
Msg-id 16573.1096556090@sss.pgh.pa.us
обсуждение исходный текст
Ответ на spurious function execution in prepared statements.  ("Merlin Moncure" <merlin.moncure@rcsonline.com>)
Список pgsql-hackers
"Merlin Moncure" <merlin.moncure@rcsonline.com> writes:
> now, if ps ends up using a index scan on t, everything is ok.  However,
> if ps does a seqscan, f executes for every row on t examined until the
> [expr] criteria is met.  Is this a bug?

Works for me.

regression=# create function f(int) returns int as '
regression'# begin
regression'#   raise notice ''f(%)'', $1;
regression'#   return $1;
regression'# end' language plpgsql;
CREATE FUNCTION
regression=# select f(unique2) from tenk1 where unique2%2 = 1 limit 2;
NOTICE:  f(1)
NOTICE:  f(3)
 f
---
 1
 3
(2 rows)

regression=# prepare ps as
regression-# select f(unique2) from tenk1 where unique2%2 = 1 limit 2;
PREPARE
regression=# execute ps;
NOTICE:  f(1)
NOTICE:  f(3)
 f
---
 1
 3
(2 rows)

regression=#

You sure you aren't using f() in the WHERE clause?

            regards, tom lane

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

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: [PERFORM] spurious function execution in prepared statements.
Следующее
От: "Merlin Moncure"
Дата:
Сообщение: Re: [PERFORM] spurious function execution in prepared statements.