Re: Add CASEFOLD() function.
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: Joe Conway <mail@joeconway.com>, Ian Lawrence Barwick <barwick@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2024-12-16T17:49:22Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix PDF doc build.
- d2ca16bb509c 18.0 landed
-
Add SQL function CASEFOLD().
- bfc5992069cf 18.0 landed
-
Add support for Unicode case folding.
- 4e7f62bc386a 18.0 landed
Attachments
- v2-0001-Add-support-for-Unicode-case-folding.patch (text/x-patch) patch v2-0001
- v2-0002-Add-SQL-function-CASEFOLD.patch (text/x-patch) patch v2-0002
On Thu, 2024-12-12 at 13:55 -0500, Joe Conway wrote:
> > I don't have a strong opinion here so I will just go with whatever
> > seems like the popular choice.
>
>
> FWIW I prefer casefold()
Done. I just noticed that it now matches $SUBJECT. The fact that my
code didn't match the email subject before further supports the idea
that "foldcase" was never quite as natural -- so I agree that
"casefold" is the way to go.
One question I have is whether we want this function to normalize the
output.
I believe most usecases would want the output normalized, because
normalization differences (e.g. "a" U+0061 followed by "combining
acute" U+0301 vs "a with acute" U+00E1) are more minor than differences
in case.
Of course, a user could wrap it with the normalize() function, but
that's verbose and easy to forget. I'm also not sure that it can be
made as fast as a combined function that does both.
And a follow-up question: if it does normalize, the second parameter
would be the requested normal form. But to accept the keyword forms
(NFC, NFD in gram.y) rather than the string forms ('NFC', 'NFD') then
we'd need to also need to add CASEFOLD to gram.y (like NORMALIZE). Is
that a reasonable thing to do?
Regards,
Jeff Davis