Hello,
>> The temporary table will be dropped automatically at the end of the
>> function, right?
>>
>
> A temp table will be dropped at the end of the connection. You can
> reuse it by adding ON COMMIT DELETE ROWS and then check
> if it exists in your function with this other function:
> http://www.milwaukeesoft.com/forums/viewtopic.php?t=79
>
> You can also use ON COMMIT in a couple of different ways:
>
> ON COMMIT
>
> The behavior of temporary tables at the end of a transaction block
> can be controlled using ON COMMIT. The three options are:
>
> PRESERVE ROWS
>
> No special action is taken at the ends of transactions. This is
> the default behavior.
>
> DELETE ROWS
>
> All rows in the temporary table will be deleted at the end of
> each transaction block. Essentially, an automatic TRUNCATE
> <http://www.postgresql.org/docs/8.1/interactive/sql-truncate.html>
> is done at each commit.
>
> DROP
>
> The temporary table will be dropped at the end of the current
> transaction block.
Since the structure of the temporay table is not predefined, in the
function, I use create temporay table AS ( (select ... from ... left
join ... where ... union select ... from ... left join ... where ... )) .
Where I should put "on commit drop" to the create temporay table as
select ... query? I tried at the end, but it failded.
Besides, how about setting index on a temporay table, it speeds up query
(although no anayze is run after the index generation on the temporay
table), right?
Thanks a lot,
Ying