The expected output in contrib/btree_gin/expected/char.out is wrong for the
first two SELECTs using the BTLess* strategies: they should not be empty.
set enable_seqscan=off;
CREATE TABLE test_char (
i "char"
);
INSERT INTO test_char VALUES ('a'),('b'),('c'),('d'),('e'),('f');
CREATE INDEX idx_char ON test_char USING gin (i);
SELECT * FROM test_char WHERE i<'d'::"char" ORDER BY i;
SELECT * FROM test_char WHERE i<='d'::"char" ORDER BY i;
gives
i
---
(0 rows)
i
---
(0 rows)
If Bitmap Scan is turned off, we get output, as expected:
set enable_bitmapscan=off;
SELECT * FROM test_char WHERE i<'d'::"char" ORDER BY i;
SELECT * FROM test_char WHERE i<='d'::"char" ORDER BY i;
gives
i
---
a
b
c
(3 rows)
i
---
a
b
c
d
(4 rows)
I tried the following and got the same results:
- Do the inserts after the CREATE INDEX.
- Create the index with fastupdate turned off: CREATE INDEX ... WITH
(fastupdate = off).
- Reconnect (and don't forget to disable sequential scan).
- Stop and start the server: pg_ctl restart.
I'm on 15devel, but this issue appears to have been around for years.