BUG #2126: Index usage for function value

Started by Grzegorz Tańczykover 20 years ago2 messagesbugs
Jump to latest
#1Grzegorz Tańczyk
goliatus@polzone.pl

The following bug has been logged online:

Bug reference: 2126
Logged by: Grzegorz Tańczyk
Email address: goliatus@polzone.pl
PostgreSQL version: 8.1
Operating system: Slackware
Description: Index usage for function value
Details:

SELECT * FROM table WHERE id = myfunction('x', 10);

There is an index created on id column, but query planner doesn't use it.

When I explain this query:
SELECT * FROM table WHERE id = (SELECT myfunction('x', 10))
Then index is used and execution is much faster.

Is this subquery nessesary?

It doesn't happen in all circumstances, but when query is more complex and
table is big then it happens.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Grzegorz Tańczyk (#1)
Re: BUG #2126: Index usage for function value

"Grzegorz Ta�czyk" <goliatus@polzone.pl> writes:

SELECT * FROM table WHERE id = myfunction('x', 10);
There is an index created on id column, but query planner doesn't use it.

Have you declared myfunction as IMMUTABLE or STABLE? If it's volatile
then optimizing to an indexscan is incorrect and the planner won't do it.

regards, tom lane