Re: BUG #1326: Unique and Primary Key index over bigint type

Richard Huxton <dev@archonet.com>

From: Richard Huxton <dev@archonet.com>
To: Fernando Kasten Peinado <fernandopeinado@uol.com.br>
Cc: pgsql-bugs@postgresql.org
Date: 2004-11-19T15:52:19Z
Lists: pgsql-bugs
PostgreSQL Bugs List wrote:
> The following bug has been logged online:
> 
> Bug reference:      1326
> Logged by:          Fernando Kasten Peinado
> 
> Email address:      fernandopeinado@uol.com.br
> 
> PostgreSQL version: 7.4.5
> 
> Operating system:   Linux RedHat 7.3
> 
> Description:        Unique and Primary Key index over bigint type doesn't 
> work 
> 
> Details: 
> 
> index is not used when Type is bigint.

This is a known issue with versions prior to 8.0. When you provide a 
constant integer smaller than 2^31 it assumes you want int4. Of course, 
the planner then looks for an int4 index and can't find one.

The solution/workaround is to make sure you specify the type of your 
constant, or at least make sure it doesn't look like an int4.
   select * from x where x.id = 12345::int8;
   select * from x where x.id = CAST(12345 AS int8);
   select * from x where x.id = '12345';

The last works because '...' is type unknown so it looks at x.id to see 
what type it wants and casts for you.

HTH

-- 
   Richard Huxton
   Archonet Ltd