• Tom Lane's avatar
    Throw error for indeterminate collation of an ORDER/GROUP/DISTINCT target. · 37d6d07d
    Tom Lane authored
    This restores a parse error that was thrown (though only in the ORDER BY
    case) by the original collation patch.  I had removed it in my recent
    revisions because it was thrown at a place where collations now haven't
    been computed yet; but I thought of another way to handle it.
    
    Throwing the error at parse time, rather than leaving it to be done at
    runtime, is good because a syntax error pointer is helpful for localizing
    the problem.  We can reasonably assume that the comparison function for a
    collatable datatype will complain if it doesn't have a collation to use.
    Now the planner might choose to implement GROUP or DISTINCT via hashing,
    in which case no runtime error would actually occur, but it seems better
    to throw error consistently rather than let the error depend on what the
    planner chooses to do.  Another possible objection is that the user might
    specify a nondefault sort operator that doesn't care about collation
    ... but that's surely an uncommon usage, and it wouldn't hurt him to throw
    in a COLLATE clause anyway.  This change also makes the ORDER BY/GROUP
    BY/DISTINCT case more consistent with the UNION/INTERSECT/EXCEPT case,
    which was already coded to throw this error even though the same objections
    could be raised there.
    37d6d07d
parse_collate.c 24.5 KB