Commit eb341553 authored by Bruce Momjian's avatar Bruce Momjian

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
parent 2163d9e3
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* *
* IDENTIFICATION * 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 * HISTORY
* AUTHOR DATE MAJOR EVENT * AUTHOR DATE MAJOR EVENT
...@@ -5257,11 +5257,17 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr) ...@@ -5257,11 +5257,17 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr)
least->val.val.str = match_least; least->val.val.str = match_least;
most->val.type = T_String; most->val.type = T_String;
most->val.val.str = match_most; 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, result = makeA_Expr(AND, NULL,
makeA_Expr(OP, "~", lexpr, rexpr), makeA_Expr(OP, "~", lexpr, rexpr),
makeA_Expr(AND, NULL, makeA_Expr(AND, NULL,
makeA_Expr(OP, ">=", lexpr, (Node *)least), makeA_Expr(OP, ">=", lexpr, (Node *)least),
makeA_Expr(OP, "<=", lexpr, (Node *)most))); makeA_Expr(OP, "<=", lexpr, (Node *)most)));
#endif
} }
} }
} }
...@@ -5304,11 +5310,17 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr) ...@@ -5304,11 +5310,17 @@ static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr)
least->val.val.str = match_least; least->val.val.str = match_least;
most->val.type = T_String; most->val.type = T_String;
most->val.val.str = match_most; 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, result = makeA_Expr(AND, NULL,
makeA_Expr(OP, "~~", lexpr, rexpr), makeA_Expr(OP, "~~", lexpr, rexpr),
makeA_Expr(AND, NULL, makeA_Expr(AND, NULL,
makeA_Expr(OP, ">=", lexpr, (Node *)least), makeA_Expr(OP, ">=", lexpr, (Node *)least),
makeA_Expr(OP, "<=", lexpr, (Node *)most))); makeA_Expr(OP, "<=", lexpr, (Node *)most)));
#endif
} }
} }
} }
......
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