Re: PostgreSQL 9.0.3 - collate/ctype order by hu_HU.UTF8 is not correct sorting

From: Adam PAPAI <adam(dot)papai(at)bsdsupportservice(dot)hu>
To: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: PostgreSQL 9.0.3 - collate/ctype order by hu_HU.UTF8 is not correct sorting
Date: 2011-02-05 22:04:26
Message-ID: 4D4DC96A.4040705@bsdsupportservice.hu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Pavel Stehule wrote:
> Hello
>
> You should to initialize database with correct locale. You can't to
> change locale after database is created.
>
> /usr/local/pgsql91/bin/createdb test --locale=cs_CZ.utf-8 -e UTF-8
> CREATE DATABASE test LC_COLLATE 'cs_CZ.utf-8' LC_CTYPE 'cs_CZ.utf-8';
> COMMENT ON DATABASE test IS 'UTF-8';
>
> test=# show lc_collate ;
> lc_collate
> -------------
> cs_CZ.utf-8
> (1 row)
>
> test=# select * from (values('Sís'),('Šiška'),('Syrový'),('Vondra')) x
> ORDER BY 1;
> column1
> ---------
> Sís
> Syrový
> Šiška
> Vondra
> (4 rows)
>
> Regards
>
> Pavel Stehule
>

Something is not correct for me.

I've re-initialised it again with:

--locale=hu_HU.UTF-8 --encoding=UTF-8

which generated everything LC_* to hu_HU.UTF-8.

I've created the DBs with createdb:

createdb -U pgsql "$DBNAME" -E "UTF-8" --locale="hu_HU.UTF-8"

Example:

createdb -U pgsql spiritnet -E UTF-8 --locale=hu_HU.UTF-8

spiritnet=# show lc_collate;
lc_collate
-------------
hu_HU.UTF-8
(1 row)

spiritnet=# show lc_ctype;
lc_ctype
-------------
hu_HU.UTF-8

Name | Owner | Encoding | Collation | Ctype
-----------------------+-------+-----------+-------------+-------------
spiritnet | pgsql | UTF8 | hu_HU.UTF-8 | hu_HU.UTF-8

And it STILL NOT working, the order by is absolutly incorrect. All chars
with accents, are located at the END of the list. Is it a problem only
with 9.0.3?

For me, your test shows:

"Syrový"
"Sís"
"Vondra"
"Šiška"

instead your correct order.

Any ideas?

Further information:

[root(at)radon /usr/local/pgsql]# pg_config
BINDIR = /usr/local/bin
DOCDIR = /usr/local/share/doc/postgresql
HTMLDIR = /usr/local/share/doc/postgresql
INCLUDEDIR = /usr/local/include
PKGINCLUDEDIR = /usr/local/include/postgresql
INCLUDEDIR-SERVER = /usr/local/include/postgresql/server
LIBDIR = /usr/local/lib
PKGLIBDIR = /usr/local/lib/postgresql
LOCALEDIR = /usr/local/share/locale
MANDIR = /usr/local/man
SHAREDIR = /usr/local/share/postgresql
SYSCONFDIR = /usr/local/etc/postgresql
PGXS = /usr/local/lib/postgresql/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--with-libraries=/usr/local/lib'
'--with-includes=/usr/local/include' '--enable-thread-safety'
'--with-openssl' '--with-libxml' '--enable-nls' '--with-gssapi'
'--prefix=/usr/local' '--mandir=/usr/local/man'
'--infodir=/usr/local/info/' '--build=amd64-portbld-freebsd8.1'
'build_alias=amd64-portbld-freebsd8.1' 'CC=cc' 'CFLAGS=-O2 -pipe -O3
-funroll-loops -fno-strict-aliasing' 'LDFLAGS= -L/usr/local/lib
-rpath=/usr/lib:/usr/local/lib' 'CPP=cpp'
CC = cc
CPPFLAGS = -I/usr/local/include/libxml2 -I/usr/local/include
-I/usr/local/include -I/usr/local/include
CFLAGS = -O2 -pipe -O3 -funroll-loops -fno-strict-aliasing -Wall
-Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
-Wendif-labels -fno-strict-aliasing -fwrapv
CFLAGS_SL = -fPIC -DPIC
LDFLAGS = -L/usr/local/lib -rpath=/usr/lib:/usr/local/lib
-L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -Wl,--as-needed
-Wl,-R'/usr/local/lib'
LDFLAGS_EX =
LDFLAGS_SL =
LIBS = -lpgport -lintl -lxml2 -lssl -lcrypto -lgssapi_krb5 -lz
-lreadline -lcrypt -lm
VERSION = PostgreSQL 9.0.3

[root(at)radon /usr/local/pgsql]# pg_controldata /usr/local/pgsql/data
pg_control version number: 903
Catalog version number: 201008051
Database system identifier: 5570316617043000695
Database cluster state: in production
pg_control last modified: Sat Feb 5 22:58:43 2011
Latest checkpoint location: 0/9008D748
Prior checkpoint location: 0/8FF99F68
Latest checkpoint's REDO location: 0/9005FEB0
Latest checkpoint's TimeLineID: 1
Latest checkpoint's NextXID: 0/16405
Latest checkpoint's NextOID: 57344
Latest checkpoint's NextMultiXactId: 1
Latest checkpoint's NextMultiOffset: 0
Latest checkpoint's oldestXID: 654
Latest checkpoint's oldestXID's DB: 1
Latest checkpoint's oldestActiveXID: 0
Time of latest checkpoint: Sat Feb 5 22:58:33 2011
Minimum recovery ending location: 0/0
Backup start location: 0/0
Current wal_level setting: minimal
Current max_connections setting: 40
Current max_prepared_xacts setting: 0
Current max_locks_per_xact setting: 64
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 8192
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Maximum size of a TOAST chunk: 1996
Date/time type storage: 64-bit integers
Float4 argument passing: by value
Float8 argument passing: by value

--
Adam PAPAI
BSD Support Service
http://www.bsdsupportservice.hu
E-mail: adam(dot)papai(at)bsdsupportservice(dot)hu
Phone: +36 30 33-55-735 (Hungary)

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2011-02-05 22:23:50 Re: PostgreSQL 9.0.3 - collate/ctype order by hu_HU.UTF8 is not correct sorting
Previous Message Andre Lopes 2011-02-05 19:58:07 Database Design - Which design should I use? Two options.