Re: Initcap works differently with different locale providers

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Jeff Davis <pgsql@j-davis.com>, Oleg Tselebrovskiy <o.tselebrovskiy@postgrespro.ru>
Cc: Alexander Korotkov <aekorotkov@gmail.com>, pgsql-docs@lists.postgresql.org
Date: 2025-08-06T11:44:25Z
Lists: pgsql-docs
On 04.08.25 22:59, Jeff Davis wrote:
> On Mon, 2025-08-04 at 12:30 +0700, Oleg Tselebrovskiy wrote:
>> First patch just adds this warning about not relying on initcap()
>> exact
>> result. The second one is the same, but removes the part "what is a
>> word"
>> since it's could be moot because we recommend writing custom
>> functions,
>> so understanding what is a word is not exactly needed. Still on the
>> fence
>> about which patch is better, though
> 
> One more thing: we should also change it to "... to  upper case (or
> title case) and the rest to lower case...". Title case is for scripts
> that have characters like 'Dž' (U+01C5).
> 
> Other than that I like the second version, which un-documents the
> specific word boundary rules. I'll admit I'm not quite sure how people
> use this function in practice, but I expect that it's mostly convenient
> (or lazy) display.

It's meant to be an Oracle-compatible function, so maybe someone can 
check there for some details.

https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/INITCAP.html

I think we should try to document the behavior more precisely.  But we 
probably first have to agree what it should be.

> Alexander, is there a reason you backported this change? I don't
> normally backport doc improvements like this, but I'm not sure what
> standard others use. The fact that it's on 7 branches makes me more
> reluctant to commit these extra improvements on top. Can you take care
> of these follow-up patches? Or, just revert the change and I can make
> the improvements in master.

Yes, I was not in favor of backpatching this, since it was not a bug 
fix.  And it turns out it was incomplete.  I think we should revert all 
the backpatches and iterate on getting the documentation the way we want 
in master.




Commits

  1. Further clarify documentation for the initcap function

  2. Revert "Clarify documentation for the initcap function"

  3. Clarify documentation for the initcap function