Re: TYPE of TEMP table does not seem to get set - Mailing list pgsql-bugs

From Bill MacArthur
Subject Re: TYPE of TEMP table does not seem to get set
Date
Msg-id 4F8C810C.6000408@dhs-club.com
Whole thread Raw
In response to Re: TYPE of TEMP table does not seem to get set  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: TYPE of TEMP table does not seem to get set  (Bill MacArthur <webmaster@dhs-club.com>)
List pgsql-bugs
On 4/16/2012 4:11 PM, Tom Lane wrote:
> Bill MacArthur<webmaster@dhs-club.com>  writes:
>> I have a view "configurations.tp_transactions" which is a blend of many tables using INNER and LEFT JOINs. I want to
populatea temp table from which I can obtain the data and programmatically write queries to operate on that data using
certainPLPGSQL functions in a uniform fashion. I have several functions which all expect a single argument of the type
"configurations.tp_transactions".
>
> I think you would need to create the temp table as a child of the main
> table for this to work.  As you're doing it, the rowtype of the temp
> table is independent of the main (and the fact that they happen to have
> the same columns is NOT good enough to make it acceptable to a function
> declared to take the main table's rowtype).
>
>             regards, tom lane
>

I have tried this but no go:
network=# create temp table chl() inherits (configurations.tp_transactions);
ERROR:  inherited relation "tp_transactions" is not a table

This does not work either:
network=> CREATE TEMP TABLE myt OF configurations.tp_transactions;
CREATE TABLE
network=> \d myt
               Table "pg_temp_11.myt"
     Column     |         Type         | Modifiers
---------------+----------------------+-----------
  id            | integer              |
<snip>
  amount        | numeric              |
  pp_value      | numeric              |
Typed table of type: configurations.tp_transactions

network=> insert into myt select * from configurations.tp_transactions where trans_id=920787;
INSERT 0 1

network=> select configurations.myself(myt.*) from myt;
ERROR:  function configurations.myself(myt) does not exist
LINE 1: select configurations.myself(myt.*) from myt;
                ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

network=> select configurations.myself(myt.*) from configurations.tp_transactions myt where trans_id=920787;
  myself
--------
      12
(1 row)

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: TYPE of TEMP table does not seem to get set
Next
From: Bill MacArthur
Date:
Subject: Re: TYPE of TEMP table does not seem to get set