Skip site navigation (1) Skip section navigation (2)

Re: plpgsql documentation

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Chris Browne <cbbrowne(at)acm(dot)org>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: plpgsql documentation
Date: 2006-05-30 11:40:21
Message-ID: 200605301140.k4UBeL921070@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-patches
Patch applied.  Thanks.  Your documentation changes can be viewed in
five minutes using links on the developer's page,
http://www.postgresql.org/developer/testing.


---------------------------------------------------------------------------


Chris Browne wrote:
> An article at WebProNews quoted from the PG docs as to the merits of
> stored procedures.  I have added a bit more material on their merits,
> as well as making a few changes to improve the introductions to
> PL/Perl and PL/Tcl.
> 
> Index: plperl.sgml
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/doc/src/sgml/plperl.sgml,v
> retrieving revision 2.52
> diff -c -u -r2.52 plperl.sgml
> --- plperl.sgml	10 Mar 2006 19:10:48 -0000	2.52
> +++ plperl.sgml	25 May 2006 22:38:45 -0000
> @@ -17,6 +17,12 @@
>     <ulink url="http://www.perl.com">Perl programming language</ulink>.
>    </para>
>  
> +  <para> The usual advantage to using PL/Perl is that this allows use,
> +   within stored functions, of the manyfold <quote>string
> +    munging</quote> operators and functions available for Perl.  Parsing
> +   complex strings may be be easier using Perl than it is with the
> +   string functions and control structures provided in PL/pgsql.</para>
> +  
>    <para>
>     To install PL/Perl in a particular database, use
>     <literal>createlang plperl <replaceable>dbname</></literal>.
> Index: plpgsql.sgml
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/doc/src/sgml/plpgsql.sgml,v
> retrieving revision 1.88
> diff -c -u -r1.88 plpgsql.sgml
> --- plpgsql.sgml	10 Mar 2006 19:10:48 -0000	1.88
> +++ plpgsql.sgml	25 May 2006 22:38:46 -0000
> @@ -155,21 +155,36 @@
>  
>      <para>
>       That means that your client application must send each query to
> -     the database server, wait for it to be processed, receive the
> -     results, do some computation, then send other queries to the
> -     server. All this incurs interprocess communication and may also
> -     incur network overhead if your client is on a different machine
> -     than the database server.
> +     the database server, wait for it to be processed, receive and
> +     process the results, do some computation, then send further
> +     queries to the server.  All this incurs interprocess
> +     communication and will also incur network overhead if your client
> +     is on a different machine than the database server.
>      </para>
>  
>      <para>
> -     With <application>PL/pgSQL</application> you can group a block of computation and a
> -     series of queries <emphasis>inside</emphasis> the
> -     database server, thus having the power of a procedural
> -     language and the ease of use of SQL, but saving lots of
> -     time because you don't have the whole client/server
> -     communication overhead. This can make for a
> -     considerable performance increase.
> +     With <application>PL/pgSQL</application> you can group a block of
> +     computation and a series of queries <emphasis>inside</emphasis>
> +     the database server, thus having the power of a procedural
> +     language and the ease of use of SQL, but with considerable
> +     savings because you don't have the whole client/server
> +     communication overhead.
> +    </para>
> +    <itemizedlist>
> +
> +     <listitem><para> Elimination of additional round trips between
> +     client and server </para></listitem>
> +
> +     <listitem><para> Intermediate results that the client does not
> +     need do not need to be marshalled or transferred between server
> +     and client </para></listitem>
> +
> +     <listitem><para> There is no need for additional rounds of query
> +     parsing </para></listitem>
> +
> +    </itemizedlist>
> +    <para> This can allow for a considerable performance increase as
> +    compared to an application that does not use stored functions.
>      </para>
>  
>      <para>
> Index: pltcl.sgml
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/doc/src/sgml/pltcl.sgml,v
> retrieving revision 2.39
> diff -c -u -r2.39 pltcl.sgml
> --- pltcl.sgml	10 Mar 2006 19:10:48 -0000	2.39
> +++ pltcl.sgml	25 May 2006 22:38:46 -0000
> @@ -25,22 +25,27 @@
>     <title>Overview</title>
>  
>     <para>
> -    PL/Tcl offers most of the capabilities a function
> -    writer has in the C language, except for some restrictions.
> +    PL/Tcl offers most of the capabilities a function writer has in
> +    the C language, with a few restrictions, and with the addition of
> +    the powerful string processing libraries that are available for
> +    Tcl.
>     </para>
>     <para>
> -    The good restriction is that everything is executed in a safe
> -    Tcl interpreter. In addition to the limited command set of safe Tcl, only
> -    a few commands are available to access the database via SPI and to raise
> -    messages via <function>elog()</>. There is no way to access internals of the
> -    database server or to gain OS-level access under the permissions of the
> -    <productname>PostgreSQL</productname> server process, as a C function can do.
> -    Thus, any unprivileged database user may be
> -    permitted to use this language.
> +    One compelling <emphasis>good</emphasis> restriction is that
> +    everything is executed from within the safety of the context of a
> +    Tcl interpreter.  In addition to the limited command set of safe
> +    Tcl, only a few commands are available to access the database via
> +    SPI and to raise messages via <function>elog()</>.  PL/Tcl
> +    provides no way to access internals of the database server or to
> +    gain OS-level access under the permissions of the
> +    <productname>PostgreSQL</productname> server process, as a C
> +    function can do.  Thus, unprivileged database users may be trusted
> +    to use this language; it does not give them unlimited authority.
>     </para>
>     <para>
> -    The other, implementation restriction is that Tcl functions cannot
> -    be used to create input/output functions for new data types.
> +    The other notable implementation restriction is that Tcl functions
> +    may not be used to create input/output functions for new data
> +    types.
>     </para>
>     <para>
>      Sometimes it is desirable to write Tcl functions that are not restricted
> @@ -55,12 +60,12 @@
>      a user logged in as the database administrator.
>     </para>
>     <para>
> -    The shared object for the <application>PL/Tcl</> and <application>PL/TclU</> call handlers is
> -    automatically built and installed in the
> -    <productname>PostgreSQL</productname> 
> -    library directory if Tcl support is specified
> -    in the configuration step of the installation procedure.  To install
> -    <application>PL/Tcl</> and/or <application>PL/TclU</> in a particular database, use the
> +    The shared object code for the <application>PL/Tcl</> and
> +    <application>PL/TclU</> call handlers is automatically built and
> +    installed in the <productname>PostgreSQL</productname> library
> +    directory if Tcl support is specified in the configuration step of
> +    the installation procedure.  To install <application>PL/Tcl</>
> +    and/or <application>PL/TclU</> in a particular database, use the
>      <command>createlang</command> program, for example
>      <literal>createlang pltcl <replaceable>dbname</></literal> or
>      <literal>createlang pltclu <replaceable>dbname</></literal>.
> 
> -- 
> (format nil "~S(at)~S" "cbbrowne" "acm.org")
> http://www3.sympatico.ca/cbbrowne/advocacy.html
> If at first you don't succeed, then you didn't do it right!
> If at first you don't succeed, then skydiving definitely isn't for you. 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
> 

-- 
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

In response to

pgsql-patches by date

Next:From: Bruce MomjianDate: 2006-05-30 11:55:01
Subject: Re: small doc patch for regexp_replace
Previous:From: Martijn van OosterhoutDate: 2006-05-30 11:03:17
Subject: Re: [PATCH] Add support for GnuTLS

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group