John Siracusa <[EMAIL PROTECTED]> writes: > So apparently all I can do is find out if it's a null test, but not if it is > specifically "IS NOT NULL"
No, because once you have determined that the node really IsA NullTest, you can cast the pointer to (NullTest *) and look at the NullTest-specific fields. Think of this as poor man's object-oriented programming: Node is the supertype of Expr which is the supertype of NullTest (and a lot of other kinds of nodes, too). It'd look something like if (IsA(predicate, NullTest) && ((NullTest *) predicate)->nulltesttype == IS_NOT_NULL) { /* check to see if arg field matches either side of opclause, * and if so check whether operator is strict ... */ } You can find plenty of examples of this programming pattern throughout the backend. In fact pred_test_simple_clause is doing exactly this to check that what it's given is an OpExpr and not some other node type. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org