From: | Dominik Sander <mail(at)dsander(dot)de> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Partition constraints behaving strangely |
Date: | 2010-02-25 13:56:04 |
Message-ID: | 4B868174.7060409@dsander.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi,
I have an issue with a table partitioned by one boolean column. The
query planner only seems to skip the non matching table if expired (the
column I use for the partition) is true.
Here is a simple example:
CREATE TABLE mos (type_id INTEGER UNIQUE, expired boolean);
CREATE TABLE mos_expired_1 ( CHECK ( expired = true ) ) INHERITS (mos);
CREATE TABLE mos_active_1 ( CHECK ( expired = false ) ) INHERITS (mos);
INSERT INTO mos_expired_1 (type_id,expired) VALUES(1, true);
INSERT INTO mos_active_1 (type_id,expired) VALUES(2, false);
EXPLAIN SELECT * from mos where expired = true;
Result (cost=0.00..66.60 rows=2330 width=5)
-> Append (cost=0.00..66.60 rows=2330 width=5)
-> Seq Scan on mos (cost=0.00..33.30 rows=1165 width=5)
Filter: expired
-> Seq Scan on mos_expired_1 mos (cost=0.00..33.30 rows=1165
width=5)
Filter: expired
EXPLAIN SELECT * from mos where expired = false;
Result (cost=0.00..99.90 rows=3495 width=5)
-> Append (cost=0.00..99.90 rows=3495 width=5)
-> Seq Scan on mos (cost=0.00..33.30 rows=1165 width=5)
Filter: (NOT expired)
-> Seq Scan on mos_expired_1 mos (cost=0.00..33.30 rows=1165
width=5)
Filter: (NOT expired)
-> Seq Scan on mos_active_1 mos (cost=0.00..33.30 rows=1165
width=5)
Filter: (NOT expired)
I would really like to know if I am missing something or it's a query
planner issue.
--
Dominik Sander
From | Date | Subject | |
---|---|---|---|
Next Message | Mark Vantzelfde | 2010-02-25 14:46:03 | pgsql input variables |
Previous Message | Carsten Kropf | 2010-02-25 11:41:36 | Putting index entries to XLog |