pg.ddx.io  pgsql-admin@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Leon Starr <leon_starr@modelint.com>
To: pgsql-admin@postgresql.org
Subject: creating and accessing temp table data inside a non-committed transaction
Date: Sun, 30 Jan 2011 20:16:39 -0800
Message-ID: <FC69D86A-2486-4967-84C5-1E97BDC12E80@modelint.com> (raw)

Plpgsql experts:

I've got a situation and am wondering if temp tables are the accepted solution.  (setting the temp
parameter on create table)  I've never worked with them and a colleague just brought them to my
attention as a way to solve a problem I've encountered.  He's not sure about this, so I am hoping
you guys can point me in the right direction.

The problem is that I've got function that takes some parameters, for example:

set constraints all deferred;
select my_func( x, y, z );
commit;

The problem is that the values x, y and z are inserted into a permanent table Q early in the processing of
my_func.  Then, several calls down in deep_func(), still inside my_func, I need to access the value of x.  I
tried to do a select on Q to get the value, but I came up NULL!  Guessing that is because the transaction
hasn't committed yet since I am still inside my_func.  Right?

So how do I get the value of parameter x?  Possible solutions:

	1) just pass x all the way down the calling path so that deep_func( x )  can just access it as a
		parameter value.  Pain in the butt because none of the intermediate calls need x.

	2) insert the value of a into a temp table and the do a select on that within deep_func().
		But will I stull come up NULL, or do temp tables work differently?

	3) some other technique if I am thinking about this totally the wrong way!

As always, help clearing my confusion muchly appreciated!  (obviously I can just do a bunch of experiments on my
own, but expert insight is always nice to have)

- Leon







view thread (4+ messages)  latest in thread

Message-ID: <FC69D86A-2486-4967-84C5-1E97BDC12E80@modelint.com>
Permalink:  ../FC69D86A-2486-4967-84C5-1E97BDC12E80@modelint.com/
Also on:    postgresql.org/message-id/FC69D86A-2486-4967-84C5-1E97BDC12E80@modelint.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-admin@postgresql.org
  Cc: leon_starr@modelint.com
  Subject: Re: creating and accessing temp table data inside a non-committed transaction
  In-Reply-To: <FC69D86A-2486-4967-84C5-1E97BDC12E80@modelint.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