Thread: BUG #2293: primary key and cyrillic

BUG #2293: primary key and cyrillic

From
"Sergey Rosenfeld"
Date:
The following bug has been logged online:

Bug reference:      2293
Logged by:          Sergey Rosenfeld
Email address:      serg@ung.ru
PostgreSQL version: 8.1.3
Operating system:   Debian GNU/Linux (sid)
Description:        primary key and cyrillic
Details:

postgres:~$ /usr/lib/postgresql/8.1/bin/pg_controldata
/var/lib/postgresql/8.1/main
<...skipped cyrillic koi8-r output ...>
LC_COLLATE:                           ru_RU.koi8r
LC_CTYPE:                             ru_RU.koi8r

postmaster works in same locale environment

postgres:~$ psql
Welcome to psql 8.1.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# select version();
                                                   version
----------------------------------------------------------------------------
----------------------------------
 PostgreSQL 8.1.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.0.3
20060212 (prerelease) (Debian 4.0.2-9)
(1 запись)

postgres=# show server_encoding;
 server_encoding
-----------------
 KOI8
(1 запись)

postgres=# show client_encoding;
 client_encoding
-----------------
 KOI8
(1 запись)
postgres=# create table test( s varchar(20) primary key );
NOTICE:  CREATE TABLE / PRIMARY KEY создаст
подразумеваемый индекс "test_pkey" для
таблицы "test"
CREATE TABLE
postgres=# \d test
             Таблица "public.test"
 Колонка |          Тип          | Модификаторы
---------+-----------------------+--------------
 s       | character varying(20) | not null
Индексы:
    "test_pkey" PRIMARY KEY, btree (s)

postgres=# insert into test values( 'фыва фыва' );
INSERT 0 1
postgres=# insert into test values( 'фыва фыва' );
INSERT 0 1
postgres=# select * from test;
     s
-----------
 фыва фыва
 фыва фыва
(записей: 2)

What about PRIMARY KEY? If i use ascii symbols, all works fine:

postgres=# insert into test values( 'asdf asdf' );
INSERT 0 1
postgres=# insert into test values( 'asdf asdf' );
ERROR:  повторный ключ нарушает констрейнт
UNIQUE "test_pkey"