temp.out

来自「postgresql8.3.4源码,开源数据库」· OUT 代码 · 共 198 行

OUT
198
字号
---- TEMP-- Test temp relations and indexes---- test temp table/index maskingCREATE TABLE temptest(col int);CREATE INDEX i_temptest ON temptest(col);CREATE TEMP TABLE temptest(tcol int);CREATE INDEX i_temptest ON temptest(tcol);SELECT * FROM temptest; tcol ------(0 rows)DROP INDEX i_temptest;DROP TABLE temptest;SELECT * FROM temptest; col -----(0 rows)DROP INDEX i_temptest;DROP TABLE temptest;-- test temp table selectsCREATE TABLE temptest(col int);INSERT INTO temptest VALUES (1);CREATE TEMP TABLE temptest(tcol float);INSERT INTO temptest VALUES (2.1);SELECT * FROM temptest; tcol ------  2.1(1 row)DROP TABLE temptest;SELECT * FROM temptest; col -----   1(1 row)DROP TABLE temptest;-- test temp table deletionCREATE TEMP TABLE temptest(col int);\c regressionSELECT * FROM temptest;ERROR:  relation "temptest" does not exist-- Test ON COMMIT DELETE ROWSCREATE TEMP TABLE temptest(col int) ON COMMIT DELETE ROWS;BEGIN;INSERT INTO temptest VALUES (1);INSERT INTO temptest VALUES (2);SELECT * FROM temptest; col -----   1   2(2 rows)COMMIT;SELECT * FROM temptest; col -----(0 rows)DROP TABLE temptest;BEGIN;CREATE TEMP TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;SELECT * FROM temptest; col -----   1(1 row)COMMIT;SELECT * FROM temptest; col -----(0 rows)DROP TABLE temptest;-- Test ON COMMIT DROPBEGIN;CREATE TEMP TABLE temptest(col int) ON COMMIT DROP;INSERT INTO temptest VALUES (1);INSERT INTO temptest VALUES (2);SELECT * FROM temptest; col -----   1   2(2 rows)COMMIT;SELECT * FROM temptest;ERROR:  relation "temptest" does not existBEGIN;CREATE TEMP TABLE temptest(col) ON COMMIT DROP AS SELECT 1;SELECT * FROM temptest; col -----   1(1 row)COMMIT;SELECT * FROM temptest;ERROR:  relation "temptest" does not exist-- ON COMMIT is only allowed for TEMPCREATE TABLE temptest(col int) ON COMMIT DELETE ROWS;ERROR:  ON COMMIT can only be used on temporary tablesCREATE TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;ERROR:  ON COMMIT can only be used on temporary tables-- Test foreign keysBEGIN;CREATE TEMP TABLE temptest1(col int PRIMARY KEY);NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "temptest1_pkey" for table "temptest1"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; col -----   1(1 row)SELECT * FROM temptest2; col -----(0 rows)BEGIN;CREATE TEMP TABLE temptest3(col int PRIMARY KEY) ON COMMIT DELETE ROWS;NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "temptest3_pkey" for table "temptest3"CREATE TEMP TABLE temptest4(col int REFERENCES temptest3);COMMIT;ERROR:  unsupported ON COMMIT and foreign key combinationDETAIL:  Table "temptest4" references "temptest3", but they do not have the same ON COMMIT setting.-- Test manipulation of temp schema's placement in search pathcreate 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 tablesselect * from whereami;  f1  ------ temp(1 row)select whoami(); whoami -------- public(1 row)-- can list temp first explicitly, but it still doesn't affect functionsset search_path = pg_temp, public;select * from whereami;  f1  ------ temp(1 row)select whoami(); whoami -------- public(1 row)-- or put it last for securityset search_path = public, pg_temp;select * from whereami;   f1   -------- public(1 row)select whoami(); whoami -------- public(1 row)-- you can invoke a temp function explicitly, thoughselect pg_temp.whoami(); whoami -------- temp(1 row)drop table public.whereami;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?