mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Fix collations when we call transformWhereClause from outside the parser.
Previous patches took care of assorted places that call transformExpr from outside the main parser, but I overlooked the fact that some places use transformWhereClause as a shortcut for transformExpr + coerce_to_boolean. In particular this broke collation-sensitive index WHERE clauses, as per report from Thom Brown. Trigger WHEN and rule WHERE clauses too. I'm not forcing initdb for this fix, but any affected indexes, triggers, or rules will need to be dropped and recreated.
This commit is contained in:
@ -36,6 +36,7 @@
|
||||
#include "optimizer/clauses.h"
|
||||
#include "optimizer/var.h"
|
||||
#include "parser/parse_clause.h"
|
||||
#include "parser/parse_collate.h"
|
||||
#include "parser/parse_func.h"
|
||||
#include "parser/parse_relation.h"
|
||||
#include "parser/parsetree.h"
|
||||
@ -282,6 +283,8 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
|
||||
whenClause = transformWhereClause(pstate,
|
||||
copyObject(stmt->whenClause),
|
||||
"WHEN");
|
||||
/* we have to fix its collations too */
|
||||
assign_expr_collations(pstate, whenClause);
|
||||
|
||||
/*
|
||||
* No subplans or aggregates, please
|
||||
|
Reference in New Issue
Block a user