Re: I propose killing PL/Tcl's "modules" infrastructure

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
Cc: pgsql-hackers@postgreSQL.org, Jan Wieck <jan@wi3ck.info>
Date: 2017-02-25T18:44:48Z
Lists: pgsql-hackers
Andrew Dunstan <andrew.dunstan@2ndquadrant.com> writes:
> On 02/25/2017 01:14 PM, Tom Lane wrote:
>> Now, we could try to fix this bug, and add the regression test coverage
>> that the code clearly lacks, and upgrade the documentation about it from
>> its currently very sad state.  But I think the right answer is just to
>> remove the feature altogether.  It's evidently not being used, and it's
>> kind of insecure by design, and it would not be that hard for someone
>> to provide equivalent functionality entirely in userland if they really
>> wanted it.

> In PLv8 we added a parameter plv8.start_proc that names a parameterless
> function that's executed when plv8 is first called in each session. It
> can be used quite easily to implement something like a modules
> infrastructure - in fact I have used it to good effect for exactly that.
> Maybe something similar for pltcl would be a good thing.

Yeah, the only part that's even a bit hard to replicate in userland is
initializing the autoloading mechanism in each session.  It would be
cleaner to provide a feature similar to what you describe that could
be used for that purpose as well as others.  However, where does the
"parameterless function" come from?  Is it a regular PLv8 (or for this
purpose PL/Tcl) function expected to be present in pg_proc?

			regards, tom lane


Commits

  1. Invent start_proc parameters for PL/Tcl.

  2. Remove PL/Tcl's "module" facility.

  3. Remove all of the libpgtcl and pgtclsh files, including all references to