Adjust string comparison so that only bitwise-equal strings are considered
Tom Lane <tgl@sss.pgh.pa.us>
Adjust string comparison so that only bitwise-equal strings are considered equal: if strcoll claims two strings are equal, check it with strcmp, and sort according to strcmp if not identical. This fixes inconsistent behavior under glibc's hu_HU locale, and probably under some other locales as well. Also, take advantage of the now-well-defined behavior to speed up texteq, textne, bpchareq, bpcharne: they may as well just do a bitwise comparison and not bother with strcoll at all. NOTE: affected databases may need to REINDEX indexes on text columns to be sure they are self-consistent.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/hash/hashfunc.c | modified | +4 −4 |
| src/backend/utils/adt/varchar.c | modified | +14 −6 |
| src/backend/utils/adt/varlena.c | modified | +22 −5 |