Hello Pavel,

I couldn't find the documentation. Attached patch adds one.

Probably this function should have been named pg_*. Too late.

I think this is intentionally hidden function, like others started with acl*.

Yep, I thought of that.

However, the point of having hidden and/or undocumented functions fails me: they are hard/impossible to find if you do not know they exist from the start, and if you ever find one you do not know what they do without reading the source code in detail, eg to know what to give arguments to get an answer.

So I assumed that it was more lazyness and could be remedied with a doc patch for the one function I read. Maybe it would make sense to document the others as well, which are more straightforward.

Also, that does not explain why they do not use a "pg_" prefix, which is already a way of saying "this is an internal-purpose function". So I would be in favor of prefixing them with pg_: as it is an undocumented feature, there would not be a compatibility break, somehow:-)

postgres=# \df acl*
List of fun
   Schema   |    Name     | Result data type |
------------+-------------+------------------+----------------------------------
 pg_catalog | aclcontains | boolean          | aclitem[], aclitem
 pg_catalog | acldefault  | aclitem[]        | "char", oid
 pg_catalog | aclexplode  | SETOF record     | acl aclitem[], OUT grantor oid, O
 pg_catalog | aclinsert   | aclitem[]        | aclitem[], aclitem
 pg_catalog | aclitemeq   | boolean          | aclitem, aclitem
 pg_catalog | aclitemin   | aclitem          | cstring
 pg_catalog | aclitemout  | cstring          | aclitem
 pg_catalog | aclremove   | aclitem[]        | aclitem[], aclitem

--
Fabien.

Reply via email to