Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc62dd80

Browse files
committed
Document aclitem functions and operators
aclitem functions and operators have been heretofore undocumented.Fix that. While at it, ensure the non-operator aclitem functions havepg_description strings.Does not seem worthwhile to back-patch.Author: Fabien Coelho, with pg_description from John Naylor, and significantrefactoring and editorialization by me.Reviewed by: Tom LaneDiscussion:https://postgr.es/m/flat/alpine.DEB.2.21.1808010825490.18204%40lancre
1 parentd18f667 commitc62dd80

File tree

3 files changed

+139
-5
lines changed

3 files changed

+139
-5
lines changed

‎doc/src/sgml/func.sgml

Lines changed: 136 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15962,7 +15962,7 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n);
1596215962
</sect1>
1596315963

1596415964
<sect1 id="functions-info">
15965-
<title>System Information Functions</title>
15965+
<title>System Information Functions and Operators</title>
1596615966

1596715967
<para>
1596815968
<xref linkend="functions-info-session-table"/> shows several
@@ -16893,6 +16893,141 @@ SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');
1689316893
be specified by name or by OID.
1689416894
</para>
1689516895

16896+
<para>
16897+
<xref linkend="functions-aclitem-fn-table"/> shows the operators
16898+
available for the <type>aclitem</type> type, which is the internal
16899+
representation of access privileges. An <type>aclitem</type> entry
16900+
describes the permissions of a grantee, whether they are grantable
16901+
or not, and which grantor granted them. For instance,
16902+
<literal>calvin=r*w/hobbes</literal> specifies that the role
16903+
<literal>calvin</literal> has the grantable privilege
16904+
<literal>SELECT</literal> (<literal>r*</literal>) and the non-grantable
16905+
privilege <literal>UPDATE</literal> (<literal>w</literal>), granted by
16906+
the role <literal>hobbes</literal>. An empty grantee stands for
16907+
<literal>PUBLIC</literal>.
16908+
</para>
16909+
16910+
<indexterm>
16911+
<primary>aclitem</primary>
16912+
</indexterm>
16913+
<indexterm>
16914+
<primary>acldefault</primary>
16915+
</indexterm>
16916+
<indexterm>
16917+
<primary>aclitemeq</primary>
16918+
</indexterm>
16919+
<indexterm>
16920+
<primary>aclcontains</primary>
16921+
</indexterm>
16922+
<indexterm>
16923+
<primary>aclexplode</primary>
16924+
</indexterm>
16925+
<indexterm>
16926+
<primary>makeaclitem</primary>
16927+
</indexterm>
16928+
16929+
<table id="functions-aclitem-op-table">
16930+
<title><type>aclitem</type> Operators</title>
16931+
<tgroup cols="4">
16932+
<thead>
16933+
<row>
16934+
<entry>Operator</entry>
16935+
<entry>Description</entry>
16936+
<entry>Example</entry>
16937+
<entry>Result</entry>
16938+
</row>
16939+
</thead>
16940+
<tbody>
16941+
16942+
<row>
16943+
<entry> <literal>=</literal> </entry>
16944+
<entry>equal</entry>
16945+
<entry><literal>'calvin=r*w/hobbes'::aclitem = 'calvin=r*w*/hobbes'::aclitem</literal></entry>
16946+
<entry><literal>f</literal></entry>
16947+
</row>
16948+
16949+
<row>
16950+
<entry> <literal>@&gt;</literal> </entry>
16951+
<entry>contains element</entry>
16952+
<entry><literal>'{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] @> 'calvin=r*w/hobbes'::aclitem</literal></entry>
16953+
<entry><literal>t</literal></entry>
16954+
</row>
16955+
16956+
<row>
16957+
<entry> <literal>~</literal> </entry>
16958+
<entry>contains element</entry>
16959+
<entry><literal>'{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] ~ 'calvin=r*w/hobbes'::aclitem</literal></entry>
16960+
<entry><literal>t</literal></entry>
16961+
</row>
16962+
16963+
</tbody>
16964+
</tgroup>
16965+
</table>
16966+
16967+
<para>
16968+
<xref linkend="functions-aclitem-fn-table"/> shows some additional
16969+
functions to manage the <type>aclitem</type> type.
16970+
</para>
16971+
16972+
<table id="functions-aclitem-fn-table">
16973+
<title><type>aclitem</type> Functions</title>
16974+
<tgroup cols="3">
16975+
<thead>
16976+
<row><entry>Name</entry> <entry>Return Type</entry> <entry>Description</entry></row>
16977+
</thead>
16978+
<tbody>
16979+
<row>
16980+
<entry><literal><function>acldefault</function>(<parameter>type</parameter>,
16981+
<parameter>ownerId</parameter>)</literal></entry>
16982+
<entry><type>aclitem[]</type></entry>
16983+
<entry>get the hardcoded default access privileges for an object belonging to <parameter>ownerId</parameter></entry>
16984+
</row>
16985+
<row>
16986+
<entry><literal><function>aclexplode</function>(<parameter>aclitem[]</parameter>)</literal></entry>
16987+
<entry><type>setof record</type></entry>
16988+
<entry>get <type>aclitem</type> array as tuples</entry>
16989+
</row>
16990+
<row>
16991+
<entry><literal><function>makeaclitem</function>(<parameter>grantee</parameter>, <parameter>grantor</parameter>, <parameter>privilege</parameter>, <parameter>grantable</parameter>)</literal></entry>
16992+
<entry><type>aclitem</type></entry>
16993+
<entry>build an <type>aclitem</type> from input</entry>
16994+
</row>
16995+
</tbody>
16996+
</tgroup>
16997+
</table>
16998+
16999+
<para>
17000+
<function>acldefault</function> returns the hardcoded default access privileges
17001+
for an object of <parameter>type</parameter> belonging to role <parameter>ownerId</parameter>.
17002+
Notice that these are used in the absence of any pg_default_acl
17003+
(<xref linkend="catalog-pg-default-acl"/>) entry. Default access privileges are described in
17004+
<xref linkend="sql-grant"/> and can be overwritten with
17005+
<xref linkend="sql-alterdefaultprivileges"/>. In other words, this function will return
17006+
results which may be misleading when the defaults have been overridden.
17007+
Type is a <type>CHAR</type>, use
17008+
'c' for <literal>COLUMN</literal>,
17009+
'r' for relation-like objects such as <literal>TABLE</literal> or <literal>VIEW</literal>,
17010+
's' for <literal>SEQUENCE</literal>,
17011+
'd' for <literal>DATABASE</literal>,
17012+
'f' for <literal>FUNCTION</literal> or <literal>PROCEDURE</literal>,
17013+
'l' for <literal>LANGUAGE</literal>,
17014+
'L' for <literal>LARGE OBJECT</literal>,
17015+
'n' for <literal>SCHEMA</literal>,
17016+
't' for <literal>TABLESPACE</literal>,
17017+
'F' for <literal>FOREIGN DATA WRAPPER</literal>,
17018+
'S' for <literal>FOREIGN SERVER</literal>,
17019+
'T' for <literal>TYPE</literal> or <literal>DOMAIN</literal>.
17020+
</para>
17021+
17022+
<para>
17023+
<function>aclexplode</function> returns an <type>aclitem</type> array
17024+
as a set rows. Output columns are grantor <type>oid</type>,
17025+
grantee <type>oid</type> (<literal>0</literal> for <literal>PUBLIC</literal>),
17026+
granted privilege as <type>text</type> (<literal>SELECT</literal>, ...)
17027+
and whether the prilivege is grantable as <type>boolean</type>.
17028+
<function>makeaclitem</function> performs the inverse operation.
17029+
</para>
17030+
1689617031
<para>
1689717032
<xref linkend="functions-info-schema-table"/> shows functions that
1689817033
determine whether a certain object is <firstterm>visible</firstterm> in the

