Thread: BUG #2126: Index usage for function value

BUG #2126: Index usage for function value

From
"Grzegorz Tańczyk"
Date:
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.

Re: BUG #2126: Index usage for function value

From
Tom Lane
Date:
"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