Commit 9e39ffe4 authored by Bruce Momjian's avatar Bruce Momjian

Attached is documentation describing plperlu differences from plperl.

Alex Pilosov
parent 140ddb78
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/plperl.sgml,v 2.8 2001/05/12 22:51:35 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/plperl.sgml,v 2.9 2001/06/22 21:37:14 momjian Exp $
--> -->
<chapter id="plperl"> <chapter id="plperl">
...@@ -20,7 +20,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/plperl.sgml,v 2.8 2001/05/12 22:51:35 peter ...@@ -20,7 +20,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/plperl.sgml,v 2.8 2001/05/12 22:51:35 peter
</para> </para>
<para> <para>
The PL/Perl intepreter is a full Perl interpreter. However, certain The PL/Perl interpreter (when installed as trusted interpreter with
default name 'plperl') intepreter is a full Perl interpreter. However, certain
operations have been disabled in order to maintain the security of operations have been disabled in order to maintain the security of
the system. In general, the operations that are restricted are the system. In general, the operations that are restricted are
those that interact with the environment. This includes filehandle those that interact with the environment. This includes filehandle
...@@ -28,6 +29,11 @@ $Header: /cvsroot/pgsql/doc/src/sgml/plperl.sgml,v 2.8 2001/05/12 22:51:35 peter ...@@ -28,6 +29,11 @@ $Header: /cvsroot/pgsql/doc/src/sgml/plperl.sgml,v 2.8 2001/05/12 22:51:35 peter
(for external modules). It should be noted that this security is (for external modules). It should be noted that this security is
not absolute. Indeed, several Denial-of-Service attacks are still not absolute. Indeed, several Denial-of-Service attacks are still
possible - memory exhaustion and endless loops are two examples. possible - memory exhaustion and endless loops are two examples.
</para>
<para>
When PL/Perl is installed as 'untrusted' interpreter (with name 'plperlu'),
everything is permitted, and any perl code can be loaded (by superuser only).
</para> </para>
<sect1 id="plperl-install"> <sect1 id="plperl-install">
...@@ -76,6 +82,11 @@ gmake install ...@@ -76,6 +82,11 @@ gmake install
language into a database. language into a database.
<screen> <screen>
<prompt>$</prompt> <userinput>createlang plperl template1</userinput> <prompt>$</prompt> <userinput>createlang plperl template1</userinput>
</screen>
Alternatively, to create untrusted interpreter (where functions can only
be created by superuser, but the functions are not restricted), use:
<screen>
<prompt>$</prompt> <userinput>createlang plperlu template1</userinput>
</screen> </screen>
If it is installed into template1, all future databases will have If it is installed into template1, all future databases will have
the language installed automatically. the language installed automatically.
...@@ -157,6 +168,15 @@ CREATE FUNCTION badfunc() RETURNS integer AS ' ...@@ -157,6 +168,15 @@ CREATE FUNCTION badfunc() RETURNS integer AS '
' LANGUAGE 'plperl'; ' LANGUAGE 'plperl';
</programlisting> </programlisting>
The creation of the function will succeed, but executing it will not. The creation of the function will succeed, but executing it will not.
Note that if same function was created by superuser using language
'plperlu', execution would succeed.
</para>
<para>
Access to database itself from your perl function can be done via
an experimental module DBD::PgSPI, available at <ulink url="http://www.formenos.org/PgSPI/">this site</ulink>. This module makes available a DBI-compliant
database-handle named $pg_dbh, and you can use that to make queries with
normal DBI syntax.
</para> </para>
</sect1> </sect1>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.77 2001/05/14 20:30:20 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.78 2001/06/22 21:37:14 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -218,7 +218,7 @@ RemoveRelation(char *name) ...@@ -218,7 +218,7 @@ RemoveRelation(char *name)
} }
/* /*
* TruncateRelation -- * TruncateRelation
* Removes all the rows from a relation * Removes all the rows from a relation
* *
* Exceptions: * Exceptions:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment