aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/like.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/like.c')
-rw-r--r--src/backend/utils/adt/like.c61
1 files changed, 28 insertions, 33 deletions
diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c
index 9289416ca46..1e84474c2ae 100644
--- a/src/backend/utils/adt/like.c
+++ b/src/backend/utils/adt/like.c
@@ -11,7 +11,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/like.c,v 1.60 2005/05/25 22:59:33 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/like.c,v 1.61 2005/09/24 17:53:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -28,18 +28,13 @@
#define LIKE_ABORT (-1)
-static int MatchText(unsigned char *t, int tlen,
- unsigned char *p, int plen);
-static int MatchTextIC(unsigned char *t, int tlen,
- unsigned char *p, int plen);
-static int MatchBytea(unsigned char *t, int tlen,
- unsigned char *p, int plen);
+static int MatchText(char *t, int tlen, char *p, int plen);
+static int MatchTextIC(char *t, int tlen, char *p, int plen);
+static int MatchBytea(char *t, int tlen, char *p, int plen);
static text *do_like_escape(text *, text *);
-static int MBMatchText(unsigned char *t, int tlen,
- unsigned char *p, int plen);
-static int MBMatchTextIC(unsigned char *t, int tlen,
- unsigned char *p, int plen);
+static int MBMatchText(char *t, int tlen, char *p, int plen);
+static int MBMatchTextIC(char *t, int tlen, char *p, int plen);
static text *MB_do_like_escape(text *, text *);
/*--------------------
@@ -48,7 +43,7 @@ static text *MB_do_like_escape(text *, text *);
*--------------------
*/
static int
-wchareq(unsigned char *p1, unsigned char *p2)
+wchareq(char *p1, char *p2)
{
int p1_len;
@@ -78,9 +73,9 @@ wchareq(unsigned char *p1, unsigned char *p2)
#define CHARMAX 0x80
static int
-iwchareq(unsigned char *p1, unsigned char *p2)
+iwchareq(char *p1, char *p2)
{
- int c1[2],
+ pg_wchar c1[2],
c2[2];
int l;
@@ -88,14 +83,14 @@ iwchareq(unsigned char *p1, unsigned char *p2)
* short cut. if *p1 and *p2 is lower than CHARMAX, then we could
* assume they are ASCII
*/
- if (*p1 < CHARMAX && *p2 < CHARMAX)
- return (tolower(*p1) == tolower(*p2));
+ if ((unsigned char) *p1 < CHARMAX && (unsigned char) *p2 < CHARMAX)
+ return (tolower((unsigned char) *p1) == tolower((unsigned char) *p2));
/*
* if one of them is an ASCII while the other is not, then they must
* be different characters
*/
- else if (*p1 < CHARMAX || *p2 < CHARMAX)
+ else if ((unsigned char) *p1 < CHARMAX || (unsigned char) *p2 < CHARMAX)
return (0);
/*
@@ -103,10 +98,10 @@ iwchareq(unsigned char *p1, unsigned char *p2)
* characters
*/
l = pg_mblen(p1);
- (void) pg_mb2wchar_with_len(p1, (pg_wchar *) c1, l);
+ (void) pg_mb2wchar_with_len(p1, c1, l);
c1[0] = tolower(c1[0]);
l = pg_mblen(p2);
- (void) pg_mb2wchar_with_len(p2, (pg_wchar *) c2, l);
+ (void) pg_mb2wchar_with_len(p2, c2, l);
c2[0] = tolower(c2[0]);
return (c1[0] == c2[0]);
}
@@ -135,7 +130,7 @@ iwchareq(unsigned char *p1, unsigned char *p2)
#undef do_like_escape
#define CHAREQ(p1, p2) (*(p1) == *(p2))
-#define ICHAREQ(p1, p2) (tolower(*(p1)) == tolower(*(p2)))
+#define ICHAREQ(p1, p2) (tolower((unsigned char) *(p1)) == tolower((unsigned char) *(p2)))
#define NextChar(p, plen) ((p)++, (plen)--)
#define CopyAdvChar(dst, src, srclen) (*(dst)++ = *(src)++, (srclen)--)
@@ -154,7 +149,7 @@ namelike(PG_FUNCTION_ARGS)
Name str = PG_GETARG_NAME(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -178,7 +173,7 @@ namenlike(PG_FUNCTION_ARGS)
Name str = PG_GETARG_NAME(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -202,7 +197,7 @@ textlike(PG_FUNCTION_ARGS)
text *str = PG_GETARG_TEXT_P(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -226,7 +221,7 @@ textnlike(PG_FUNCTION_ARGS)
text *str = PG_GETARG_TEXT_P(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -250,7 +245,7 @@ bytealike(PG_FUNCTION_ARGS)
bytea *str = PG_GETARG_BYTEA_P(0);
bytea *pat = PG_GETARG_BYTEA_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -271,7 +266,7 @@ byteanlike(PG_FUNCTION_ARGS)
bytea *str = PG_GETARG_BYTEA_P(0);
bytea *pat = PG_GETARG_BYTEA_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -296,7 +291,7 @@ nameiclike(PG_FUNCTION_ARGS)
Name str = PG_GETARG_NAME(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -320,7 +315,7 @@ nameicnlike(PG_FUNCTION_ARGS)
Name str = PG_GETARG_NAME(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -344,7 +339,7 @@ texticlike(PG_FUNCTION_ARGS)
text *str = PG_GETARG_TEXT_P(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -368,7 +363,7 @@ texticnlike(PG_FUNCTION_ARGS)
text *str = PG_GETARG_TEXT_P(0);
text *pat = PG_GETARG_TEXT_P(1);
bool result;
- unsigned char *s,
+ char *s,
*p;
int slen,
plen;
@@ -415,7 +410,7 @@ like_escape_bytea(PG_FUNCTION_ARGS)
bytea *pat = PG_GETARG_BYTEA_P(0);
bytea *esc = PG_GETARG_BYTEA_P(1);
bytea *result;
- unsigned char *p,
+ char *p,
*e,
*r;
int plen,
@@ -500,7 +495,7 @@ like_escape_bytea(PG_FUNCTION_ARGS)
}
}
- VARATT_SIZEP(result) = r - ((unsigned char *) result);
+ VARATT_SIZEP(result) = r - ((char *) result);
PG_RETURN_BYTEA_P(result);
}
@@ -509,7 +504,7 @@ like_escape_bytea(PG_FUNCTION_ARGS)
* Same as above, but specifically for bytea (binary) datatype
*/
static int
-MatchBytea(unsigned char *t, int tlen, unsigned char *p, int plen)
+MatchBytea(char *t, int tlen, char *p, int plen)
{
/* Fast path for match-everything pattern */
if ((plen == 1) && (*p == '%'))