Avoid collation lookup failure when considering a "char" column.
Tom Lane <tgl@sss.pgh.pa.us>
Avoid collation lookup failure when considering a "char" column. If a "char" column has a statistics histogram, scalarineqsel() would fail with "cache lookup failed for collation 0". Avoid the failing lookup by acting as though the collation is "C". Prior to commit 06421b084, this code didn't fail because lc_collate_is_c() intentionally didn't spit up on InvalidOid. It did act differently though: it would take the non-C-collation code path and hence apply strxfrm using libc's prevailing locale. But that seems like the wrong thing for a non-collatable comparison, so let's not resurrect that aspect. Author: Feng Wu <wufengwufengwufeng@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/CACK3muq6s-O1Wc3w4dRL1Fe8YQ-Fz1zJbezeQwhuLgNxGNEFiA@mail.gmail.com Backpatch-through: 18
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/selfuncs.c | modified | +8 −0 |
| src/test/regress/expected/planner_est.out | modified | +11 −0 |
| src/test/regress/sql/planner_est.sql | modified | +6 −0 |
Discussion
- [PATCH] Avoid collation lookup for "char" statistics 6 messages · 2026-06-27 → 2026-06-28