aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-08-24 18:56:07 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-08-24 18:56:07 +0000
commit95f202c0212f87ec2610b20643cb74c310f54952 (patch)
tree88198e7093cfac6be6bccd4af44402a9cd533170 /doc/src
parentf21e26225c72060e9631d12ab6faf9f3ada8e2f2 (diff)
downloadpostgresql-95f202c0212f87ec2610b20643cb74c310f54952.tar.gz
postgresql-95f202c0212f87ec2610b20643cb74c310f54952.zip
Adjust description of use_strict parameter. Some other minor editorial
cleanup.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/plperl.sgml71
-rw-r--r--doc/src/sgml/runtime.sgml8
2 files changed, 36 insertions, 43 deletions
diff --git a/doc/src/sgml/plperl.sgml b/doc/src/sgml/plperl.sgml
index 2702508880e..e7cdd2eb3c8 100644
--- a/doc/src/sgml/plperl.sgml
+++ b/doc/src/sgml/plperl.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.43 2005/08/12 21:42:53 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.44 2005/08/24 18:56:07 tgl Exp $
-->
<chapter id="plperl">
@@ -46,46 +46,18 @@ $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.43 2005/08/12 21:42:53 momjian E
<para>
To create a function in the PL/Perl language, use the standard
<xref linkend="sql-createfunction" endterm="sql-createfunction-title">
- syntax. A PL/Perl function must always return a scalar value. You
- can return more complex structures (arrays, records, and sets)
- in the appropriate context by returning a reference.
- Never return a list. Here follows an example of a PL/Perl
- function.
+ syntax:
<programlisting>
CREATE FUNCTION <replaceable>funcname</replaceable> (<replaceable>argument-types</replaceable>) RETURNS <replaceable>return-type</replaceable> AS $$
# PL/Perl function body
$$ LANGUAGE plperl;
</programlisting>
- The body of the function is ordinary Perl code.
+ The body of the function is ordinary Perl code. A PL/Perl function must
+ always return a scalar value. You can return more complex structures
+ (arrays, records, and sets) by returning a reference, as discussed below.
+ Never return a list.
</para>
- <para>
- As with ordinary Perl code, you should use the strict pragma,
- which you can do in one of two ways:
-
- <itemizedlist>
- <listitem>
- <para>
- Globally, by adding <quote>plperl</quote> to the list of <xref
- linkend="guc-custom-variable-classes"> and setting
- <literal>plperl.use_strict</literal> to true in
- <filename>postgresql.conf</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- One function at a time, by using PL/PerlU (you must be database
- superuser to do this) and including
-
-<programlisting>
-use strict;
-</programlisting>
-
- in the function body.
- </para>
- </listitem>
- </itemizedlist>
- </para>
<para>
The syntax of the <command>CREATE FUNCTION</command> command requires
@@ -205,13 +177,13 @@ SELECT * FROM perl_row();
<para>
PL/Perl functions can also return sets of either scalar or
- composite types. In general, you'll want to return rows one at a
- time both to speed up startup time and to keep from queueing up
+ composite types. Usually you'll want to return rows one at a
+ time, both to speed up startup time and to keep from queueing up
the entire result set in memory. You can do this with
<function>return_next</function> as illustrated below. Note that
after the last <function>return_next</function>, you must put
- either <literal>return;</literal> or (better) <literal>return
- undef;</literal>
+ either <literal>return</literal> or (better) <literal>return
+ undef</literal>.
<programlisting>
CREATE OR REPLACE FUNCTION perl_set_int(int)
@@ -237,7 +209,7 @@ $$ LANGUAGE plperl;
contains either scalars, references to arrays, or references to
hashes for simple types, array types, and composite types,
respectively. Here are some simple examples of returning the entire
- result set as a reference:
+ result set as an array reference:
<programlisting>
CREATE OR REPLACE FUNCTION perl_set_int(int) RETURNS SETOF INTEGER AS $$
@@ -267,6 +239,27 @@ SELECT * FROM perl_set();
it is a hazard if you declare a <application>PL/Perl</> function
as returning a domain type.
</para>
+
+ <para>
+ If you wish to use the <literal>strict</> pragma with your code,
+ the easiest way to do so is to <command>SET</>
+ <literal>plperl.use_strict</literal> to true. This parameter affects
+ subsequent compilations of <application>PL/Perl</> functions, but not
+ functions already compiled in the current session. To set the
+ parameter before <application>PL/Perl</> has been loaded, it is
+ necessary to have added <quote><literal>plperl</></> to the <xref
+ linkend="guc-custom-variable-classes"> list in
+ <filename>postgresql.conf</filename>.
+ </para>
+
+ <para>
+ Another way to use the <literal>strict</> pragma is to just put
+<programlisting>
+use strict;
+</programlisting>
+ in the function body. But this only works for <application>PL/PerlU</>
+ functions, since <literal>use</> is not a trusted operation.
+ </para>
</sect1>
<sect1 id="plperl-database">
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index a699e0096b2..320f1bfb8e8 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.347 2005/08/22 17:34:56 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.348 2005/08/24 18:56:07 tgl Exp $
-->
<chapter Id="runtime">
@@ -4382,10 +4382,10 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
when using custom variables:
<programlisting>
-custom_variable_classes = 'plr,pljava'
+custom_variable_classes = 'plr,plperl'
plr.path = '/usr/lib/R'
-pljava.foo = 1
-plruby.bar = true # generates error, unknown class name
+plperl.use_strict = true
+plruby.use_strict = true # generates error: unknown class name
</programlisting>
</para>
</sect2>