Fix failure to propagate collation in negate_clause().

Turns out it was this, and not so much plpgsql, that was at fault in Stefan
Huehner's collation-error-in-a-trigger bug report of a couple weeks ago.
This commit is contained in:
Tom Lane 2011-03-25 18:44:47 -04:00
parent 9b19c12e1d
commit c8e993503d

View File

@ -104,6 +104,8 @@ negate_clause(Node *node)
newopexpr->opfuncid = InvalidOid; newopexpr->opfuncid = InvalidOid;
newopexpr->opresulttype = opexpr->opresulttype; newopexpr->opresulttype = opexpr->opresulttype;
newopexpr->opretset = opexpr->opretset; newopexpr->opretset = opexpr->opretset;
newopexpr->opcollid = opexpr->opcollid;
newopexpr->inputcollid = opexpr->inputcollid;
newopexpr->args = opexpr->args; newopexpr->args = opexpr->args;
newopexpr->location = opexpr->location; newopexpr->location = opexpr->location;
return (Node *) newopexpr; return (Node *) newopexpr;
@ -126,6 +128,7 @@ negate_clause(Node *node)
newopexpr->opno = negator; newopexpr->opno = negator;
newopexpr->opfuncid = InvalidOid; newopexpr->opfuncid = InvalidOid;
newopexpr->useOr = !saopexpr->useOr; newopexpr->useOr = !saopexpr->useOr;
newopexpr->inputcollid = saopexpr->inputcollid;
newopexpr->args = saopexpr->args; newopexpr->args = saopexpr->args;
newopexpr->location = saopexpr->location; newopexpr->location = saopexpr->location;
return (Node *) newopexpr; return (Node *) newopexpr;