Yes, I thought I had done that, but now that I figured out what was going
on, I did it for all cases. So it is no longer occurring for me, but it
still seems like a bug in PostgreSQL. I would expect it to throw an error
immediately, instead of scanning the table for a value of a different type.
In my case, the table is huge, so it really put a hamper on the system.
Gabriel
_________________
Gabriel Weinberg
yegg@alum.mit.edu=20
-----Original Message-----
From: Bruno Wolff III [mailto:bruno@wolff.to]=20
Sent: Wednesday, April 07, 2004 1:38 AM
To: Gabriel Weinberg
Cc: pgsql-bugs@postgresql.org
Subject: Re: Sequential Scan Index Bug
On Sat, Apr 03, 2004 at 13:51:56 -0500,
Gabriel Weinberg <yegg@alum.mit.edu> wrote:
>=20
> I have a table with an integer column with about 10M rows in it.
>=20
> This column has an index (btree).
>=20
> When I try to select a row using this column with an integer, e.g.=20
> select * from table where id=3D4, it always uses the index. However, if=
=20
> I select try to select a row using this column with a decimal, e.g.=20
> select * from table where id=3D4.343, it skips the index entirely and=20
> does a sequential scan of the table.
>=20
> I am using v7.4.2 on Freebsd 4.9.
Depending on what you want to do, you probably either want to cast the value
to an int explicitly or combine that with a test (using a stable
function) to make sure the number is actually an integer.