Re: Optimization for lower(), upper(), casefold() functions. - Mailing list pgsql-hackers

From Jeff Davis
Subject Re: Optimization for lower(), upper(), casefold() functions.
Date
Msg-id d0dd50662da84f582c34247f4ed43061e8d86d34.camel@j-davis.com
Whole thread Raw
Responses Re: Optimization for lower(), upper(), casefold() functions.
List pgsql-hackers
On Tue, 2025-02-11 at 23:08 +0300, Alexander Borisov wrote:
> I tried the approach via a range table. The result was worse than
> without the table. With branching in a function, the result is
> better.
>
> Patch v3 — ranges binary search by branches.
> Patch v4 — ranges binary search by table.

Thoughts on v3:

It looks like the top 5 bits of the offset are unused. What if we used
those bits for flags to indicate:

   HAS_LOWER
   HAS_UPPER
   HAS_FOLD
   HAS_SPECIAL
   HAS_TITLE

That way, we only need to look in the corresponding table if it
actually has an entry other than the codepoint itself.

It doesn't leave a lot of room if the tables get larger, but if we are
worried about that, we could eliminate HAS_TITLE, because I don't think
the performance for INITCAP() is as important as LOWER/UPPER/CASEFOLD.

Regards,
    Jeff Davis




pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Commitfest app release on Feb 17 with many improvements
Next
From: Tom Lane
Date:
Subject: Re: BUG #18815: Logical replication worker Segmentation fault