| -- char check |
| CREATE TABLE chartmp (a char(32)); |
| \copy chartmp from 'data/char.data' |
| SET enable_seqscan=on; |
| SELECT count(*) FROM chartmp WHERE a < '31b0'::char(32); |
| count |
| ------- |
| 587 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a <= '31b0'::char(32); |
| count |
| ------- |
| 588 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a = '31b0'::char(32); |
| count |
| ------- |
| 1 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32); |
| count |
| ------- |
| 401 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32); |
| count |
| ------- |
| 400 |
| (1 row) |
| |
| CREATE INDEX charidx ON chartmp USING GIST ( a ); |
| SET enable_seqscan=off; |
| SELECT count(*) FROM chartmp WHERE a < '31b0'::char(32); |
| count |
| ------- |
| 587 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a <= '31b0'::char(32); |
| count |
| ------- |
| 588 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a = '31b0'::char(32); |
| count |
| ------- |
| 1 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32); |
| count |
| ------- |
| 401 |
| (1 row) |
| |
| SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32); |
| count |
| ------- |
| 400 |
| (1 row) |
| |
| -- Test index-only scans |
| SET enable_bitmapscan=off; |
| EXPLAIN (COSTS OFF) |
| SELECT * FROM chartmp WHERE a BETWEEN '31a' AND '31c'; |
| QUERY PLAN |
| --------------------------------------------------------------------- |
| Gather Motion 3:1 (slice1; segments: 3) |
| -> Index Scan using charidx on chartmp |
| Index Cond: ((a >= '31a'::bpchar) AND (a <= '31c'::bpchar)) |
| Filter: ((a >= '31a'::bpchar) AND (a <= '31c'::bpchar)) |
| Optimizer: Pivotal Optimizer (GPORCA) |
| (5 rows) |
| |
| SELECT * FROM chartmp WHERE a BETWEEN '31a' AND '31c'; |
| a |
| ---------------------------------- |
| 31b0 |
| (1 row) |
| |