Fix failure of btree_gin indexscans with "char" type and </<= operators.
authorTom Lane <[email protected]>
Tue, 10 Aug 2021 22:10:30 +0000 (18:10 -0400)
committerTom Lane <[email protected]>
Tue, 10 Aug 2021 22:10:30 +0000 (18:10 -0400)
commit843d2879aaefd870c978107e4c69b6681db49ca3
tree65f10f3f27f8950eb72a0c6e36fdc7ca691066ac
parent29abec3a62229a37ce21203acdeb03a7860c1102
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[email protected]
contrib/btree_gin/btree_gin.c
contrib/btree_gin/expected/char.out