aboutsummaryrefslogtreecommitdiff
path: root/doc/src/sgml/ref
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-03-26 16:58:41 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-03-26 16:58:41 +0000
commit55a7cf80a0769d38f03bd728717da855902041b1 (patch)
tree147a3aa02b95844de61c869232c2dbe802914e67 /doc/src/sgml/ref
parent66daeb074b3fbdb071a5631c066f5e41d554220e (diff)
downloadpostgresql-55a7cf80a0769d38f03bd728717da855902041b1.tar.gz
postgresql-55a7cf80a0769d38f03bd728717da855902041b1.zip
Allow non-superuser database owners to create procedural languages.
A DBA is allowed to create a language in his database if it's marked "tmpldbacreate" in pg_pltemplate. The factory default is that this is set for all standard trusted languages, but of course a superuser may adjust the settings. In service of this, add the long-foreseen owner column to pg_language; renaming, dropping, and altering owner of a PL now follow normal ownership rules instead of being superuser-only. Jeremy Drake, with some editorialization by Tom Lane.
Diffstat (limited to 'doc/src/sgml/ref')
-rw-r--r--doc/src/sgml/ref/alter_language.sgml19
-rw-r--r--doc/src/sgml/ref/create_language.sgml20
-rw-r--r--doc/src/sgml/ref/drop_language.sgml6
3 files changed, 35 insertions, 10 deletions
diff --git a/doc/src/sgml/ref/alter_language.sgml b/doc/src/sgml/ref/alter_language.sgml
index 9c336f163bf..e0cdb9d5a56 100644
--- a/doc/src/sgml/ref/alter_language.sgml
+++ b/doc/src/sgml/ref/alter_language.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/alter_language.sgml,v 1.6 2006/09/16 00:30:16 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/alter_language.sgml,v 1.7 2007/03/26 16:58:38 tgl Exp $
PostgreSQL documentation
-->
@@ -20,7 +20,8 @@ PostgreSQL documentation
<refsynopsisdiv>
<synopsis>
-ALTER LANGUAGE <replaceable>name</replaceable> RENAME TO <replaceable>newname</replaceable>
+ALTER [ PROCEDURAL ] LANGUAGE <replaceable>name</replaceable> RENAME TO <replaceable>newname</replaceable>
+ALTER [ PROCEDURAL ] LANGUAGE <replaceable>name</replaceable> OWNER TO <replaceable>new_owner</replaceable>
</synopsis>
</refsynopsisdiv>
@@ -29,8 +30,9 @@ ALTER LANGUAGE <replaceable>name</replaceable> RENAME TO <replaceable>newname</r
<para>
<command>ALTER LANGUAGE</command> changes the definition of a
- language. The only functionality is to rename the language. Only
- a superuser can rename languages.
+ procedural language. The only functionality is to rename the language or
+ assign a new owner. You must be superuser or owner of the language to
+ use <command>ALTER LANGUAGE</command>.
</para>
</refsect1>
@@ -55,6 +57,15 @@ ALTER LANGUAGE <replaceable>name</replaceable> RENAME TO <replaceable>newname</r
</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><replaceable>new_owner</replaceable></term>
+ <listitem>
+ <para>
+ The new owner of the language
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect1>
diff --git a/doc/src/sgml/ref/create_language.sgml b/doc/src/sgml/ref/create_language.sgml
index b09b38bee99..bb853feb19c 100644
--- a/doc/src/sgml/ref/create_language.sgml
+++ b/doc/src/sgml/ref/create_language.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/create_language.sgml,v 1.43 2007/01/31 23:26:03 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/create_language.sgml,v 1.44 2007/03/26 16:58:38 tgl Exp $
PostgreSQL documentation
-->
@@ -34,9 +34,7 @@ CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE <replaceable class="parameter">name</
<productname>PostgreSQL</productname> user can register a new
procedural language with a <productname>PostgreSQL</productname>
database. Subsequently, functions and trigger procedures can be
- defined in this new language. The user must have the
- <productname>PostgreSQL</productname> superuser privilege to
- register a new language.
+ defined in this new language.
</para>
<para>
@@ -64,6 +62,20 @@ CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE <replaceable class="parameter">name</
old dump files, which are likely to contain out-of-date information
about language support functions.
</para>
+
+ <para>
+ Ordinarily, the user must have the
+ <productname>PostgreSQL</productname> superuser privilege to
+ register a new language. However, the owner of a database can register
+ a new language within that database if the language is listed in
+ the <structname>pg_pltemplate</structname> catalog and is marked
+ as allowed to be created by database owners (<structfield>tmpldbacreate</>
+ is true). The default is that trusted languages can be created
+ by database owners, but this can be adjusted by superusers by modifying
+ the contents of <structname>pg_pltemplate</structname>.
+ The creator of a language becomes its owner and can later
+ drop it, rename it, or assign it to a new owner.
+ </para>
</refsect1>
<refsect1 id="sql-createlanguage-parameters">
diff --git a/doc/src/sgml/ref/drop_language.sgml b/doc/src/sgml/ref/drop_language.sgml
index ad37287da67..1e3c960a720 100644
--- a/doc/src/sgml/ref/drop_language.sgml
+++ b/doc/src/sgml/ref/drop_language.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/drop_language.sgml,v 1.24 2007/01/31 23:26:03 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/drop_language.sgml,v 1.25 2007/03/26 16:58:38 tgl Exp $
PostgreSQL documentation
-->
@@ -31,6 +31,8 @@ DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] <replaceable class="PARAMETER">name</
<command>DROP LANGUAGE</command> will remove the definition
of the previously registered procedural language called
<replaceable class="parameter">name</replaceable>.
+ You must be superuser or owner of the language to
+ use <command>DROP LANGUAGE</command>.
</para>
</refsect1>
@@ -43,7 +45,7 @@ DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] <replaceable class="PARAMETER">name</
<term><literal>IF EXISTS</literal></term>
<listitem>
<para>
- Do not throw an error if the function does not exist. A notice is issued
+ Do not throw an error if the language does not exist. A notice is issued
in this case.
</para>
</listitem>