]> granicus.if.org Git - postgresql/commit
Invent start_proc parameters for PL/Tcl.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 7 Mar 2017 17:40:44 +0000 (12:40 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 7 Mar 2017 17:40:44 +0000 (12:40 -0500)
commit0d2b1f305dc78d536d80cfb4bb2ac4d7104453db
tree9533fac7832e9b7d5da31ac9f67cda972a584689
parent03cf2219346aa78ecd1b6d4501a7697692a43c62
Invent start_proc parameters for PL/Tcl.

Define GUCs pltcl.start_proc and pltclu.start_proc.  When set to a
nonempty value at the time a new Tcl interpreter is created, the
parameterless pltcl or pltclu function named by the GUC is called to
allow user-controlled initialization to occur within the interpreter.
This is modeled on plv8's start_proc parameter, and also has much in
common with plperl's on_init feature.  It allows users to fully
replace the "modules" feature that was removed in commit 817f2a586.

Since an initializer function could subvert later Tcl code in nearly
arbitrary ways, mark both GUCs as SUSET for now.  It would be nice
to find a way to relax that someday; but the corresponding GUCs in
plperl are also SUSET, and there's not been much complaint.

Discussion: https://postgr.es/m/22067.1488046447@sss.pgh.pa.us
doc/src/sgml/pltcl.sgml
src/pl/tcl/Makefile
src/pl/tcl/expected/pltcl_start_proc.out [new file with mode: 0644]
src/pl/tcl/pltcl.c
src/pl/tcl/sql/pltcl_start_proc.sql [new file with mode: 0644]