Thread

  1. LATIN2 and wrong upper() and lower() functions output

    Robert Gaszewski <graszew@poland.com> — 2001-03-29T21:04:30Z

    I have PostgreSQL 7.1RC1 with multibyte support and encoding 
    set to LATIN2.
    
    When I try SELECT UPPER('some_text_with_polish_national_chars');
    polish chars are still in lower case but others (abcd...wxyz) are
    in upper case.
    
    
    For example:
    
    (Client encoding is LATIN2)
    
    input:
    SELECT UPPER('łąka');  --'ł' and 'ą' are polish national chars
    
    output:
    
     upper
    -------
     łąKA
    
    
    but it should be:
    
     upper
    -------
     ŁĄKA
    
    
    
    Also, ORDER BY works improperly.
    
    for example:
    
    input:
    CREATE TABLE test ( name varchar(20) );
    
    INSERT INTO test VALUES('ad');
    INSERT INTO test VALUES('aa');
    INSERT INTO test VALUES('ac');
    INSERT INTO test VALUES('ab');
    INSERT INTO test VALUES('ać'); --'ć' is another polish national char
    INSERT INTO test VALUES('ae');
    
    SELECT * FROM test ORDER BY name;
    
    output:
    
     name
    ------
     aa
     ab
     ac
     ad
     ae
     ać
    
    
    but output should be:
    
     name
    ------
     aa
     ab
     ac
     ać 
     ad
     ae
    
    
    PS.
    I compiled PostgreSQL with --enable-multibyte and
    --enable-unicode-conversion.
    
    initdb -E UNICODE -D /usr/local/pgsql/data
    createdb pl_test -E LATIN2
    
    
    
    Info about my configuration
    ---------------------------
    
    PostgreSQL version:
      7.1RC1 compiled by gcc 2.95.2
    
    Platform:
      Debian GNU/Linux 2.2 Potato on Intel Celeron 366 MHz with 128 MB RAM
    
    Kernel
      2.2.19
    
    C library
      2.1
    
    
    
    Greetings,
    Robert
    
    
    ------------------
    Robert Gaszewski
    graszew@poland.com
    
    
    
  2. Re: LATIN2 and wrong upper() and lower() functions output

    Peter Eisentraut <peter_e@gmx.net> — 2001-03-30T15:06:59Z

    Robert Gaszewski writes:
    
    > When I try SELECT UPPER('some_text_with_polish_national_chars');
    > polish chars are still in lower case but others (abcd...wxyz) are
    > in upper case.
    
    > I compiled PostgreSQL with --enable-multibyte and
    > --enable-unicode-conversion.
    
    Case conversion and ordering are controlled by *locale*, not multibyte.
    You need to configure with --enable-locale and set the appropriate LC_*
    variables.
    
    http://www.postgresql.org/devel-corner/docs/postgres/charset.html#LOCALE
    
    -- 
    Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/