Re: Global temporary tables surprise - Mailing list pgsql-novice
From | Devrim GUNDUZ |
---|---|
Subject | Re: Global temporary tables surprise |
Date | |
Msg-id | BE5818E7-E997-4DAD-B97D-087C16F4528B@gunduz.org Whole thread Raw |
In response to | Global temporary tables surprise (Mladen Gogala <mladen.gogala@vmsinfo.com>) |
List | pgsql-novice |
"global" keyword has no effect in PostgreSQL. See the compatibility section in the doc that you linked. -- Devrim GÜNDÜZ PostgreSQL DBA @ Akinon/Markafoni, Red Hat Certified Engineer devrim~gunduz.org, devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr http://www.gunduz.org Twitter: http://twitter.com/devrimgunduz 13.Haz.2010 tarihinde 11:54 saatinde, Mladen Gogala <mladen.gogala@vmsinfo.com > şunları yazdı: > I created a global temporary table, using the following syntax: > > [mgogala@medo tmp]$ psql scott > Timing is on. > psql (8.4.4) > Type "help" for help. > > scott=# create global temporary table t_emp > scott-# on commit preserve rows > scott-# as select * from emp; > SELECT > Time: 127.086 ms > scott=# commit; > WARNING: there is no transaction in progress > COMMIT > Time: 0.353 ms > scott=# select * from t_emp; > empno | ename | job | mgr | hiredate | sal | > comm | deptno > -------+--------+-----------+------+---------------------+------ > +------+-------- > 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800 | > | 20 > 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600 | 300 > | 30 > 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250 | 500 > | 30 > 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | > | 20 > 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250 | 1400 > | 30 > 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850 | > | 30 > 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450 | > | 10 > 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 00:00:00 | 3000 | > | 20 > 7839 | KING | PRESIDENT | | 1981-11-17 00:00:00 | 5000 | > | 10 > 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500 | 0 > | 30 > 7876 | ADAMS | CLERK | 7788 | 1987-05-23 00:00:00 | 1100 | > | 20 > 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | > | 30 > 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000 | > | 20 > 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300 | > | 10 > (14 rows) > > Time: 0.595 ms > scott=# \q > > So far, everything is kosher and expected. Now, I re-entered the psql > and got the surprise of my life: > > [mgogala@medo tmp]$ psql scott > Timing is on. > psql (8.4.4) > Type "help" for help. > > scott=# select * from t_emp; > ERROR: relation "t_emp" does not exist > LINE 1: select * from t_emp; > ^ > scott=# > > > Whaddaf...? I did the wrong thing, namely went to the documentation > and, sure enough, there it was: > http://www.postgresql.org/docs/8.4/static/sql-createtable.html > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > ********************************************************************** > Parameters > > TEMPORARY or TEMP > > If specified, the table is created as a temporary table. Temporary > tables are automatically dropped at the end of a session, or > optionally at the end of the current transaction (see ON COMMIT > below). Existing permanent tables with the same name are not visible > to the current session while the temporary table exists, unless they > are referenced with schema-qualified names. Any indexes created on a > temporary table are automatically temporary as well. > > Optionally, GLOBAL or LOCAL can be written before TEMPORARY or > TEMP. This makes no difference in PostgreSQL, but see Compatibility. > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > *** > ********************************************************************** > > So, Postgresql will simply ignore "GLOBAL" or "LOCAL" and will > create a local temporary table anyway? Why is that? Don't get me > wrong, local temporary tables are a great replacement for cursors, > but global temporary tables have their uses too. Is there any hope > that we will have global temporary tables in the foreseeable > future? Another popular variety of databases supports global > temporary tables but not local temporary tables. It would be very > nice to have a standard terminology, wouldn't it? > > > -- > Mladen Gogala Sr. Oracle DBA > 1500 Broadway > New York, NY 10036 > (212) 329-5251 > www.vmsinfo.com > > -- > Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-novice
pgsql-novice by date: