
Hi,

I'm having serious problems with postgresql and TCL as a procedural language.

I did a clean compilantion and install --with-tcl.
I did an initdb, created the language and a demo function found on the site.

This is the result:

a=> create function pltcl_call_handler() returns opaque
a->         as '/usr/postgres/lib/pltcl.so'
a->         language 'C';
CREATE
a=>
a=> create trusted procedural language 'pltcl'
a->         handler pltcl_call_handler
a->         lancompiler 'PL/Tcl';
CREATE
a=> CREATE FUNCTION tcl_max (int4, int4) RETURNS int4 AS '
a'>         if {$1 > $2} {return $1}
a'>         return $2
a'>     ' LANGUAGE 'pltcl';
CREATE
a=> select tcl_max(3,7);
ERROR:  Load of file /usr/postgres/lib/pltcl.so failed: /usr/lib/libtcl8.0.so:
undefined symbol: stat

a=> select tcl_max(3,7);
pqReadData() -- backend closed the channel unexpectedly.
        This probably means the backend terminated abnormally before or while
processing the request.
We have lost the connection to the backend, so further processing is
impossible.  Terminating.
----------

The same happens on two other 6.4.0 - 6.4.2 installations. All machines are
Intel based RedHat 5.2 Linuxes with kernel 2.0.36, tcl-8.0.3.
I wasn't able to test this with the current snapshot because I hadn't been able
to initdb.

Any guess ?

Bye!

-- 
 Daniele

-------------------------------------------------------------------------------
 Daniele Orlandi - Utility Line Italia - http://www.orlandi.com
 Via Mezzera 29/A - 20030 - Seveso (MI) - Italy
-------------------------------------------------------------------------------

Wed, 03 Feb 1999 00:57:16 +0100
Daniele Orlandi <daniele@orlandi.com>
PL/TCL bug (?)
Daniele Orlandi wrote:

> Hi,
>
> I'm having serious problems with postgresql and TCL as a procedural language.
>
> I did a clean compilantion and install --with-tcl.
> I did an initdb, created the language and a demo function found on the site.
>
> This is the result:
>
> a=> create function pltcl_call_handler() returns opaque
> a->         as '/usr/postgres/lib/pltcl.so'
> a->         language 'C';
> CREATE
> a=>
> a=> create trusted procedural language 'pltcl'
> a->         handler pltcl_call_handler
> a->         lancompiler 'PL/Tcl';
> CREATE
> a=> CREATE FUNCTION tcl_max (int4, int4) RETURNS int4 AS '
> a'>         if {$1 > $2} {return $1}
> a'>         return $2
> a'>     ' LANGUAGE 'pltcl';
> CREATE

    Anything correct so far.

> a=> select tcl_max(3,7);
> ERROR:  Load of file /usr/postgres/lib/pltcl.so failed: /usr/lib/libtcl8.0.so:
> undefined symbol: stat

    There's  something  wrong with your Tcl installation. The Tcl
    shared lib does not correctly  reference  the  library  where
    stat() is in. It was linked with a missing -l...

    You  might  try to link pltcl.so with the additional library.
    Try adding -lm -lc.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #



Wed, 3 Feb 1999 10:54:32 +0100 (MET)
jwieck@debis.com (Jan Wieck)
Re: [HACKERS] PL/TCL bug (?)