Re: Caching/Indexing Function Output - Mailing list pgsql-general

From Mike
Subject Re: Caching/Indexing Function Output
Date
Msg-id 1ce701c4e9a5$b4755300$0201000a@ehj9vn81i9b95wa
Whole thread Raw
In response to Caching/Indexing Function Output  ("Mike" <mike@mrhost.ca>)
List pgsql-general
> On Thu, Dec 23, 2004 at 01:22:42PM -0800, Mike wrote:
>
> > My question is- is there anyway, since a call to sp_host('10.0.0.1')
will
> > always
> > return the same value (the primary key/sequence value from the
ip_addresses
> > table), to cache/index that value somehow, so anytime I ever call that
same
> > function, with the same argument, it returns a cached/indexed value?
>
> Some procedural languages (PL/Tcl, PL/Python; also PL/Perl in 8.0)
> have global data that you could use as a cache.  The function would
> still be called each time, but you could at least use the cache to
> save the cost of a database query.

All the functions I wrote are in C-

So yeah, I guess I could have a global key/value hash that I keep up from
inside the
functions, and if the ip address exists, then return the value, otherwise
actually
execute the function.

I could probably use something like libmm if I didn't have access to global
vars, and
store them in shared memory- I was just hoping to have something that
postgres
would manage automagically for me. :)

It would also be cool if the planner could decide which to use- ie it would
be
considered cheaper to use the cache then call the function if the ip address
was
listed.

Thanks-

Mike


pgsql-general by date:

Previous
From: Michael Fuhr
Date:
Subject: Re: Caching/Indexing Function Output
Next
From: Vinita.Bansal@trilogy.com
Date:
Subject: default index for primary key of a table