Обсуждение: BUG #15919: When sorting, does the result show that S > s is correct?

Поиск
Список
Период
Сортировка

BUG #15919: When sorting, does the result show that S > s is correct?

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      15919
Logged by:          强 魏
Email address:      1726002692@qq.com
PostgreSQL version: 11.4
Operating system:   CentOS Linux release 7.6.1810 (Core)
Description:

postgres@[local]:5433[postgres]#select * from t order by info desc;
+------+
| info |
+------+
| S    |
| s    |
+------+
(2 rows)

Time: 0.718 ms
postgres@[local]:5433[postgres]#select * from t order by info asc;
+------+
| info |
+------+
| s    |
| S    |
+------+
(2 rows)

Time: 0.789 ms
postgres@[local]:5433[postgres]#select ascii('s') AS "s",ascii('S') AS
"S";
+-----+----+
|  s  | S  |
+-----+----+
| 115 | 83 |
+-----+----+
(1 row)

Time: 0.381 ms
postgres@[local]:5433[postgres]#show lc_collate 
postgres-# ;
+-------------+
| lc_collate  |
+-------------+
| en_US.UTF-8 |
+-------------+
(1 row)

Time: 0.407 ms


Re: BUG #15919: When sorting, does the result show that S > s is correct?

От
Tom Lane
Дата:
PG Bug reporting form <noreply@postgresql.org> writes:
> postgres@[local]:5433[postgres]#select * from t order by info asc;
> +------+
> | info |
> +------+
> | s    |
> | S    |
> +------+
> (2 rows)

This is the expected behavior for en_US locale, as you can easily
confirm outside of Postgres:

$ (echo s; echo S) | LANG=en_US sort
s
S

Perhaps you are confusing it with C locale?

$ (echo s; echo S) | LANG=C sort
S
s

            regards, tom lane