mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
Fixes:
The comparison routines for text and char data type give incorrect results if the input data contains characters greater than 127. As these routines perform the comparison using signed char variables all character codes greater than 127 are interpreted as less than 0. These codes are used to encode the iso8859 char sets. The other text-like data types seem to work as expected as they use unsigned chars in comparisons. Submitted by: Massimo Dal Zotto <dz@cs.unitn.it>
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.4 1996/07/22 21:56:04 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.5 1996/09/10 06:41:38 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -290,6 +290,9 @@ int32
|
||||
text_lt(struct varlena *arg1, struct varlena *arg2)
|
||||
{
|
||||
int len;
|
||||
#ifdef UNSIGNED_CHAR_TEXT
|
||||
unsigned
|
||||
#endif
|
||||
char *a1p, *a2p;
|
||||
|
||||
if (arg1 == NULL || arg2 == NULL)
|
||||
@ -318,6 +321,9 @@ int32
|
||||
text_le(struct varlena *arg1, struct varlena *arg2)
|
||||
{
|
||||
int len;
|
||||
#ifdef UNSIGNED_CHAR_TEXT
|
||||
unsigned
|
||||
#endif
|
||||
char *a1p, *a2p;
|
||||
|
||||
if (arg1 == NULL || arg2 == NULL)
|
||||
|
Reference in New Issue
Block a user