Repair "LIKE" behavior with two adjacent wildcard characters ("_").

Was ignoring second wildcard.
This commit is contained in:
Thomas G. Lockhart 1998-03-07 06:04:59 +00:00
parent a540f78668
commit 2d87654aeb
1 changed files with 10 additions and 9 deletions

View File

@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.5 1998/02/25 13:07:08 scrappy Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.6 1998/03/07 06:04:59 thomas Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@ -4835,15 +4835,16 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr)
for (pos = 0; n->val.val.str[pos]; pos++)
{
if ((n->val.val.str[pos] == '%' &&
n->val.val.str[pos+1] != '%') ||
(n->val.val.str[pos] == '_' &&
n->val.val.str[pos+1] != '_'))
break;
if (n->val.val.str[pos] == '%' ||
n->val.val.str[pos] == '_' ||
n->val.val.str[pos] == '\\')
if (n->val.val.str[pos] == '%' &&
n->val.val.str[pos+1] != '%')
break;
if(n->val.val.str[pos] == '_')
break;
if (n->val.val.str[pos] == '\\' ||
n->val.val.str[pos] == '%')
pos++;
if (n->val.val.str[pos] == '\0')
break;
match_least[match_pos] = n->val.val.str[pos];
match_most[match_pos++] = n->val.val.str[pos];
}