diff options
author | Bruce Momjian <bruce@momjian.us> | 1999-02-02 19:20:54 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1999-02-02 19:20:54 +0000 |
commit | eb3415538ec46f64ef66fb96203e7b2542b2111e (patch) | |
tree | 3b82863732496f2defb041a9576efece95bf0d0e /src | |
parent | 2163d9e33eaa66f493f93b2aa291c20675aa1e2d (diff) | |
download | postgresql-eb3415538ec46f64ef66fb96203e7b2542b2111e.tar.gz postgresql-eb3415538ec46f64ef66fb96203e7b2542b2111e.zip |
OK I found it,
I search in the planner for the '\xFF' appending.
Finally I found in MakeIndexable() in gram.y
Attach a patch which removes the "<=" test in USE_LOCALE,
might make some queries a bit slower for us "locale-heads",
BUT correct result is more important.
regards,
--
-----------------
Göran Thyni
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/parser/gram.y | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 374206304a7..75ebaf86286 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.50 1999/02/02 03:44:42 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.51 1999/02/02 19:20:54 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -5257,11 +5257,17 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr) least->val.val.str = match_least; most->val.type = T_String; most->val.val.str = match_most; +#ifdef USE_LOCALE + result = makeA_Expr(AND, NULL, + makeA_Expr(OP, "~", lexpr, rexpr), + makeA_Expr(OP, ">=", lexpr, (Node *)least)); +#else result = makeA_Expr(AND, NULL, makeA_Expr(OP, "~", lexpr, rexpr), makeA_Expr(AND, NULL, makeA_Expr(OP, ">=", lexpr, (Node *)least), makeA_Expr(OP, "<=", lexpr, (Node *)most))); +#endif } } } @@ -5304,11 +5310,17 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr) least->val.val.str = match_least; most->val.type = T_String; most->val.val.str = match_most; +#ifdef USE_LOCALE + result = makeA_Expr(AND, NULL, + makeA_Expr(OP, "~~", lexpr, rexpr), + makeA_Expr(OP, ">=", lexpr, (Node *)least)); +#else result = makeA_Expr(AND, NULL, makeA_Expr(OP, "~~", lexpr, rexpr), makeA_Expr(AND, NULL, makeA_Expr(OP, ">=", lexpr, (Node *)least), makeA_Expr(OP, "<=", lexpr, (Node *)most))); +#endif } } } |