Re: Add CASEFOLD() function.

Vik Fearing <vik@postgresfriends.org>

From: Vik Fearing <vik@postgresfriends.org>
To: Jeff Davis <pgsql@j-davis.com>, Joe Conway <mail@joeconway.com>, Ian Lawrence Barwick <barwick@gmail.com>
Cc: pgsql-hackers@postgresql.org, Peter Eisentraut <peter@eisentraut.org>
Date: 2025-06-17T15:37:37Z
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 →
  1. Fix PDF doc build.

  2. Add SQL function CASEFOLD().

  3. Add support for Unicode case folding.

On 16/12/2024 18:49, Jeff Davis wrote:
> One question I have is whether we want this function to normalize the
> output.


Yes, we do.


I am sorry that I am so late to the party, but I am currently writing 
the Change Proposal for the SQL Standard for this function.


For <fold> (which includes LOWER() and UPPER()), the text says in 
Section 6.35 GR 7.e:


If the character set of <character factor> is UTF8, UTF16, or UTF32, 
then FR is replaced by
     Case:
         i) If the <search condition> S IS NORMALIZED evaluates to True, 
then NORMALIZE (FR)
         ii) Otherwise, FR.


Here, FR is the result of the function and S is its argument.


It does not appear to me that our LOWER and UPPER functions obey this 
rule, so there is a valid argument that we should continue to ignore it. 
Or, we can say that we have at least one of three compliant.

-- 

Vik Fearing