mirror of
https://github.com/postgres/postgres.git
synced 2025-08-30 06:01:21 +03:00
Force plperl and plperlu to run in separate interpreters. Create an error
on an attempt to create the second interpreter if this is not supported by the perl installation. Per recent -hackers discussion.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.58 2006/10/23 18:10:31 petere Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.59 2006/11/13 17:13:56 adunstan Exp $ -->
|
||||
|
||||
<chapter id="plperl">
|
||||
<title>PL/Perl - Perl Procedural Language</title>
|
||||
@@ -646,6 +646,25 @@ $$ LANGUAGE plperl;
|
||||
If the above function was created by a superuser using the language
|
||||
<literal>plperlu</>, execution would succeed.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
For security reasons, to stop a leak of privileged operations from
|
||||
<application>PL/PerlU</> to <application>PL/Perl</>, these two languages
|
||||
have to run in separate instances of the Perl interpreter. If your
|
||||
Perl installation has been appropriately compiled, this is not a problem.
|
||||
However, not all installations are compiled with the requisite flags.
|
||||
If <productname>PostgreSQL</> detects that this is the case then it will
|
||||
not start a second interpreter, but instead create an error. In
|
||||
consequence, in such an installation, you cannot use both
|
||||
<application>PL/PerlU</> and <application>PL/Perl</> in the same backend
|
||||
process. The remedy for this is to obtain a Perl installation created
|
||||
with the appropriate flags, namely either <literal>usemultiplicity</> or
|
||||
both <literal>usethreads</> and <literal>useithreads</>.
|
||||
For more details,see the <literal>perlembed</> manual page.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="plperl-triggers">
|
||||
|
Reference in New Issue
Block a user