OK, patch applied.  Peter, should this appear in 7.3.1 too?

---------------------------------------------------------------------------

Peter Eisentraut wrote:
> Bruce Momjian writes:
> 
> > I am not going to apply this patch because I think it will mess up the
> > handling of other locales.
> 
> This patch looks OK to me.  Normally, character set names should use
> identifier case-folding rules anyway, so seems to be a step in the right
> direction.  Much better than saying that users of certain locales can't
> properly use PostgreSQL.
> 
> >
> >
> > ---------------------------------------------------------------------------
> >
> > 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
> > >
> >
> >
> 
> -- 
> Peter Eisentraut   [EMAIL PROTECTED]
> 
> 
> 
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/utils/mb/encnames.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/utils/mb/encnames.c,v
retrieving revision 1.10
diff -c -c -r1.10 encnames.c
*** src/backend/utils/mb/encnames.c     4 Sep 2002 20:31:31 -0000       1.10
--- src/backend/utils/mb/encnames.c     5 Dec 2002 23:19:40 -0000
***************
*** 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,418 ----
        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 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to