Re: HOWTO caching data across function calls: temporary tables, cursor?

From: Ivan Sergio Borgonovo <mail(at)webthatworks(dot)it>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: HOWTO caching data across function calls: temporary tables, cursor?
Date: 2008-04-01 11:32:04
Message-ID: 20080401133204.77e7b63d@webthatworks.it
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, 1 Apr 2008 12:01:21 +0200
"Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at> wrote:

> Ivan Sergio Borgonovo wrote:
> > I've a bunch of functions that operates on the basket (a smaller
> > list of products with their attributes).
> >
> > So many functions ends up in repeating over and over a select
> > similar to:
> >
> > select [list of columns] from baskets b
> > join basket_items bi on b.basket_=bi.basket_id
> > join items i on i.item_id=bi.item_id
> > join item_attributes a a.item_id=i.item_id
> > where b.basket_id=$1
> >
> > It would be nice if I could avoid to execute this query over and
> > over. I'd have to find a way to pass this data across functions.
>
> You could pass arrays containing the selected rows between
> functions. Something like:
>
> CREATE TYPE basket_row AS(id integer, name text, count
> integer, ...); CREATE FUNCTION sell (items basket_row[]) RETURNS
> boolean LANGUAGE plpgsql AS $$........$$;

It doesn't look as I can do the same stuff with array and
tables/records.

Many times I use joint or aggregates on the basket.

Is there any good tutorial/example on how to use cursors or temp
tables in such circumstance?

--
Ivan Sergio Borgonovo
http://www.webthatworks.it

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message rupesh 2008-04-01 11:56:06 BUG #4078: ERROR: operator does not exist: numeric = character varying
Previous Message x asasaxax 2008-04-01 11:26:44 Re: Primary Key with serial the solution?