The following bug has been logged online: Bug reference: 4656 Logged by: Mathias Seiler Email address: mathias.sei...@gmail.com PostgreSQL version: 8.3.6 Operating system: Debian Linux Lenny (testing) Description: Indexes not used when comparing nextval() and currval() to integers Details:
Hello there I'm not sure if I'm doing something terribly wrong here, but I when I noticed a slowdown during a large transaction I dig into the problem and found that when I use this prepared statement: UPDATE booking_entries SET date = ? where id = currval('booking_entries_id_seq'::regclass); The index over the column "id" is not used. This obviously results in a full table scan, which gets very slow after a few thousand entries. So I tried to cast the returning value from currval() to integer (which is the same type of id) but this still doesn't use the index (which is there): EXPLAIN UPDATE booking_entries SET booking_date = now() where id = nextval('booking_entries_id_seq'::regclass)::int4; QUERY PLAN ------------------------------------------------------------------------- Seq Scan on booking_entries (cost=0.00..351.95 rows=1 width=89) Filter: (id = (nextval('booking_entries_id_seq'::regclass))::integer) (2 rows) set enable_seqscan = false; SET EXPLAIN UPDATE booking_entries SET booking_date = now() where id = nextval('booking_entries_id_seq'::regclass)::int4; QUERY PLAN ---------------------------------------------------------------------------- ---- Seq Scan on booking_entries (cost=100000000.00..100000163.01 rows=1 width=89) Filter: (id = (nextval('booking_entries_id_seq'::regclass))::integer) (2 rows) EXPLAIN UPDATE booking_entries SET booking_date = now() where id = 1; QUERY PLAN ---------------------------------------------------------------------------- ----------------- Index Scan using booking_entries_pkey on booking_entries (cost=0.00..8.28 rows=1 width=89) Index Cond: (id = 1) (2 rows) What's going wrong? Could this be a bug? Kind Regards P.S. SELECT version(); version ---------------------------------------------------------------------------- ---------------- PostgreSQL 8.3.6 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.3-3) 4.3.3 (1 row) uname -s -r -v -m -o Linux 2.6.26-1-686 #1 SMP Mon Dec 15 18:15:07 UTC 2008 i686 GNU/Linux -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs