> Thanks for the feedback! To summarize the recommended changes:
>
> - put function into backend/utils/adt/acl.c.
> - remove PG_FUNCTION_INFO_V1
> - mark 'proisstrict' in pg_proc
> - rename to has_table_privilege()
> - overload the function name for 6 versions (OIDs 1920 - 1925):
> -> has_table_privilege(text username, text relname, text priv)
> -> has_table_privilege(oid usesysid, text relname, text priv)
> -> has_table_privilege(oid usesysid, oid reloid, text priv)
> -> has_table_privilege(text username, oid reloid, text priv)
> -> has_table_privilege(text relname, text priv) /* assumes
> current_user */
> -> has_table_privilege(oid reloid, text priv) /* assumes
current_user
> */
>
Here's a new patch for has_table_privilege( . . .). One change worthy of
note is that I added a definition to fmgr.h as follows:
#define PG_NARGS (fcinfo->nargs)
This allowed me to use two of the new functions to handle both 2 and 3
argument cases. Also different from the above, I used int instead of oid for
the usesysid type.
I'm also attaching a test script and expected output. I haven't yet looked
at how to properly include these into the normal regression testing -- any
pointers are much appreciated.
Thanks,
-- Joe