Re: Index not used in functions in 7.0?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Kyle Bateman <kyle(at)actarg(dot)com>, pgsql-sql(at)postgresql(dot)org, merrill(at)actarg(dot)com
Subject: Re: Index not used in functions in 7.0?
Date: 2000-05-16 16:36:28
Message-ID: 21654.958494988@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:
> Kyle Bateman <kyle(at)actarg(dot)com> writes:
>> I dumped the log (-d 9) from the postmaster and the plan confirms that
>> the scan is sequential when called from within the function but indexed
>> when the SQL is called directly.

> Yikes, that does sound like a bug.

Actually, after further thought I realize that there is a reason for
plans within functions to be different from plans of hand-entered
queries. In the latter case the optimizer knows the constant values
(eg, it sees "WHERE to_proj = 50"), in the former case it doesn't
(eg, it sees "WHERE to_proj = $1") and has to fall back on guesses
about selectivities.

In the particular case at hand I've have expected it to pick an
indexscan anyway, but maybe there's just something weird about your
data. Could I trouble you for the vacuum stats for that table?
Easiest way to get them is

select attname,attdisbursion,s.*
from pg_statistic s, pg_attribute a, pg_class c
where starelid = c.oid and attrelid = c.oid and staattnum = attnum
and relname = 'FOO';

(I'm beginning to think we should create a standard system view
for this query ;-))

regards, tom lane

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Clayton Cottingham aka DrFrog 2000-05-16 17:18:05 doc links broken
Previous Message Joseph Shraibman 2000-05-16 16:23:21 Re: pattern matching operator