Hi,
w.r.t. the while loop in findNotNullConstraintAttnum():
+ if (multiple == NULL)
+ break;
I think `pfree(arr)` should be called before breaking.
+ if (constraint->cooked_expr != NULL)
+ return tryExtractNotNullFromNode(stringToNode(constraint->cooked_expr), rel);
+ else
+ return tryExtractNotNullFromNode(constraint->raw_expr, rel);
nit: the `else` keyword is not needed.
+ if (isnull)
+ elog(ERROR, "null conbin for constraint %u", conForm->oid);
It would be better to expand `conbin` so that the user can better understand the error.
Cheers