postgresql/contrib/btree_gin/expected/char.out
Tom Lane a6bd28beb0 Fix failure of btree_gin indexscans with "char" type and </<= operators.
As a result of confusion about whether the "char" type is signed or
unsigned, scans for index searches like "col < 'x'" or "col <= 'x'"
would start at the middle of the index not the left end, thus missing
many or all of the entries they should find.  Fortunately, this
is not a symptom of index corruption.  It's only the search logic
that is broken, and we can fix it without unpleasant side-effects.

Per report from Jason Kim.  This has been wrong since btree_gin's
beginning, so back-patch to all supported branches.

Discussion: https://postgr.es/m/20210810001649.htnltbh7c63re42p@jasonk.me
2021-08-10 18:10:29 -04:00

45 lines
588 B
Plaintext

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;
i
---
a
b
c
(3 rows)
SELECT * FROM test_char WHERE i<='d'::"char" ORDER BY i;
i
---
a
b
c
d
(4 rows)
SELECT * FROM test_char WHERE i='d'::"char" ORDER BY i;
i
---
d
(1 row)
SELECT * FROM test_char WHERE i>='d'::"char" ORDER BY i;
i
---
d
e
f
(3 rows)
SELECT * FROM test_char WHERE i>'d'::"char" ORDER BY i;
i
---
e
f
(2 rows)