public inbox for [email protected]  
help / color / mirror / Atom feed
From: Tom Lane <[email protected]>
To: Michael Downey <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: PostgreSQL implicitly double-quoting identifier name with umlaut
Date: Fri, 13 Sep 2024 19:20:16 -0400
Message-ID: <[email protected]> (raw)
In-Reply-To: <BY3PR05MB7985A889E17333E35AF6B110DB652@BY3PR05MB7985.namprd05.prod.outlook.com>
References: <BY3PR05MB7985A889E17333E35AF6B110DB652@BY3PR05MB7985.namprd05.prod.outlook.com>

Michael Downey <[email protected]> writes:
> One of our internal users, using our tools, added a column called Örtschaft. We anticipated it would be folded to lower case.
> So we inserted our metadata for the column in our metadata with the name örtschaft. With the system query for metadata, we
> ended up seeing query mismatches involving this column as we found the actual column name is Örtschaft
> in the database.

When working in UTF8 (or any multibyte encoding), PG's identifier
case-folding changes only ASCII letters.  I can't find anything in
our SGML docs about this, at least not where I'd expect it to be
documented.  The code is pretty clear about what it's doing though:

    /*
     * SQL99 specifies Unicode-aware case normalization, which we don't yet
     * have the infrastructure for.  Instead we use tolower() to provide a
     * locale-aware translation.  However, there are some locales where this
     * is not right either (eg, Turkish may do strange things with 'i' and
     * 'I').  Our current compromise is to use tolower() for characters with
     * the high bit set, as long as they aren't part of a multi-byte
     * character, and use an ASCII-only downcasing for 7-bit characters.
     */

These days the claim that no infrastructure is available is obsolete.
But I'm mighty hesitant to touch this behavior, because it'd almost
surely break peoples' apps.  We could do better on the documentation
front though.

			regards, tom lane





reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: PostgreSQL implicitly double-quoting identifier name with umlaut
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox