1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-18 17:42:25 +03:00

Cleanup of varchar.

This commit is contained in:
Bruce Momjian
1998-01-08 06:18:18 +00:00
parent 84ef6aae18
commit 8f125413b0

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.22 1998/01/08 04:58:19 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.23 1998/01/08 06:18:18 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -327,29 +327,13 @@ bpcharcmp(char *arg1, char *arg2)
* Comparison Functions used for varchar * Comparison Functions used for varchar
*****************************************************************************/ *****************************************************************************/
static int
vcTruelen(char *arg)
{
char *s = VARDATA(arg);
int i;
int len;
len = VARSIZE(arg) - VARHDRSZ;
for (i = 0; i < len; i++)
{
if (*s++ == '\0')
break;
}
return i;
}
int32 int32
varcharlen(char *arg) varcharlen(char *arg)
{ {
if (!PointerIsValid(arg)) if (!PointerIsValid(arg))
elog(ERROR, "Bad (null) varchar() external representation", NULL); elog(ERROR, "Bad (null) varchar() external representation", NULL);
return(vcTruelen(arg)); return(VARSIZE(arg) - VARHDRSZ);
} }
bool bool
@ -360,8 +344,9 @@ varchareq(char *arg1, char *arg2)
if (arg1 == NULL || arg2 == NULL) if (arg1 == NULL || arg2 == NULL)
return ((bool) 0); return ((bool) 0);
len1 = vcTruelen(arg1);
len2 = vcTruelen(arg2); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = VARSIZE(arg2) - VARHDRSZ;
if (len1 != len2) if (len1 != len2)
return 0; return 0;
@ -377,8 +362,8 @@ varcharne(char *arg1, char *arg2)
if (arg1 == NULL || arg2 == NULL) if (arg1 == NULL || arg2 == NULL)
return ((bool) 0); return ((bool) 0);
len1 = vcTruelen(arg1); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = vcTruelen(arg2); len2 = VARSIZE(arg2) - VARHDRSZ;
if (len1 != len2) if (len1 != len2)
return 1; return 1;
@ -395,8 +380,8 @@ varcharlt(char *arg1, char *arg2)
if (arg1 == NULL || arg2 == NULL) if (arg1 == NULL || arg2 == NULL)
return ((bool) 0); return ((bool) 0);
len1 = vcTruelen(arg1); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = vcTruelen(arg2); len2 = VARSIZE(arg2) - VARHDRSZ;
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2)); cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
if (cmp == 0) if (cmp == 0)
@ -414,8 +399,8 @@ varcharle(char *arg1, char *arg2)
if (arg1 == NULL || arg2 == NULL) if (arg1 == NULL || arg2 == NULL)
return ((bool) 0); return ((bool) 0);
len1 = vcTruelen(arg1); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = vcTruelen(arg2); len2 = VARSIZE(arg2) - VARHDRSZ;
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2)); cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
if (0 == cmp) if (0 == cmp)
@ -433,8 +418,8 @@ varchargt(char *arg1, char *arg2)
if (arg1 == NULL || arg2 == NULL) if (arg1 == NULL || arg2 == NULL)
return ((bool) 0); return ((bool) 0);
len1 = vcTruelen(arg1); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = vcTruelen(arg2); len2 = VARSIZE(arg2) - VARHDRSZ;
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2)); cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
if (cmp == 0) if (cmp == 0)
@ -452,8 +437,8 @@ varcharge(char *arg1, char *arg2)
if (arg1 == NULL || arg2 == NULL) if (arg1 == NULL || arg2 == NULL)
return ((bool) 0); return ((bool) 0);
len1 = vcTruelen(arg1); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = vcTruelen(arg2); len2 = VARSIZE(arg2) - VARHDRSZ;
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2)); cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
if (0 == cmp) if (0 == cmp)
@ -470,8 +455,8 @@ varcharcmp(char *arg1, char *arg2)
len2; len2;
int cmp; int cmp;
len1 = vcTruelen(arg1); len1 = VARSIZE(arg1) - VARHDRSZ;
len2 = vcTruelen(arg2); len2 = VARSIZE(arg2) - VARHDRSZ;
cmp = (strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2))); cmp = (strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2)));
if ((0 == cmp) && (len1 != len2)) if ((0 == cmp) && (len1 != len2))
return (int32) (len1 < len2 ? -1 : 1); return (int32) (len1 < len2 ? -1 : 1);
@ -536,7 +521,7 @@ hashvarchar(struct varlena * key)
int loop; int loop;
keydata = VARDATA(key); keydata = VARDATA(key);
keylen = vcTruelen((char *) key); keylen = VARSIZE(key) - VARHDRSZ;
#define HASHC n = *keydata++ + 65599 * n #define HASHC n = *keydata++ + 65599 * n