pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Heikki Linnakangas <heikki@enterprisedb.com>
To: chrisj <chrisj.wood@sympatico.ca>
Cc: pgsql-performance@postgresql.org
Subject: Re: using a stored proc that returns a result set in a complex SQL stmt
Date: Tue, 16 Oct 2007 16:22:48 +0100
Message-ID: <4714D748.6020801@enterprisedb.com> (raw)
In-Reply-To: <13216092.post@talk.nabble.com>
References: <13216092.post@talk.nabble.com>

chrisj wrote:
> I am trying to decide between using a temporary table or a stored proc that
> returns a result set to solve a fairly complex problem, and was wondering if
> Postres, when it sees a stored proc reference in a SQL, is smart enough to,
> behind the scenes, create a temporary table with the results of the stored
> proc such that the stored proc does not get executed multiple times within a
> single query execution??
> 
> Example: suppose I had a stored proc called SP_bob that returns a result set
> including the column store_no
> and I wrote the following query:
> 
> select * from Order_Line as X
> where not exists (select 1 from SP_bob(parm1, parm2) as Y where X.store_no =
> Y.store_no)
> 
> Can I rest assured that the stored proc would only run once, or could it run
> once for each row in Order_Line??

It depends on the exact query you're running. I think in the above
example, SP_bob would only be ran once. Function volatility affects the
planners decision as well (see
http://www.postgresql.org/docs/8.2/interactive/xfunc-volatility.html).

> The only reason I am going down this road is because of the difficulty of
> using temp tables ( i.e. needing to execute a SQL string).  Does anyone know
> if this requirement may be removed in the near future? 

I don't understand what requirement you're referring to.

-- 
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com



view thread (3+ messages)  latest in thread

Message-ID: <4714D748.6020801@enterprisedb.com>
Permalink:  ../4714D748.6020801@enterprisedb.com/
Also on:    postgresql.org/message-id/4714D748.6020801@enterprisedb.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: heikki@enterprisedb.com, chrisj.wood@sympatico.ca
  Subject: Re: using a stored proc that returns a result set in a complex SQL stmt
  In-Reply-To: <4714D748.6020801@enterprisedb.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox