mirror of https://github.com/postgres/postgres
Fix bug "select lower('asd') = 'asd'" returns false with multibyte encoding
and non-C locale. Fix is just to use correct source's length for char2wchar call.
This commit is contained in:
parent
13c843d085
commit
5ff9899933
|
@ -1,7 +1,7 @@
|
||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
* formatting.c
|
* formatting.c
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.143 2008/06/23 19:27:19 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.144 2008/06/26 16:06:37 teodor Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1999-2008, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1999-2008, PostgreSQL Global Development Group
|
||||||
|
@ -1454,7 +1454,7 @@ str_tolower(char *buff, size_t nbytes)
|
||||||
/* Output workspace cannot have more codes than input bytes */
|
/* Output workspace cannot have more codes than input bytes */
|
||||||
workspace = (wchar_t *) palloc((nbytes + 1) * sizeof(wchar_t));
|
workspace = (wchar_t *) palloc((nbytes + 1) * sizeof(wchar_t));
|
||||||
|
|
||||||
char2wchar(workspace, nbytes + 1, buff, nbytes + 1);
|
char2wchar(workspace, nbytes + 1, buff, nbytes);
|
||||||
|
|
||||||
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
|
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
|
||||||
workspace[curr_char] = towlower(workspace[curr_char]);
|
workspace[curr_char] = towlower(workspace[curr_char]);
|
||||||
|
@ -1502,7 +1502,7 @@ str_toupper(char *buff, size_t nbytes)
|
||||||
/* Output workspace cannot have more codes than input bytes */
|
/* Output workspace cannot have more codes than input bytes */
|
||||||
workspace = (wchar_t *) palloc((nbytes + 1) * sizeof(wchar_t));
|
workspace = (wchar_t *) palloc((nbytes + 1) * sizeof(wchar_t));
|
||||||
|
|
||||||
char2wchar(workspace, nbytes + 1, buff, nbytes + 1);
|
char2wchar(workspace, nbytes + 1, buff, nbytes);
|
||||||
|
|
||||||
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
|
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
|
||||||
workspace[curr_char] = towupper(workspace[curr_char]);
|
workspace[curr_char] = towupper(workspace[curr_char]);
|
||||||
|
@ -1551,7 +1551,7 @@ str_initcap(char *buff, size_t nbytes)
|
||||||
/* Output workspace cannot have more codes than input bytes */
|
/* Output workspace cannot have more codes than input bytes */
|
||||||
workspace = (wchar_t *) palloc((nbytes + 1) * sizeof(wchar_t));
|
workspace = (wchar_t *) palloc((nbytes + 1) * sizeof(wchar_t));
|
||||||
|
|
||||||
char2wchar(workspace, nbytes + 1, buff, nbytes + 1);
|
char2wchar(workspace, nbytes + 1, buff, nbytes);
|
||||||
|
|
||||||
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
|
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue