> I am confused. As I can tell, these are coming in as null_expr - 1.
What is "null_expr - 1"? I think that is the same thing; a node with a
subtraction operator and the left side set to null and the right side
set to a constant node. That's what I meant by the unary minus on a
constant.
> Why can't we do a check in gram.y,...
Well we maybe can, but it sure is ugly. This will be spread around a
bunch of places (everywhere there is a unary minus allowed). I already
did the wrong thing and brute-forced something similar into the CREATE
SEQUENCE code in gram.y. Isolating it in transform_expr() or somewhere
like that would be much cleaner.