On 25.10.23 20:32, Jeff Davis wrote:
But what should the result of UPPER('á' COLLATE UCS_BASIC) be? In Postgres, the answer is 'á', but intuitively, one could reasonably expect the answer to be 'Á'.
I think that's right. But what would you put into ctype to make that happen?
That seems to suggest the standard answer should be 'Á' regardless of any COLLATE clause (though I could be misreading). I'm a bit confused by that... what's the standard-compatible way to specify the locale for UPPER()/LOWER()? If there is none, then it makes sense that Postgres overloads the COLLATE clause for that purpose so that users can use a different locale if they want.
The standard doesn't have the notion of locale-dependent case conversion.