BUG #19004: Incorrect lowercasing of word-final Greek capital Sigma (Σ)

Started by PG Bug reporting form9 months ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 19004
Logged by: Bosheng Peng
Email address: 221250180@smail.nju.edu.cn
PostgreSQL version: 17.5
Operating system: windows with docker
Description:

When applying UPPER() to the Greek word 'κόσμος', PostgreSQL returns
'ΚΌΣΜΟΣ'. However, applying LOWER() to that result returns 'κόσμοσ' instead
of the original 'κόσμος'.

According to wikipedia (https://en.wikipedia.org/wiki/Sigma), there are two
forms of lowercase for Greek capital Sigma (Σ):
- If Σ is at the end of a word, it should lowercase to ς
- If Σ is in the middle of a word, it should lowercase to σ

How to repeat:
```sql
SELECT LOWER(UPPER('κόσμος'));
-- Expected: 'κόσμος'
-- Actual: 'κόσμοσ'
```

#2John Naylor
john.naylor@enterprisedb.com
In reply to: PG Bug reporting form (#1)
Re: BUG #19004: Incorrect lowercasing of word-final Greek capital Sigma (Σ)

On Thu, Jul 31, 2025 at 1:50 PM PG Bug reporting form
<noreply@postgresql.org> wrote:

When applying UPPER() to the Greek word 'κόσμος', PostgreSQL returns
'ΚΌΣΜΟΣ'. However, applying LOWER() to that result returns 'κόσμοσ' instead
of the original 'κόσμος'.

Hi,

For built-in collations, context-sensitive case mappings are a
forthcoming feature which will be available in PG18 later this year,
with the pg_unicode_fast collation:

CREATE TABLE example (
a text COLLATE PG_UNICODE_FAST,
b text COLLATE PG_C_UTF8
);

INSERT INTO example VALUES ('κόσμος', 'κόσμος');

SELECT LOWER(UPPER(a)), LOWER(UPPER(b)) FROM example;
lower | lower
--------+--------
κόσμος | κόσμοσ
(1 row)

--
John Naylor
Amazon Web Services