Use CASEFOLD() internally rather than LOWER()
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: pgsql-hackers@postgresql.org
Date: 2026-01-12T18:22:20Z
Lists: pgsql-hackers
Attachments
- v1-0001-ILIKE-use-CASEFOLD-rather-than-LOWER.patch (text/x-patch) patch v1-0001
- v1-0002-citext-use-CASEFOLD-rather-than-LOWER.patch (text/x-patch) patch v1-0002
- v1-0003-dict_xsyn-use-CASEFOLD-rather-than-LOWER.patch (text/x-patch) patch v1-0003
- v1-0004-tsearch-use-CASEFOLD-rather-than-LOWER.patch (text/x-patch) patch v1-0004
There are a number of internal callers of LOWER(), and conceptually
those should all be using CASEFOLD(). Patches attached.
I'm not sure if we want the citext patch -- it would require REINDEX of
all existing citext indexes after upgrade, and there's already a
documented tip ("Consider using nondeterministic collations...), so
perhaps it's a legacy extension anyway.
It would be nice to make the tsearch change this release, as there are
already changes that could require a reindex.
I didn't change pg_trgm yet, because I think that we have to change the
regex machinery to be aware of more than two case variants first (and
potentially increasing string lengths, too).
Regards,
Jeff Davis