diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2021-08-10 18:10:30 -0400 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2021-08-10 18:10:30 -0400 |
| commit | cd7d9b6b63f1ed1d60cab3888eb0fc2523de6f0e (patch) | |
| tree | 0414b501689f9a1c97da212f976e3cfc25f155d4 /contrib/btree_gin/btree_gin.c | |
| parent | de835071fda945fb5e40340d3ea8dd2ca13e725c (diff) | |
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
Diffstat (limited to 'contrib/btree_gin/btree_gin.c')
| -rw-r--r-- | contrib/btree_gin/btree_gin.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/btree_gin/btree_gin.c b/contrib/btree_gin/btree_gin.c index 2ecf7a2d87c..c7b217288f2 100644 --- a/contrib/btree_gin/btree_gin.c +++ b/contrib/btree_gin/btree_gin.c @@ -358,7 +358,7 @@ GIN_SUPPORT(bpchar, true, leftmostvalue_text, bpcharcmp) static Datum leftmostvalue_char(void) { - return CharGetDatum(SCHAR_MIN); + return CharGetDatum(0); } GIN_SUPPORT(char, false, leftmostvalue_char, btcharcmp) |
