| -- bit check |
| CREATE TABLE bittmp (a bit(33)); |
| \copy bittmp from 'data/bit.data' |
| SET enable_seqscan=on; |
| SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100'; |
| count |
| ------- |
| 249 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100'; |
| count |
| ------- |
| 250 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100'; |
| count |
| ------- |
| 1 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100'; |
| count |
| ------- |
| 351 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100'; |
| count |
| ------- |
| 350 |
| (1 row) |
| |
| CREATE INDEX bitidx ON bittmp USING GIST ( a ); |
| SET enable_seqscan=off; |
| SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100'; |
| count |
| ------- |
| 249 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100'; |
| count |
| ------- |
| 250 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100'; |
| count |
| ------- |
| 1 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100'; |
| count |
| ------- |
| 351 |
| (1 row) |
| |
| SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100'; |
| count |
| ------- |
| 350 |
| (1 row) |
| |
| -- Test index-only scans |
| SET enable_bitmapscan=off; |
| EXPLAIN (COSTS OFF) |
| SELECT a FROM bittmp WHERE a BETWEEN '1000000' and '1000001'; |
| QUERY PLAN |
| --------------------------------------------------------------------------- |
| Gather Motion 3:1 (slice1; segments: 3) |
| -> Index Only Scan using bitidx on bittmp |
| Index Cond: ((a >= '1000000'::"bit") AND (a <= '1000001'::"bit")) |
| Optimizer: Postgres query optimizer |
| (4 rows) |
| |