Thanks for the comments. Updated patch attached.
In the process of looking it over again, I noticed that in an
assert-enabled build, it's trivial to crash the server with this
function: just pass a nonzero subobjid with an object class that doesn't
take one. This could be fixed easily by turning the Asserts into
elog(ERROR).
Another problem with this function is that a lot of checks that
currently raise errors with elog(ERROR) are now user-facing. On this
issue one possible answer would be to do nothing; another would be to go
over all those calls and turn them into full-fledged ereports.
--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support