]> granicus.if.org Git - postgresql/commitdiff
Attached patch for unconditional enabling of pltcl-unknown support.
authorBruce Momjian <bruce@momjian.us>
Sat, 13 Oct 2001 04:23:50 +0000 (04:23 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 13 Oct 2001 04:23:50 +0000 (04:23 +0000)
Enabling this feature adds very light overhead of 1 select from pg_class on
first using of pl/tcl in backend if unknown suppport is really unused.
But pl/tcl with this support has very improved functionality.

Patch includes changes to documentation.

configure.in
doc/src/sgml/installation.sgml
doc/src/sgml/pltcl.sgml
src/include/pg_config.h.in
src/pl/tcl/Makefile
src/pl/tcl/pltcl.c

index 3a25d33ad64ca2e6966dce19130ea4afc9dc588a..2c7b9b71411af714ee06a095fcd9c680ab7b1e54 100644 (file)
@@ -382,22 +382,6 @@ PGAC_ARG_REQ(with, tclconfig, [  --with-tclconfig=DIR    tclConfig.sh and tkConf
 
 PGAC_ARG_REQ(with, tkconfig,  [  --with-tkconfig=DIR     tkConfig.sh is in DIR])
 
-
-#
-# If Tcl is enabled (above) then check for pltcl_unknown_support
-#
-AC_MSG_CHECKING([whether to build with PL/Tcl unknown support])
-if test "$with_tcl" = yes; then
-  PGAC_ARG_BOOL(enable, pltcl-unknown, no,
-                [  --enable-pltcl-unknown  build PL/Tcl unknown support (if Tcl is enabled)],
-                [AC_DEFINE([ENABLE_PLTCL_UNKNOWN])])
-else
-  enable_pltcl_unknown=no
-fi
-AC_MSG_RESULT([$enable_pltcl_unknown])
-AC_SUBST([enable_pltcl_unknown])
-
-
 #
 # Optionally build Perl modules (Pg.pm and PL/Perl)
 #
index aaf2c0e4c024603ce265b0e750c1e7c0979378e7..4bb0fcca3ff1c98f8ae14f58f2feb0987ec53e40 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.61 2001/10/09 22:32:32 petere Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.62 2001/10/13 04:23:50 momjian Exp $ -->
 
 <chapter id="installation">
  <title><![%standalone-include[<productname>PostgreSQL</>]]>
@@ -683,15 +683,6 @@ su - postgres
        </listitem>
       </varlistentry>
 
-      <varlistentry>
-       <term><option>--enable-pltcl-unknown</option></term>
-       <listitem>
-        <para>
-         Enables enables PL/Tcl unknown support.
-        </para>
-       </listitem>
-      </varlistentry>
-
       <varlistentry>
        <term><option>--enable-odbc</option></term>
        <listitem>
index 0c2e541e3fae1050657893bacd46964ff01994ba..4f3f42a0274c606636ec53a16e8e12c21413f592 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/pltcl.sgml,v 2.14 2001/09/13 15:55:23 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/pltcl.sgml,v 2.15 2001/10/13 04:23:50 momjian Exp $
 -->
 
  <chapter id="pltcl">
@@ -513,11 +513,13 @@ CREATE FUNCTION t1_count(int4, int4) RETURNS int4 AS '
       </listitem>
      </varlistentry>
 
-     <varlistentry>
-      <term>
-       Modules and the <function>unknown</> command
-      </term>
-      <listitem>
+
+    </variablelist>
+
+   </sect2>
+
+   <sect2>
+       <title> Modules and the <function>unknown</> command</title>
        <para>
        PL/Tcl has a special support for things often used. It
        recognizes two magic tables, <literal>pltcl_modules</> and
@@ -526,20 +528,15 @@ CREATE FUNCTION t1_count(int4, int4) RETURNS int4 AS '
        creation. Whenever an unknown Tcl procedure is called, the
        unknown proc is asked to check if the procedure is defined in
        one of the modules. If this is true, the module is loaded on
-       demand.  To enable this behavior, the
-       <productname>PostgreSQL</> must be configured with the option
-       <option>--enable-pltcl-unknown</option>.
+       demand.
        </para>
        <para>
-       There are support scripts to maintain these tables in the modules
-       subdirectory of the PL/Tcl source including the source for the
-       unknown module that must get installed initially.
+       There are support scripts to maintain these tables:
+       <command>pltcl_loadmod</>,<command>pltcl_listmod</>,
+       <command>pltcl_delmod</> and source for the
+       unknown module <filename>share/unknown.pltcl</> that must be loaded
+       into database initially for getting unknown support.
        </para>
-      </listitem>
-     </varlistentry>
-
-    </variablelist>
-
    </sect2>
 
   </sect1>
index 8c3f4576431d0d2753f9a4bb3b3754f5806210d0..ecb16686b3149c7ffa1bdaaee4f5e1bdcb03196e 100644 (file)
@@ -8,7 +8,7 @@
  * or in pg_config.h afterwards.  Of course, if you edit pg_config.h, then your
  * changes will be overwritten the next time you run configure.
  *
- * $Id: pg_config.h.in,v 1.8 2001/10/01 15:33:31 momjian Exp $
+ * $Id: pg_config.h.in,v 1.9 2001/10/13 04:23:50 momjian Exp $
  */
 
 #ifndef PG_CONFIG_H
@@ -86,9 +86,6 @@
  */
 #undef DEF_MAXBACKENDS
 
-/* --enable-pltcl-unknown */
-#undef ENABLE_PLTCL_UNKNOWN
-
 /* --enable-nls */
 #undef ENABLE_NLS
 
index c52ed2693fe9acd156aa2ff30e08d05cdc601b38..520b2c7aa04c7b2710806665a4f56c02f5ef0288 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Makefile for the pltcl shared object
 #
-# $Header: /cvsroot/pgsql/src/pl/tcl/Makefile,v 1.34 2001/09/16 16:11:11 petere Exp $
+# $Header: /cvsroot/pgsql/src/pl/tcl/Makefile,v 1.35 2001/10/13 04:23:50 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -86,29 +86,21 @@ endif
 ifeq ($(TCL_SHARED_BUILD), 1)
 
 all: $(INFILES)
-ifeq ($(enable_pltcl_unknown), yes)
        $(MAKE) -C modules $@
-endif
 
 pltcl$(DLSUFFIX): pltcl.o
 
 install: all installdirs
        $(INSTALL_SHLIB) $(DLOBJS) $(DESTDIR)$(pkglibdir)/$(DLOBJS)
-ifeq ($(enable_pltcl_unknown), yes)
        $(MAKE) -C modules $@
-endif
 
 installdirs:
        $(mkinstalldirs) $(DESTDIR)$(pkglibdir)
-ifeq ($(enable_pltcl_unknown), yes)
        $(MAKE) -C modules $@
-endif
 
 uninstall:
        rm -f $(DESTDIR)$(pkglibdir)/$(DLOBJS)
-ifeq ($(enable_pltcl_unknown), yes)
        $(MAKE) -C modules $@
-endif
 
 else # TCL_SHARED_BUILD = 0
 
@@ -124,6 +116,4 @@ Makefile.tcldefs: mkMakefile.tcldefs.sh
 
 clean distclean maintainer-clean:
        rm -f $(INFILES) pltcl.o Makefile.tcldefs
-ifeq ($(enable_pltcl_unknown), yes)
        $(MAKE) -C modules $@
-endif
index 38d7d4345010ba80c42d76c6315d8cc79cfb56e2..af3af23cd0e3e1ac2578983da3c2ee0d36e6b28c 100644 (file)
@@ -31,7 +31,7 @@
  *       ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.43 2001/10/06 23:21:45 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.44 2001/10/13 04:23:50 momjian Exp $
  *
  **********************************************************************/
 
@@ -146,9 +146,7 @@ static FunctionCallInfo pltcl_current_fcinfo = NULL;
 static void pltcl_init_all(void);
 static void pltcl_init_interp(Tcl_Interp *interp);
 
-#ifdef ENABLE_PLTCL_UNKNOWN
 static void pltcl_init_load_unknown(Tcl_Interp *interp);
-#endif
 
 Datum          pltcl_call_handler(PG_FUNCTION_ARGS);
 Datum          pltclu_call_handler(PG_FUNCTION_ARGS);
@@ -293,7 +291,6 @@ pltcl_init_interp(Tcl_Interp *interp)
        Tcl_CreateCommand(interp, "spi_lastoid",
                                          pltcl_SPI_lastoid, NULL, NULL);
                                          
-#ifdef ENABLE_PLTCL_UNKNOWN
        /************************************************************
         * Try to load the unknown procedure from pltcl_modules
         ************************************************************/
@@ -302,12 +299,9 @@ pltcl_init_interp(Tcl_Interp *interp)
        pltcl_init_load_unknown(interp);
        if (SPI_finish() != SPI_OK_FINISH)
                elog(ERROR, "pltcl_init_interp(): SPI_finish failed");
-#endif  /* ENABLE_PLTCL_UNKNOWN */
 }
 
 
-#ifdef ENABLE_PLTCL_UNKNOWN
-
 /**********************************************************************
  * pltcl_init_load_unknown()   - Load the unknown procedure from
  *                               table pltcl_modules (if it exists)
@@ -380,8 +374,6 @@ pltcl_init_load_unknown(Tcl_Interp *interp)
        Tcl_DStringFree(&unknown_src);
 }
 
-#endif  /* ENABLE_PLTCL_UNKNOWN */
-
 
 /**********************************************************************
  * pltcl_call_handler          - This is the only visible function