I thought the whole problem here is that OIDs are unsigned ints, hence intVal() won't allow the highest OIDs?
Exactly. That's why you need to handle T_Float too. See the int8 example, which has just the same problem.
It occurs to me then that I could just then use FloatOnly in the grammar and then just attempt to coerce that to an Oid using oidin? Floats are stored as strings, so that'd be OK, and the oidin function would barf if it was an illegal uint?
Chris
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?
http://archives.postgresql.org