Re: [HACKERS] optimizer pruning problem

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Roberto Cornacchia <rcorna(at)tin(dot)it>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] optimizer pruning problem
Date: 1999-09-07 21:26:06
Message-ID: 28899.936739566@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> When the join is between attnos < 0 (such as oids), the selectivity is
> estimated as 0.5 (leading to very bad size estimates), since this code
> in function compute_clause_selec (clausesel.c):

> if (relid1 > 0 && relid2 > 0 && attno1 > 0 && attno2 > 0)
> ...
> else
> s1 = (Cost) (0.5);

> So what is the aim of the last two and conditions?

That's a bug, I guess. -1 is used to signal "couldn't find the
attribute", but there's no real need to check *both* relid and attno
to determine that. It should consider positive relid and negative
attno to be valid.

Since vacuum doesn't record statistics for the system attributes,
there probably also needs to be a hack in the code that looks in
pg_statistic so that it will produce reasonable estimates. We
should assume that OID has perfect disbursion, for sure. I don't
know if we can assume anything much about the other sys attributes...

regards, tom lane

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jason Venner 1999-09-07 21:40:10 Stability questions RE 6.5 and 6.3.2 & 6.3.2 problems
Previous Message Roberto Cornacchia 1999-09-07 19:15:37 Re: [HACKERS] optimizer pruning problem