Hi, 

I am trying to use plperl for one of my triggers. The trigger executes a  
query. 

So I am preparing the query and caching it as below: 

       if (!defined $_SHARED{'base_table_query'}) { 

           my $base_columns_query = "select column_name from 
                                   information_schema.columns where  
table_schema = '$_TD->{table_schema}' 

                                   and table_name = \$1"; 
           $_SHARED{'base_table_query'} =  spi_prepare($base_columns_query, 
'text'); 

       } 

       $result = spi_exec_prepared($_SHARED{'base_table_query'},  
$base_table_name); 


Now, in a batch update (involving 1000s of records), the trigger itself  fires 
for each update. 

I will get maximum performance benefit, if I can keep the prepared query  in 
the 
global cache across trigger invocation. 


In effect, there is no logical point to call spi_freeplan() 

Will the plan be freed when the db session / connection closes
Will it lead to any memory leaks (typically my db connections are open for long 
time ) ? 


Thanks 
Anupama. 


      

-- 
Sent via pgsql-general mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to