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




---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to