diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/trigger.c | 3 | ||||
-rw-r--r-- | src/backend/parser/parse_utilcmd.c | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 0af8a11b0a7..329d4d95f15 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -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 diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index fe8d0c4fac1..b65f5f991cb 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -1829,9 +1829,13 @@ transformIndexStmt(IndexStmt *stmt, const char *queryString) /* take care of the where clause */ if (stmt->whereClause) + { stmt->whereClause = transformWhereClause(pstate, stmt->whereClause, "WHERE"); + /* we have to fix its collations too */ + assign_expr_collations(pstate, stmt->whereClause); + } /* take care of any index expressions */ foreach(l, stmt->indexParams) @@ -1959,6 +1963,8 @@ transformRuleStmt(RuleStmt *stmt, const char *queryString, *whereClause = transformWhereClause(pstate, (Node *) copyObject(stmt->whereClause), "WHERE"); + /* we have to fix its collations too */ + assign_expr_collations(pstate, *whereClause); if (list_length(pstate->p_rtable) != 2) /* naughty, naughty... */ ereport(ERROR, |