‎src/backend/utils/adt/acl.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -855,8 +855,7 @@ acldefault(ObjectType objtype, Oid ownerId)
855855

856856
/*
857857
* SQL-accessible version of acldefault(). Hackish mapping from "char" type to
858-
* OBJECT_* values, but it's only used in the information schema, not
859-
* documented for general use.
858+
* OBJECT_* values.
860859
*/
861860
Datum
862861
acldefault_sql(PG_FUNCTION_ARGS)

‎src/include/catalog/pg_proc.dat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2073,11 +2073,11 @@
20732073
{ oid => '1365', descr => 'make ACL item',
20742074
proname => 'makeaclitem', prorettype => 'aclitem',
20752075
proargtypes => 'oid oid text bool', prosrc => 'makeaclitem' },
2076-
{ oid => '3943', descr => 'TODO',
2076+
{ oid => '3943', descr => 'show hardwired default privileges, primarily for use by the information schema',
20772077
proname => 'acldefault', prorettype => '_aclitem', proargtypes => 'char oid',
20782078
prosrc => 'acldefault_sql' },
20792079
{ oid => '1689',
2080-
descr => 'convert ACL item array to table, for use by information schema',
2080+
descr => 'convert ACL item array to table,primarilyfor use by information schema',
20812081
proname => 'aclexplode', prorows => '10', proretset => 't',
20822082
provolatile => 's', prorettype => 'record', proargtypes => '_aclitem',
20832083
proallargtypes => '{_aclitem,oid,oid,text,bool}',

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp