From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | ntufar(at)pisem(dot)net |
Cc: | pgsql-hackers(at)postgresql(dot)org, devrim(at)tdmsoft(dot)com |
Subject: | Re: 7.4.1 release status - Turkish Locale |
Date: | 2004-02-01 04:23:04 |
Message-ID: | 11795.1075609384@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
"Nicolai Tufar" <ntufar(at)pisem(dot)net> writes:
>> We might think that the Turkish-locale problem Devrim Gunduz pointed out
>> is a must-fix, too. But I'm not convinced yet what to do about it.
> Here is a first try to fix what Devrim Gunduz talked about.
I still don't much like having a locale-specific wart in the parser
(and the code you give could not work anyway --- for starters, the
first argument of setlocale is not a pointer).
A possible compromise is to apply ASCII downcasing (same as in
keywords.c) for 7-bit-ASCII characters, and apply tolower() only
for character codes above 127. In other words
unsigned char ch = (unsigned char) ident[i];
if (ch >= 'A' && ch <= 'Z')
ch += 'a' - 'A';
else if (ch > 127 && isupper(ch))
ch = tolower(ch);
ident[i] = (char) ch;
In reasonably sane locales this will have the same effects as currently,
while in unsane locales it will ensure that basic-ASCII identifiers are
treated the way we want.
Comments?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-02-01 06:31:27 | Re: Make length(char(n)) return 'true' length |
Previous Message | Joe Conway | 2004-02-01 04:07:38 | Re: [HACKERS] v7.4.1 text_position() patch |