1999-02-02 04:45:56 +01:00
|
|
|
--
|
2000-01-06 07:41:55 +01:00
|
|
|
-- TEMP
|
1999-02-02 04:45:56 +01:00
|
|
|
-- Test temp relations and indexes
|
|
|
|
--
|
|
|
|
|
|
|
|
-- test temp table/index masking
|
|
|
|
|
|
|
|
CREATE TABLE temptest(col int);
|
|
|
|
|
|
|
|
CREATE INDEX i_temptest ON temptest(col);
|
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
CREATE TEMP TABLE temptest(tcol int);
|
1999-02-02 04:45:56 +01:00
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
CREATE INDEX i_temptest ON temptest(tcol);
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
1999-02-02 04:45:56 +01:00
|
|
|
|
|
|
|
DROP INDEX i_temptest;
|
|
|
|
|
|
|
|
DROP TABLE temptest;
|
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
1999-02-02 04:45:56 +01:00
|
|
|
DROP INDEX i_temptest;
|
|
|
|
|
|
|
|
DROP TABLE temptest;
|
|
|
|
|
|
|
|
-- test temp table selects
|
|
|
|
|
|
|
|
CREATE TABLE temptest(col int);
|
|
|
|
|
|
|
|
INSERT INTO temptest VALUES (1);
|
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
CREATE TEMP TABLE temptest(tcol float);
|
1999-02-02 04:45:56 +01:00
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
INSERT INTO temptest VALUES (2.1);
|
1999-02-02 04:45:56 +01:00
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
|
|
|
DROP TABLE temptest;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
|
|
|
DROP TABLE temptest;
|
|
|
|
|
|
|
|
-- test temp table deletion
|
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
CREATE TEMP TABLE temptest(col int);
|
|
|
|
|
2008-07-03 18:01:10 +02:00
|
|
|
\c
|
1999-02-02 04:45:56 +01:00
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
2000-01-06 07:41:55 +01:00
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
-- Test ON COMMIT DELETE ROWS
|
|
|
|
|
|
|
|
CREATE TEMP TABLE temptest(col int) ON COMMIT DELETE ROWS;
|
|
|
|
|
|
|
|
BEGIN;
|
|
|
|
INSERT INTO temptest VALUES (1);
|
|
|
|
INSERT INTO temptest VALUES (2);
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
|
|
|
DROP TABLE temptest;
|
|
|
|
|
2006-02-19 01:04:28 +01:00
|
|
|
BEGIN;
|
|
|
|
CREATE TEMP TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
|
|
|
DROP TABLE temptest;
|
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
-- Test ON COMMIT DROP
|
|
|
|
|
|
|
|
BEGIN;
|
|
|
|
|
|
|
|
CREATE TEMP TABLE temptest(col int) ON COMMIT DROP;
|
|
|
|
|
|
|
|
INSERT INTO temptest VALUES (1);
|
|
|
|
INSERT INTO temptest VALUES (2);
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
2006-02-19 01:04:28 +01:00
|
|
|
BEGIN;
|
|
|
|
CREATE TEMP TABLE temptest(col) ON COMMIT DROP AS SELECT 1;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
SELECT * FROM temptest;
|
|
|
|
|
2002-11-11 23:19:25 +01:00
|
|
|
-- ON COMMIT is only allowed for TEMP
|
|
|
|
|
|
|
|
CREATE TABLE temptest(col int) ON COMMIT DELETE ROWS;
|
2006-02-19 01:04:28 +01:00
|
|
|
CREATE TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;
|
2005-01-27 04:19:37 +01:00
|
|
|
|
|
|
|
-- Test foreign keys
|
|
|
|
BEGIN;
|
|
|
|
CREATE TEMP TABLE temptest1(col int PRIMARY KEY);
|
|
|
|
CREATE TEMP TABLE temptest2(col int REFERENCES temptest1)
|
|
|
|
ON COMMIT DELETE ROWS;
|
|
|
|
INSERT INTO temptest1 VALUES (1);
|
|
|
|
INSERT INTO temptest2 VALUES (1);
|
|
|
|
COMMIT;
|
|
|
|
SELECT * FROM temptest1;
|
|
|
|
SELECT * FROM temptest2;
|
|
|
|
|
|
|
|
BEGIN;
|
|
|
|
CREATE TEMP TABLE temptest3(col int PRIMARY KEY) ON COMMIT DELETE ROWS;
|
|
|
|
CREATE TEMP TABLE temptest4(col int REFERENCES temptest3);
|
|
|
|
COMMIT;
|
2007-04-20 04:37:38 +02:00
|
|
|
|
|
|
|
-- Test manipulation of temp schema's placement in search path
|
|
|
|
|
|
|
|
create table public.whereami (f1 text);
|
|
|
|
insert into public.whereami values ('public');
|
|
|
|
|
|
|
|
create temp table whereami (f1 text);
|
|
|
|
insert into whereami values ('temp');
|
|
|
|
|
|
|
|
create function public.whoami() returns text
|
|
|
|
as $$select 'public'::text$$ language sql;
|
|
|
|
|
|
|
|
create function pg_temp.whoami() returns text
|
|
|
|
as $$select 'temp'::text$$ language sql;
|
|
|
|
|
|
|
|
-- default should have pg_temp implicitly first, but only for tables
|
|
|
|
select * from whereami;
|
|
|
|
select whoami();
|
|
|
|
|
|
|
|
-- can list temp first explicitly, but it still doesn't affect functions
|
|
|
|
set search_path = pg_temp, public;
|
|
|
|
select * from whereami;
|
|
|
|
select whoami();
|
|
|
|
|
|
|
|
-- or put it last for security
|
|
|
|
set search_path = public, pg_temp;
|
|
|
|
select * from whereami;
|
|
|
|
select whoami();
|
|
|
|
|
|
|
|
-- you can invoke a temp function explicitly, though
|
|
|
|
select pg_temp.whoami();
|
|
|
|
|
|
|
|
drop table public.whereami;
|