The following bug has been logged online:

Bug reference:      4313
Logged by:          Daniel Podlejski
Email address:      [EMAIL PROTECTED]
PostgreSQL version: 8.3.1, 8.3.3
Operating system:   Linux
Description:        Strange optimizer behaviour
Details: 

cvalley_dev=# \d messages
                                     Table "public.messages"
   Column   |            Type             |                       Modifiers
------------+-----------------------------+---------------------------------
----------------------
 id         | integer                     | not null default
nextval('messages_id_seq'::regclass)
 sender_id  | integer                     | not null
 rcptto_id  | integer                     | not null
 subject    | text                        |
 body       | text                        |
 read       | boolean                     | not null default false
 deleted    | boolean                     | not null default false
 created_at | timestamp without time zone |
 updated_at | timestamp without time zone |
Indexes:
    "messages_pkey" PRIMARY KEY, btree (id)

cvalley_dev=# EXPLAIN SELECT * FROM messages WHERE (messages."id" = 111111);
                                                                            
                                                QUERY PLAN
----------------------------------------------------------------------------
---
 Index Scan using messages_pkey on messages  (cost=0.00..8.35 rows=1
width=51)
   Index Cond: (id = 111111)
(2 rows)

cvalley_dev=# EXPLAIN SELECT * FROM messages WHERE (messages."id" =
11111111111111111111111111111111111111111111111111);                        
                                                              QUERY PLAN
----------------------------------------------------------------------------
-------------
 Seq Scan on messages  (cost=0.00..23400.56 rows=4588 width=51)
   Filter: ((id)::numeric =
11111111111111111111111111111111111111111111111111::numeric)
(2 rows)

I think there is no sense to cast too big value to numeric when field type
is integer.
On really big table this "bug" cause unnecessary io load.

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to