Plperl caching prepared queries and cleanup

From: Anupama <anupama(dot)mr(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Plperl caching prepared queries and cleanup
Date: 2010-12-16 08:57:15
Message-ID: 4D09D46B.4090300@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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 OR
Will it lead to any memory leaks ?

Thanks
Anupama.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Anupama Ramaswamy 2010-12-16 09:54:29 plperl - caching prepared queries and cleanup
Previous Message Andrus Moor 2010-12-16 08:16:47 Re: How to restore from backup to 8.4.3 server using 9.0 dump/restore