mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Allow functions to be executed with the privileges of the function owner.
I took the opportunity to remove the pg_proc.proistrusted field.
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.97 2002/05/13 19:22:06 tgl Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.98 2002/05/18 13:47:59 petere Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
@ -4260,14 +4260,14 @@ SELECT NULLIF(value, '(none)') ...
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
The <function>session_user</> is the user that initiated a database
|
||||
connection; it is fixed for the duration of that connection. The
|
||||
<function>current_user</> is the user identifier that is applicable
|
||||
for permission checking. Currently it is always equal to the session
|
||||
user, but in the future there might be <quote>setuid</> functions and
|
||||
other facilities to allow the current user to change temporarily.
|
||||
In Unix parlance, the session user is the <quote>real user</>
|
||||
and the current user is the <quote>effective user</>.
|
||||
The <function>session_user</> is the user that initiated a
|
||||
database connection; it is fixed for the duration of that
|
||||
connection. The <function>current_user</> is the user identifier
|
||||
that is applicable for permission checking. Normally, it is equal
|
||||
to the session user, but it changes during the execution of
|
||||
functions with the attribute <literal>SECURITY DEFINER</literal>.
|
||||
In Unix parlance, the session user is the <quote>real user</> and
|
||||
the current user is the <quote>effective user</>.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_function.sgml,v 1.38 2002/05/17 18:32:52 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_function.sgml,v 1.39 2002/05/18 13:47:59 petere Exp $
|
||||
-->
|
||||
|
||||
<refentry id="SQL-CREATEFUNCTION">
|
||||
@ -21,6 +21,7 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
|
||||
| IMMUTABLE | STABLE | VOLATILE
|
||||
| CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
|
||||
| IMPLICIT CAST
|
||||
| [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER
|
||||
| AS '<replaceable class="parameter">definition</replaceable>'
|
||||
| AS '<replaceable class="parameter">obj_file</replaceable>', '<replaceable class="parameter">link_symbol</replaceable>'
|
||||
} ...
|
||||
@ -199,6 +200,27 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><optional>EXTERNAL</optional> SECURITY INVOKER</term>
|
||||
<term><optional>EXTERNAL</optional> SECURITY DEFINER</term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>SECURITY INVOKER</literal> indicates that the function
|
||||
is to be executed with the privileges of the user that calls it.
|
||||
That is the default. <literal>SECURITY DEFINER</literal>
|
||||
specifies that the function is to be executed with the
|
||||
privileges of the user that created it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The key word <literal>EXTERNAL</literal> is present for SQL
|
||||
compatibility but is optional since, unlike in SQL, this feature
|
||||
does not only apply to external functions.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">definition</replaceable></term>
|
||||
|
||||
@ -372,7 +394,7 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="sql-createfunction-cast-function">
|
||||
<refsect1 id="sql-createfunction-cast-functions">
|
||||
<title id="sql-createfunction-cast-functions-title">
|
||||
Type Cast Functions
|
||||
</title>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.136 2002/05/17 18:32:52 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.137 2002/05/18 13:47:59 petere Exp $
|
||||
-->
|
||||
|
||||
<appendix id="release">
|
||||
@ -24,6 +24,7 @@ CDATA means the content is "SGML-free", so you can write without
|
||||
worries about funny characters.
|
||||
-->
|
||||
<literallayout><![CDATA[
|
||||
Functions can be executed with the privileges of the owner
|
||||
Syntax of CREATE FUNCTION has been extended to resemble SQL99
|
||||
Effects of SET within a transaction block now roll back if transaction aborts
|
||||
New SET LOCAL syntax sets a parameter for the life of the current transaction
|
||||
|
Reference in New Issue
Block a user