Re: [HACKERS] Re: [BUGS] General Bug Report: Bug in optimizer
Bruce Momjian <maillist@candle.pha.pa.us>
From: Bruce Momjian <maillist@candle.pha.pa.us>
To: vadim@krs.ru (Vadim Mikheev)
Cc: bamby@marka.net.ua, hackers@postgreSQL.org
Date: 1999-03-18T19:59:11Z
Lists: pgsql-bugs, pgsql-hackers
> Bruce Momjian wrote:
> >
> > My guess is that the creation of the index updates the table size
> > statistics.
>
> Yes.
>
> > However, when I see zero size, I don't know if it is accurate, or if
> > someone has added rows since the last vacuum/index creation, so I think
> > it is correct to use an index on a zero-length table if it is
> > appropriate. If the size is 1, I will assume that number is accurate,
> > and do a sequential scan.
> >
> > Does that make sense?
>
> Yes. But we have to fix SeqScan for field1 = -1...
The basic problem is that the -1 is stored as:
{ EXPR
:typeOid 0
:opType op
:oper
{ OPER
:opno 558
:opid 0
:opresulttype 23
}
:args (
{ CONST
:consttype 23
:constlen 4
:constisnull false
:constvalue 4 [ 4 0 0 0 ]
:constbyval true
}
)
This is clearly undesirable, and causes the optimizer to think it can't
use the index.
Is this bug report for 6.4.*, or did are you running the current
development tree? I assume you are running 6.4.*, and am surprised this
did not show as a larger problem.
I will look in the grammer for a fix. This should come across as a
single -4 constant.
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026