Re: Pl/tcl auto-load problem - Mailing list pgsql-general
From | Craig Addleman |
---|---|
Subject | Re: Pl/tcl auto-load problem |
Date | |
Msg-id | 21F455F95EFDD411A3E200508BB22B806EB08C@sharechive01.sharechive.com Whole thread Raw |
In response to | Pl/tcl auto-load problem (Craig Addleman <CraigA@SHARECHIVE.com>) |
List | pgsql-general |
Thanks for the response Jan. I was *appending* my code to the unknown proc; when I *inserted* it, I can can access variables via upvar. I'm not sure this is the right way to do it though: proc unknown {proname args} { upvar #0 __appver p_appver upvar #0 __PLTcl_unknown_support_plan_modname p_mod upvar #0 __PLTcl_unknown_support_plan_modsrc p_src spi_exec [spi_prepare "SELECT appver FROM t_mach_global"] set p_appver $appver ...unknown.pltcl continues... } At this point I can access __appver in another module and subsequently I can access it from a pltcl stored procedure. I'd like to access __appver directly from the stored procedure. Also, I don't think this is "auto-loading", which is my objective: auto-load several widely-used variables and query plans for our application. I am trying to minimize table access for a performance gain. Any help will be greatly appreciated! Craig Addleman DBA www.sharechive.com -----Original Message----- From: Jan Wieck [mailto:JanWieck@Yahoo.com] Sent: Friday, January 30, 2004 9:39 AM To: Craig Addleman Cc: pgsql-general@postgresql.org Subject: Re: [GENERAL] Pl/tcl auto-load problem It seems that something you added to the unknown handler triggers it to be called again. Might be that spi_exec isn't defined at the time that script is evaluated. Jan Craig Addleman wrote: > How do I use the pltcu unknown module to auto-load a return value from a > select query? I'm trying to boost performance in our databases by > preloading > certain frequently-used variables. Ultimately I'd like to auto-load > prepared queries this way too. > > I've figured out how to use pltcu to auto-load a global variable and access > that variable by appending the following lines to unknown.pltcl: > global var1 > set var1 abc > Then, in a pltcu procdure, I can access it: > create function get_var1() returns varchar as ' > global var1 > return $var1 > ' language 'pltcu'; > (returns abc) > > What I'd like to do is something like the following in unknown.pltcl: > global ret > spi_exec "select col1 from tablename where col2 = ''xyz''" > set ret $col1 > and return the global $ret in pltcu functions. > > When I try use spi_exec in unknown.pltcu, I get an error when loading the > module: > New/updated unknown: too many nested calls to Tcl_EvalObj (infinite > loop?) > Abort > > I've tried a few other variations, all without success. Any suggestions? > (I'm > using pltcu because I need a trigger function that can write to system > files, and I don't think that can be done with plperl or plpython. > Performance > boosting through hardware upgrades is not a viable option because the > databases are on tablets running Linux with 245 MB ram and damnably limited > battery life.) > > Craig Addleman > DBA > www.sharechive.com > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #================================================== JanWieck@Yahoo.com #
pgsql-general by date: