Fix for text_lt/text_le to avoid warnings if not def USE_LOCALE.
This commit is contained in:
parent
42e72503a1
commit
9f42a56a02
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.13 1997/04/09 08:29:35 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.14 1997/04/21 04:31:53 vadim Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -288,21 +288,19 @@ textne(struct varlena *arg1, struct varlena *arg2)
|
||||
/* text_lt()
|
||||
* Comparison function for text strings.
|
||||
* Includes locale support, but must copy strings to temporary memory
|
||||
* to allow null-termination for inputs to strcoll().
|
||||
* XXX HACK code for textlen() indicates that there can be embedded nulls
|
||||
* but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
|
||||
* to allow null-termination for inputs to strcoll().
|
||||
*/
|
||||
bool
|
||||
text_lt(struct varlena *arg1, struct varlena *arg2)
|
||||
{
|
||||
bool result;
|
||||
|
||||
int cval;
|
||||
int len;
|
||||
#ifdef UNSIGNED_CHAR_TEXT
|
||||
unsigned
|
||||
#endif
|
||||
char *a1p, *a2p;
|
||||
#ifdef USE_LOCALE
|
||||
int cval;
|
||||
#endif
|
||||
|
||||
if (arg1 == NULL || arg2 == NULL)
|
||||
return((bool) FALSE);
|
||||
@ -310,11 +308,9 @@ text_lt(struct varlena *arg1, struct varlena *arg2)
|
||||
len = (((VARSIZE(arg1) <= VARSIZE(arg2))? VARSIZE(arg1): VARSIZE(arg2))-VARHDRSZ);
|
||||
|
||||
#ifdef USE_LOCALE
|
||||
if (!PointerIsValid(a1p = PALLOC(len+1))
|
||||
|| !PointerIsValid(a2p = PALLOC(len+1))) {
|
||||
elog(WARN,"Unable to allocate memory for text comparison",NULL);
|
||||
return(FALSE);
|
||||
};
|
||||
|
||||
a1p = palloc (len+1);
|
||||
a2p = palloc (len+1);
|
||||
|
||||
memcpy(a1p, VARDATA(arg1), len);
|
||||
*(a1p+len) = '\0';
|
||||
@ -322,13 +318,15 @@ text_lt(struct varlena *arg1, struct varlena *arg2)
|
||||
*(a2p+len) = '\0';
|
||||
|
||||
cval = strcoll(a1p,a2p);
|
||||
result = ((cval < 0) || ((cval == 0) && (VARSIZE(arg1) < VARSIZE(arg2))));
|
||||
|
||||
PFREE(a1p);
|
||||
PFREE(a2p);
|
||||
pfree (a1p);
|
||||
pfree (a2p);
|
||||
|
||||
return((bool) ( (cval < 0) ||
|
||||
( (cval == 0) && (VARSIZE(arg1) < VARSIZE(arg2)) ) ) );
|
||||
|
||||
return(result);
|
||||
#else
|
||||
|
||||
a1p = (unsigned char *)VARDATA(arg1);
|
||||
a2p = (unsigned char *)VARDATA(arg2);
|
||||
|
||||
@ -338,27 +336,27 @@ text_lt(struct varlena *arg1, struct varlena *arg2)
|
||||
len--;
|
||||
};
|
||||
return((bool) (len? (*a1p < *a2p): (VARSIZE(arg1) < VARSIZE(arg2))));
|
||||
|
||||
#endif
|
||||
|
||||
} /* text_lt() */
|
||||
|
||||
/* text_le()
|
||||
* Comparison function for text strings.
|
||||
* Includes locale support, but must copy strings to temporary memory
|
||||
* to allow null-termination for inputs to strcoll().
|
||||
* XXX HACK code for textlen() indicates that there can be embedded nulls
|
||||
* but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
|
||||
* to allow null-termination for inputs to strcoll().
|
||||
*/
|
||||
bool
|
||||
text_le(struct varlena *arg1, struct varlena *arg2)
|
||||
{
|
||||
bool result;
|
||||
|
||||
int cval;
|
||||
int len;
|
||||
#ifdef UNSIGNED_CHAR_TEXT
|
||||
unsigned
|
||||
#endif
|
||||
char *a1p, *a2p;
|
||||
#ifdef USE_LOCALE
|
||||
int cval;
|
||||
#endif
|
||||
|
||||
if (arg1 == NULL || arg2 == NULL)
|
||||
return((bool) 0);
|
||||
@ -366,11 +364,9 @@ text_le(struct varlena *arg1, struct varlena *arg2)
|
||||
len = (((VARSIZE(arg1) <= VARSIZE(arg2))? VARSIZE(arg1): VARSIZE(arg2))-VARHDRSZ);
|
||||
|
||||
#ifdef USE_LOCALE
|
||||
if (!PointerIsValid(a1p = PALLOC(len+1))
|
||||
|| !PointerIsValid(a2p = PALLOC(len+1))) {
|
||||
elog(WARN,"Unable to allocate memory for text comparison",NULL);
|
||||
return(FALSE);
|
||||
};
|
||||
|
||||
a1p = palloc (len+1);
|
||||
a2p = palloc (len+1);
|
||||
|
||||
memcpy(a1p, VARDATA(arg1), len);
|
||||
*(a1p+len) = '\0';
|
||||
@ -378,13 +374,15 @@ text_le(struct varlena *arg1, struct varlena *arg2)
|
||||
*(a2p+len) = '\0';
|
||||
|
||||
cval = strcoll(a1p,a2p);
|
||||
result = ((cval < 0) || ((cval == 0) && (VARSIZE(arg1) <= VARSIZE(arg2))));
|
||||
|
||||
PFREE(a1p);
|
||||
PFREE(a2p);
|
||||
pfree (a1p);
|
||||
pfree (a2p);
|
||||
|
||||
return ((bool) ( (cval < 0) ||
|
||||
( (cval == 0) && (VARSIZE(arg1) <= VARSIZE(arg2)) ) ) );
|
||||
|
||||
return(result);
|
||||
#else
|
||||
|
||||
a1p = (unsigned char *)VARDATA(arg1);
|
||||
a2p = (unsigned char *)VARDATA(arg2);
|
||||
|
||||
@ -395,7 +393,9 @@ text_le(struct varlena *arg1, struct varlena *arg2)
|
||||
};
|
||||
|
||||
return((bool) (len? (*a1p <= *a2p): (VARSIZE(arg1) <= VARSIZE(arg2))));
|
||||
|
||||
#endif
|
||||
|
||||
} /* text_le() */
|
||||
|
||||
bool
|
||||
|
Loading…
x
Reference in New Issue
Block a user