From 95f202c0212f87ec2610b20643cb74c310f54952 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 24 Aug 2005 18:56:07 +0000 Subject: [PATCH] Adjust description of use_strict parameter. Some other minor editorial cleanup. --- doc/src/sgml/plperl.sgml | 71 +++++++++++++++++++++-------------------------- doc/src/sgml/runtime.sgml | 8 +++--- 2 files changed, 36 insertions(+), 43 deletions(-) diff --git a/doc/src/sgml/plperl.sgml b/doc/src/sgml/plperl.sgml index 2702508880..e7cdd2eb3c 100644 --- a/doc/src/sgml/plperl.sgml +++ b/doc/src/sgml/plperl.sgml @@ -1,5 +1,5 @@ @@ -46,46 +46,18 @@ $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.43 2005/08/12 21:42:53 momjian E To create a function in the PL/Perl language, use the standard - 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: CREATE FUNCTION funcname (argument-types) RETURNS return-type AS $$ # PL/Perl function body $$ LANGUAGE plperl; - 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. - - As with ordinary Perl code, you should use the strict pragma, - which you can do in one of two ways: - - - - - Globally, by adding plperl to the list of and setting - plperl.use_strict to true in - postgresql.conf - - - - - One function at a time, by using PL/PerlU (you must be database - superuser to do this) and including - - -use strict; - - - in the function body. - - - - The syntax of the CREATE FUNCTION command requires @@ -205,13 +177,13 @@ SELECT * FROM perl_row(); 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 return_next as illustrated below. Note that after the last return_next, you must put - either return; or (better) return - undef; + either return or (better) return + undef. 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: 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 PL/Perl function as returning a domain type. + + + If you wish to use the strict pragma with your code, + the easiest way to do so is to SET + plperl.use_strict to true. This parameter affects + subsequent compilations of PL/Perl functions, but not + functions already compiled in the current session. To set the + parameter before PL/Perl has been loaded, it is + necessary to have added plperl to the list in + postgresql.conf. + + + + Another way to use the strict pragma is to just put + +use strict; + + in the function body. But this only works for PL/PerlU + functions, since use is not a trusted operation. + diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index a699e0096b..320f1bfb8e 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ @@ -4382,10 +4382,10 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' when using custom variables: -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 -- 2.11.0