plperl - caching prepared queries and cleanup

Started by Anupama Ramaswamyover 15 years ago1 messagesgeneral
Jump to latest
#1Anupama Ramaswamy
anumr_0123@yahoo.com

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.