mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
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
This commit is contained in:
parent
2163d9e33e
commit
eb3415538e
@ -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)
|
|||||||
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)
|
|||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user