David Rowley <dgrowle...@gmail.com> writes: > I noticed that nodeFuncs.c appears to have some pretty sloppy work > done in many of the comments. Many look like they've just not been > updated from a copy/paste/edit from another node function. > The attached aims to clean these up.
I believe every one of these changes is wrong. For instance: case T_ScalarArrayOpExpr: - coll = InvalidOid; /* result is always boolean */ + coll = InvalidOid; /* result is always InvalidOid */ break; The point here is that the result type of ScalarArrayOpExpr is boolean, which has no collation, therefore reporting its collation as InvalidOid is correct. Maybe there's a clearer way to say that, but your text is more confusing not less so. Likewise, the point of the annotations in exprSetCollation is to not let a collation be applied to a node that must have a noncollatable result type. regards, tom lane