From bad3b3068d97c8acf68958176fa017d5033fe773 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 7 Jun 1999 14:28:26 +0000 Subject: Repair recently-introduced error in makeIndexable for LIKE: a non-leading % would be put into the >=/<= patterns. Also, repair longstanding confusion about whether %% means a literal %%. The SQL92 doesn't say any such thing, and textlike() knows that, but gram.y didn't. --- src/backend/utils/adt/like.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/backend/utils/adt/like.c') diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c index 14fc5314d0c..2d35bfabaca 100644 --- a/src/backend/utils/adt/like.c +++ b/src/backend/utils/adt/like.c @@ -111,7 +111,7 @@ textnlike(struct varlena * s, struct varlena * p) } -/* $Revision: 1.24 $ +/* $Revision: 1.25 $ ** "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. @@ -191,7 +191,9 @@ DoMatch(pg_wchar * text, pg_wchar * p) else { /* End of input string. Do we have matching string remaining? */ - if (p[0] == '\0' || (p[0] == '%' && p[1] == '\0')) + while (*p == '%') /* allow multiple %'s at end of pattern */ + p++; + if (*p == '\0') return LIKE_TRUE; else return LIKE_ABORT; -- cgit v1.2.3