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.