Fix xslt_process() to ensure that it inserts a NULL terminator after the
[PostgreSQL.git] / src / test / regress / expected / temp.out
blobc39a88ad513da9a05d5b1e4fc2d250af34c1d2c8
1 --
2 -- TEMP
3 -- Test temp relations and indexes
4 --
5 -- test temp table/index masking
6 CREATE TABLE temptest(col int);
7 CREATE INDEX i_temptest ON temptest(col);
8 CREATE TEMP TABLE temptest(tcol int);
9 CREATE INDEX i_temptest ON temptest(tcol);
10 SELECT * FROM temptest;
11  tcol 
12 ------
13 (0 rows)
15 DROP INDEX i_temptest;
16 DROP TABLE temptest;
17 SELECT * FROM temptest;
18  col 
19 -----
20 (0 rows)
22 DROP INDEX i_temptest;
23 DROP TABLE temptest;
24 -- test temp table selects
25 CREATE TABLE temptest(col int);
26 INSERT INTO temptest VALUES (1);
27 CREATE TEMP TABLE temptest(tcol float);
28 INSERT INTO temptest VALUES (2.1);
29 SELECT * FROM temptest;
30  tcol 
31 ------
32   2.1
33 (1 row)
35 DROP TABLE temptest;
36 SELECT * FROM temptest;
37  col 
38 -----
39    1
40 (1 row)
42 DROP TABLE temptest;
43 -- test temp table deletion
44 CREATE TEMP TABLE temptest(col int);
46 SELECT * FROM temptest;
47 ERROR:  relation "temptest" does not exist
48 LINE 1: SELECT * FROM temptest;
49                       ^
50 -- Test ON COMMIT DELETE ROWS
51 CREATE TEMP TABLE temptest(col int) ON COMMIT DELETE ROWS;
52 BEGIN;
53 INSERT INTO temptest VALUES (1);
54 INSERT INTO temptest VALUES (2);
55 SELECT * FROM temptest;
56  col 
57 -----
58    1
59    2
60 (2 rows)
62 COMMIT;
63 SELECT * FROM temptest;
64  col 
65 -----
66 (0 rows)
68 DROP TABLE temptest;
69 BEGIN;
70 CREATE TEMP TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;
71 SELECT * FROM temptest;
72  col 
73 -----
74    1
75 (1 row)
77 COMMIT;
78 SELECT * FROM temptest;
79  col 
80 -----
81 (0 rows)
83 DROP TABLE temptest;
84 -- Test ON COMMIT DROP
85 BEGIN;
86 CREATE TEMP TABLE temptest(col int) ON COMMIT DROP;
87 INSERT INTO temptest VALUES (1);
88 INSERT INTO temptest VALUES (2);
89 SELECT * FROM temptest;
90  col 
91 -----
92    1
93    2
94 (2 rows)
96 COMMIT;
97 SELECT * FROM temptest;
98 ERROR:  relation "temptest" does not exist
99 LINE 1: SELECT * FROM temptest;
100                       ^
101 BEGIN;
102 CREATE TEMP TABLE temptest(col) ON COMMIT DROP AS SELECT 1;
103 SELECT * FROM temptest;
104  col 
105 -----
106    1
107 (1 row)
109 COMMIT;
110 SELECT * FROM temptest;
111 ERROR:  relation "temptest" does not exist
112 LINE 1: SELECT * FROM temptest;
113                       ^
114 -- ON COMMIT is only allowed for TEMP
115 CREATE TABLE temptest(col int) ON COMMIT DELETE ROWS;
116 ERROR:  ON COMMIT can only be used on temporary tables
117 CREATE TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;
118 ERROR:  ON COMMIT can only be used on temporary tables
119 -- Test foreign keys
120 BEGIN;
121 CREATE TEMP TABLE temptest1(col int PRIMARY KEY);
122 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "temptest1_pkey" for table "temptest1"
123 CREATE TEMP TABLE temptest2(col int REFERENCES temptest1)
124   ON COMMIT DELETE ROWS;
125 INSERT INTO temptest1 VALUES (1);
126 INSERT INTO temptest2 VALUES (1);
127 COMMIT;
128 SELECT * FROM temptest1;
129  col 
130 -----
131    1
132 (1 row)
134 SELECT * FROM temptest2;
135  col 
136 -----
137 (0 rows)
139 BEGIN;
140 CREATE TEMP TABLE temptest3(col int PRIMARY KEY) ON COMMIT DELETE ROWS;
141 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "temptest3_pkey" for table "temptest3"
142 CREATE TEMP TABLE temptest4(col int REFERENCES temptest3);
143 COMMIT;
144 ERROR:  unsupported ON COMMIT and foreign key combination
145 DETAIL:  Table "temptest4" references "temptest3", but they do not have the same ON COMMIT setting.
146 -- Test manipulation of temp schema's placement in search path
147 create table public.whereami (f1 text);
148 insert into public.whereami values ('public');
149 create temp table whereami (f1 text);
150 insert into whereami values ('temp');
151 create function public.whoami() returns text
152   as $$select 'public'::text$$ language sql;
153 create function pg_temp.whoami() returns text
154   as $$select 'temp'::text$$ language sql;
155 -- default should have pg_temp implicitly first, but only for tables
156 select * from whereami;
157   f1  
158 ------
159  temp
160 (1 row)
162 select whoami();
163  whoami 
164 --------
165  public
166 (1 row)
168 -- can list temp first explicitly, but it still doesn't affect functions
169 set search_path = pg_temp, public;
170 select * from whereami;
171   f1  
172 ------
173  temp
174 (1 row)
176 select whoami();
177  whoami 
178 --------
179  public
180 (1 row)
182 -- or put it last for security
183 set search_path = public, pg_temp;
184 select * from whereami;
185    f1   
186 --------
187  public
188 (1 row)
190 select whoami();
191  whoami 
192 --------
193  public
194 (1 row)
196 -- you can invoke a temp function explicitly, though
197 select pg_temp.whoami();
198  whoami 
199 --------
200  temp
201 (1 row)
203 drop table public.whereami;