aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1998-03-07 06:04:59 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1998-03-07 06:04:59 +0000
commit2d87654aeb8aa541a122ce32c484ab2f917119a0 (patch)
treef16381b655bd573e8d2716ad770ab9b9f92ed4d2 /src
parenta540f78668130b78f3093ea8af37e3db27d2fd4f (diff)
downloadpostgresql-2d87654aeb8aa541a122ce32c484ab2f917119a0.tar.gz
postgresql-2d87654aeb8aa541a122ce32c484ab2f917119a0.zip
Repair "LIKE" behavior with two adjacent wildcard characters ("_").
Was ignoring second wildcard.
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/gram.y19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 2c932b2e512..afdeee82342 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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];
}