2018-04-05 17:19:10 +02:00
|
|
|
set enable_seqscan=off;
|
|
|
|
CREATE TABLE test_bool (
|
|
|
|
i boolean
|
|
|
|
);
|
|
|
|
INSERT INTO test_bool VALUES (false),(true),(null);
|
|
|
|
CREATE INDEX idx_bool ON test_bool USING gin (i);
|
|
|
|
SELECT * FROM test_bool WHERE i<true ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i<=true ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
f
|
|
|
|
t
|
|
|
|
(2 rows)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i=true ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
t
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i>=true ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
t
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i>true ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
(0 rows)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i<false ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
(0 rows)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i<=false ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i=false ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i>=false ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
f
|
|
|
|
t
|
|
|
|
(2 rows)
|
|
|
|
|
|
|
|
SELECT * FROM test_bool WHERE i>false ORDER BY i;
|
|
|
|
i
|
|
|
|
---
|
|
|
|
t
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i<true ORDER BY i;
|
|
|
|
QUERY PLAN
|
|
|
|
-------------------------------------------
|
|
|
|
Sort
|
|
|
|
Sort Key: i
|
|
|
|
-> Bitmap Heap Scan on test_bool
|
|
|
|
Recheck Cond: (i < true)
|
|
|
|
-> Bitmap Index Scan on idx_bool
|
|
|
|
Index Cond: (i < true)
|
|
|
|
(6 rows)
|
|
|
|
|
|
|
|
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i<=true ORDER BY i;
|
|
|
|
QUERY PLAN
|
|
|
|
-------------------------------------------
|
|
|
|
Sort
|
|
|
|
Sort Key: i
|
|
|
|
-> Bitmap Heap Scan on test_bool
|
|
|
|
Recheck Cond: (i <= true)
|
|
|
|
-> Bitmap Index Scan on idx_bool
|
|
|
|
Index Cond: (i <= true)
|
|
|
|
(6 rows)
|
|
|
|
|
|
|
|
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i=true ORDER BY i;
|
2022-09-02 23:01:51 +02:00
|
|
|
QUERY PLAN
|
|
|
|
-------------------------------------------
|
2018-04-05 17:19:10 +02:00
|
|
|
Sort
|
|
|
|
Sort Key: i
|
2022-09-02 23:01:51 +02:00
|
|
|
-> Bitmap Heap Scan on test_bool
|
2022-11-08 16:36:04 +01:00
|
|
|
Recheck Cond: i
|
2022-09-02 23:01:51 +02:00
|
|
|
-> Bitmap Index Scan on idx_bool
|
|
|
|
Index Cond: (i = true)
|
|
|
|
(6 rows)
|
2018-04-05 17:19:10 +02:00
|
|
|
|
|
|
|
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i>=true ORDER BY i;
|
|
|
|
QUERY PLAN
|
|
|
|
-------------------------------------------
|
|
|
|
Sort
|
|
|
|
Sort Key: i
|
|
|
|
-> Bitmap Heap Scan on test_bool
|
|
|
|
Recheck Cond: (i >= true)
|
|
|
|
-> Bitmap Index Scan on idx_bool
|
|
|
|
Index Cond: (i >= true)
|
|
|
|
(6 rows)
|
|
|
|
|
|
|
|
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i>true ORDER BY i;
|
|
|
|
QUERY PLAN
|
|
|
|
-------------------------------------------
|
|
|
|
Sort
|
|
|
|
Sort Key: i
|
|
|
|
-> Bitmap Heap Scan on test_bool
|
|
|
|
Recheck Cond: (i > true)
|
|
|
|
-> Bitmap Index Scan on idx_bool
|
|
|
|
Index Cond: (i > true)
|
|
|
|
(6 rows)
|
|
|
|
|
2022-11-08 16:36:04 +01:00
|
|
|
-- probably sufficient to check just this one:
|
|
|
|
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i=false ORDER BY i;
|
|
|
|
QUERY PLAN
|
|
|
|
-------------------------------------------
|
|
|
|
Sort
|
|
|
|
Sort Key: i
|
|
|
|
-> Bitmap Heap Scan on test_bool
|
|
|
|
Recheck Cond: (NOT i)
|
|
|
|
-> Bitmap Index Scan on idx_bool
|
|
|
|
Index Cond: (i = false)
|
|
|
|
(6 rows)
|
|
|
|
|