Commit 950b6ab0 authored by Marc G. Fournier's avatar Marc G. Fournier

Fixes: Using LIKE or ~ operator on text type files which are null valued

       causes segmentation fault.

Thanks to: Salvador Ortiz Garcia, Robert Patrick, Paul 'Shag' Walmsley,
           and James Cooper for finding and fixing the problem.
parent 25bb7183
......@@ -120,6 +120,7 @@ char16nlike(char *s, struct varlena *p)
bool
namelike(NameData *n, struct varlena *p)
{
if (!n) return FALSE;
return (fixedlen_like(n->data, p, NAMEDATALEN));
}
......@@ -132,6 +133,7 @@ namenlike(NameData *s, struct varlena *p)
bool
textlike(struct varlena *s, struct varlena *p)
{
if (!s) return FALSE;
return (fixedlen_like(VARDATA(s), p, VARSIZE(s) - VARHDRSZ));
}
......@@ -141,7 +143,7 @@ bool textnlike(struct varlena *s, struct varlena *p)
}
/* $Revision: 1.1.1.1 $
/* $Revision: 1.2 $
** "like.c" A first attempt at a LIKE operator for Postgres95.
**
** Originally written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986.
......
......@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.1.1.1 1996/07/09 06:22:05 scrappy Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.2 1996/07/09 06:39:19 scrappy Exp $
*
* Alistair Crooks added the code for the regex caching
* agc - cached the regular expressions used - there's a good chance
......@@ -240,6 +240,7 @@ char16regexne(char *s, struct varlena *p)
bool
nameregexeq(NameData *n, struct varlena *p)
{
if (!n) return FALSE;
return (fixedlen_regexeq(n->data, p, NAMEDATALEN, REG_EXTENDED));
}
bool
......@@ -251,6 +252,7 @@ nameregexne(NameData *s, struct varlena *p)
bool
textregexeq(struct varlena *s, struct varlena *p)
{
if (!s) return (FALSE);
return (fixedlen_regexeq(VARDATA(s), p, VARSIZE(s) - VARHDRSZ, REG_EXTENDED));
}
......@@ -319,6 +321,7 @@ char16icregexne(char *s, struct varlena *p)
bool
texticregexeq(struct varlena *s, struct varlena *p)
{
if (!s) return FALSE;
return (fixedlen_regexeq(VARDATA(s), p, VARSIZE(s) - VARHDRSZ,
REG_ICASE | REG_EXTENDED));
}
......@@ -332,6 +335,7 @@ texticregexne(struct varlena *s, struct varlena *p)
bool
nameicregexeq(NameData *n, struct varlena *p)
{
if (!n) return FALSE;
return (fixedlen_regexeq(n->data, p, NAMEDATALEN,
REG_ICASE | REG_EXTENDED));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment