Обсуждение: Problem enabling pltcl
I have configured, built, and installed ProsgreSQL 6.5.1 using: --with-tcl and --with-tkconfig=<dir> As far as I have looked, everything was built and installed without a hitch. The pltcl library is in the right location, and /etc/ld.so.conf lists that directory. When I define a function using pltcl I get the following: ERROR: Unrecognized language specified in a CREATE FUNCTION: 'pltcl'. Recognized languages are sql, C, internal andthe created procedural languages. The docs say that pltcl is enabled if it is built with the TCL option. What am I missing? Thanks -- Patrick Logan patrickdlogan@home.com
Patrick Logan wrote: > ERROR: Unrecognized language specified in a CREATE FUNCTION: > 'pltcl'. Recognized languages are sql, C, internal and the > created procedural languages. > > The docs say that pltcl is enabled if it is built with the TCL > option. What am I missing? CREATE LANGUAGE (command line utility 'createlang'). See the regression test shell script (src/test/regress/regress.sh) for an example using plpgsql. The PL's are not created and installed by default, apparently. Lamar Owen WGCR Internet Radio
Lamar Owen <lamar.owen@wgcr.org> wrote: : Patrick Logan wrote: :> ERROR: Unrecognized language specified in a CREATE FUNCTION: :> 'pltcl'. Recognized languages are sql, C, internal and the :> created procedural languages. :> :> The docs say that pltcl is enabled if it is built with the TCL :> option. What am I missing? : CREATE LANGUAGE (command line utility 'createlang'). See the regression : test shell script (src/test/regress/regress.sh) for an example using : plpgsql. The PL's are not created and installed by default, apparently. Thanks. I also had to create the handler function as per the documentation for creating new procedural language interfaces. Boy, the documentation sure read to me like all that was supposed to be done automatically by the Makefile when configured for pltcl. Not a big deal, but it wasn't clear to me this had to be done for each database created. Is this a bug in the documentation? -- Patrick Logan patrickdlogan@home.com
Patrick Logan <patrick@c837917-a.potlnd1.or.home.com> writes: > : CREATE LANGUAGE (command line utility 'createlang'). See the regression > : test shell script (src/test/regress/regress.sh) for an example using > : plpgsql. The PL's are not created and installed by default, apparently. > Boy, the documentation sure read to me like all that was supposed to > be done automatically by the Makefile when configured for pltcl. > Not a big deal, but it wasn't clear to me this had to be done for each > database created. Is this a bug in the documentation? Probably. You should be able to just use the createlang utility without worrying about the details, but I don't think that the install process ought to do it for you. The procedural languages are supposed to be installable on a per-database basis, in case you want them in some databases and not others. You *can* do a one-time install of a language for a whole installation, by installing the language into template1 before you create any working databases --- this works because "create database" clones whatever is in template1. (I believe that holds for anything you stick in template1, BTW, not just languages.) But if the install process were to install pltcl into template1 just because you had chosen to build pltcl, then you'd lose the option of only having it in some of your databases. Bottom line: I think the install process is correct as is, but the docs need to be updated to mention these considerations. regards, tom lane
> > Patrick Logan wrote: > > ERROR: Unrecognized language specified in a CREATE FUNCTION: > > 'pltcl'. Recognized languages are sql, C, internal and the > > created procedural languages. > > > > The docs say that pltcl is enabled if it is built with the TCL > > option. What am I missing? > > CREATE LANGUAGE (command line utility 'createlang'). See the regression > test shell script (src/test/regress/regress.sh) for an example using > plpgsql. The PL's are not created and installed by default, apparently. Yepp - it's a doc mistake because first I made it that way and we decided later not to install by default into template1 and provide createlang instead. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #========================================= wieck@debis.com (Jan Wieck) #
Tom Lane wrote: > But if the install process were to install pltcl into template1 just > because you had chosen to build pltcl, then you'd lose the option of > only having it in some of your databases. You still have that option even if it is installed in template1. But you must do it the other way round and use destroydb on the databases where you don't want it :-) > Bottom line: I think the install process is correct as is, but the docs > need to be updated to mention these considerations. The docs where right for a short time during v6.5 development. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #========================================= wieck@debis.com (Jan Wieck) #
> Bottom line: I think the install process is correct as is, but the docs > need to be updated to mention these considerations. Any takers? Look in doc/src/sgml/*.sgml for the doc sources; usually grepping for a phrase is enough to figure out which source file you need to change. - Thomas -- Thomas Lockhart lockhart@alumni.caltech.edu South Pasadena, California