Re: Patch to make Turks happy. - Mailing list pgsql-hackers

From Nicolai Tufar
Subject Re: Patch to make Turks happy.
Date
Msg-id 3DEFBEA2.6090404@apb.com.tr
Whole thread Raw
In response to Re: Patch to make Turks happy.  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: [PATCHES] Patch to make Turks happy.
List pgsql-hackers
Bruce Momjian wrote:
> I am not going to apply this patch because I think it will mess up the
> handling of other locales.

As far as I figured from the source code this function only deals with
cleaning up
locale names and nothing else. Since all the locale names are in plain
ASCII I think
it will be safe to use ASCII-only lower-case conversion.

By the way, I noticed only after sending the patch that compiler
complains about
ambiguous `else' so it can be rewritten as:


    if (*p >= 'A' && *p <= 'Z'){

        *np++ = *p + 'a' - 'A';

    }else{

        *np++ = *p;
            }



Regards,
Nicolai


>
>
> ---------------------------------------------------------------------------
>
> Nicolai Tufar wrote:
>
>>Hi,
>>
>>Yet another problem with Turkish encoding. clean_encoding_name()
>>in src/backend/utils/mb/encnames.c uses tolower() to convert locale
>>names to lower-case. This causes errors if locale name contains
>>capital "I" and current olcale is Turkish. Some examples:
>>
>>aaa=# \l
>>      List of databases
>>   Name    | Owner | Encoding
>>-----------+-------+----------
>> aaa       | pgsql | LATIN5
>> bbb       | pgsql | LATIN5
>> template0 | pgsql | LATIN5
>> template1 | pgsql | LATIN5
>>(4 rows)
>>aaa=# CREATE DATABASE ccc ENCODING='LATIN5';
>>ERROR:  LATIN5 is not a valid encoding name
>>aaa=# \encoding
>>SQL_ASCII
>>aaa=# \encoding SQL_ASCII
>>SQL_ASCII: invalid encoding name or conversion procedure not found
>>aaa=# \encoding LATIN5
>>LATIN5: invalid encoding name or conversion procedure not found
>>
>>
>>Patch, is a simple change to use ASCII-only lower-case conversion
>>instead of locale-dependent tolower()
>>
>>Best regards,
>>Nic.
>>
>>
>>
>>
>>
>>
>>*** ./src/backend/utils/mb/encnames.c.orig    Mon Dec  2 15:58:49 2002
>>--- ./src/backend/utils/mb/encnames.c    Mon Dec  2 18:13:23 2002
>>***************
>>*** 407,413 ****
>>      for (p = key, np = newkey; *p != '\0'; p++)
>>      {
>>          if (isalnum((unsigned char) *p))
>>!             *np++ = tolower((unsigned char) *p);
>>      }
>>      *np = '\0';
>>      return newkey;
>>--- 407,416 ----
>>      for (p = key, np = newkey; *p != '\0'; p++)
>>      {
>>          if (isalnum((unsigned char) *p))
>>!             if (*p >= 'A' && *p <= 'Z')
>>!                 *np++ = *p + 'a' - 'A';
>>!             else
>>!                 *np++ = *p;
>>      }
>>      *np = '\0';
>>      return newkey;
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 4: Don't 'kill -9' the postmaster
>>
>
>




pgsql-hackers by date:

Previous
From: Steven Singer
Date:
Subject: Re: dbmirror
Next
From: Bruce Momjian
Date:
Subject: Re: dbmirror