plpgsql: pure parser and reentrant scanner
[pgsql.git] / src / test / regress / sql / errors.sql
blob52474e858d8fdf65c0fb1bd694e7522e4b420675
1 --
2 -- ERRORS
3 --
5 -- bad in postquel, but ok in PostgreSQL
6 select 1;
9 --
10 -- UNSUPPORTED STUFF
12 -- doesn't work
13 -- notify pg_class
17 -- SELECT
19 -- this used to be a syntax error, but now we allow an empty target list
20 select;
22 -- no such relation
23 select * from nonesuch;
25 -- bad name in target list
26 select nonesuch from pg_database;
28 -- empty distinct list isn't OK
29 select distinct from pg_database;
31 -- bad attribute name on lhs of operator
32 select * from pg_database where nonesuch = pg_database.datname;
34 -- bad attribute name on rhs of operator
35 select * from pg_database where pg_database.datname = nonesuch;
37 -- bad attribute name in select distinct on
38 select distinct on (foobar) * from pg_database;
40 -- grouping with FOR UPDATE
41 select null from pg_database group by datname for update;
42 select null from pg_database group by grouping sets (()) for update;
46 -- DELETE
48 -- missing relation name (this had better not wildcard!)
49 delete from;
51 -- no such relation
52 delete from nonesuch;
56 -- DROP
58 -- missing relation name (this had better not wildcard!)
59 drop table;
61 -- no such relation
62 drop table nonesuch;
66 -- ALTER TABLE
68 -- relation renaming
70 -- missing relation name
71 alter table rename;
73 -- no such relation
74 alter table nonesuch rename to newnonesuch;
76 -- no such relation
77 alter table nonesuch rename to stud_emp;
79 -- conflict
80 alter table stud_emp rename to student;
82 -- self-conflict
83 alter table stud_emp rename to stud_emp;
86 -- attribute renaming
88 -- no such relation
89 alter table nonesuchrel rename column nonesuchatt to newnonesuchatt;
91 -- no such attribute
92 alter table emp rename column nonesuchatt to newnonesuchatt;
94 -- conflict
95 alter table emp rename column salary to manager;
97 -- conflict
98 alter table emp rename column salary to ctid;
102 -- TRANSACTION STUFF
104 -- not in a xact
105 abort;
107 -- not in a xact
108 end;
112 -- CREATE AGGREGATE
114 -- sfunc/finalfunc type disagreement
115 create aggregate newavg2 (sfunc = int4pl,
116                           basetype = int4,
117                           stype = int4,
118                           finalfunc = int2um,
119                           initcond = '0');
121 -- left out basetype
122 create aggregate newcnt1 (sfunc = int4inc,
123                           stype = int4,
124                           initcond = '0');
128 -- DROP INDEX
130 -- missing index name
131 drop index;
133 -- bad index name
134 drop index 314159;
136 -- no such index
137 drop index nonesuch;
141 -- DROP AGGREGATE
143 -- missing aggregate name
144 drop aggregate;
146 -- missing aggregate type
147 drop aggregate newcnt1;
149 -- bad aggregate name
150 drop aggregate 314159 (int);
152 -- bad aggregate type
153 drop aggregate newcnt (nonesuch);
155 -- no such aggregate
156 drop aggregate nonesuch (int4);
158 -- no such aggregate for type
159 drop aggregate newcnt (float4);
163 -- DROP FUNCTION
165 -- missing function name
166 drop function ();
168 -- bad function name
169 drop function 314159();
171 -- no such function
172 drop function nonesuch();
176 -- DROP TYPE
178 -- missing type name
179 drop type;
181 -- bad type name
182 drop type 314159;
184 -- no such type
185 drop type nonesuch;
189 -- DROP OPERATOR
191 -- missing everything
192 drop operator;
194 -- bad operator name
195 drop operator equals;
197 -- missing type list
198 drop operator ===;
200 -- missing parentheses
201 drop operator int4, int4;
203 -- missing operator name
204 drop operator (int4, int4);
206 -- missing type list contents
207 drop operator === ();
209 -- no such operator
210 drop operator === (int4);
212 -- no such operator by that name
213 drop operator === (int4, int4);
215 -- no such type1
216 drop operator = (nonesuch);
218 -- no such type1
219 drop operator = ( , int4);
221 -- no such type1
222 drop operator = (nonesuch, int4);
224 -- no such type2
225 drop operator = (int4, nonesuch);
227 -- no such type2
228 drop operator = (int4, );
232 -- DROP RULE
234 -- missing rule name
235 drop rule;
237 -- bad rule name
238 drop rule 314159;
240 -- no such rule
241 drop rule nonesuch on noplace;
243 -- these postquel variants are no longer supported
244 drop tuple rule nonesuch;
245 drop instance rule nonesuch on noplace;
246 drop rewrite rule nonesuch;
249 -- Check that division-by-zero is properly caught.
252 select 1/0;
254 select 1::int8/0;
256 select 1/0::int8;
258 select 1::int2/0;
260 select 1/0::int2;
262 select 1::numeric/0;
264 select 1/0::numeric;
266 select 1::float8/0;
268 select 1/0::float8;
270 select 1::float4/0;
272 select 1/0::float4;
276 -- Test psql's reporting of syntax error location
279 xxx;
281 CREATE foo;
283 CREATE TABLE ;
285 CREATE TABLE
288 INSERT INTO foo VALUES(123) foo;
290 INSERT INTO 123
291 VALUES(123);
293 INSERT INTO foo
294 VALUES(123) 123
297 -- with a tab
298 CREATE TABLE foo
299   (id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY,
300         id3 INTEGER NOT NUL,
301    id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL);
303 -- long line to be truncated on the left
304 CREATE TABLE foo(id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL,
305 id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL);
307 -- long line to be truncated on the right
308 CREATE TABLE foo(
309 id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL, id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY);
311 -- long line to be truncated both ways
312 CREATE TABLE foo(id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL);
314 -- long line to be truncated on the left, many lines
315 CREATE
316 TEMPORARY
317 TABLE
318 foo(id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL,
319 id4 INT4
320 UNIQUE
322 NULL,
323 id5 TEXT
324 UNIQUE
326 NULL)
329 -- long line to be truncated on the right, many lines
330 CREATE
331 TEMPORARY
332 TABLE
333 foo(
334 id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL, id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY)
337 -- long line to be truncated both ways, many lines
338 CREATE
339 TEMPORARY
340 TABLE
343 INT4
344 UNIQUE NOT NULL, idx INT4 UNIQUE NOT NULL, idy INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL,
345 idz INT4 UNIQUE NOT NULL,
346 idv INT4 UNIQUE NOT NULL);
348 -- more than 10 lines...
349 CREATE
350 TEMPORARY
351 TABLE
354 INT4
355 UNIQUE
357 NULL
360 INT4
361 UNIQUE
363 NULL,
364 idx INT4 UNIQUE NOT NULL, idy INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL,
365 idz INT4 UNIQUE NOT NULL,
367 INT4
368 UNIQUE
370 NULL);