mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 18:31:18 +02:00
31e69ccb21
division and modulo functions, to avoid problems on OS X (which fails to trap 0 divide at all) and Windows (which traps it in some bizarre nonstandard fashion). Standardize on 'division by zero' as the one true spelling of this error message. Add regression tests as suggested by Neil Conway.
265 lines
7.4 KiB
Plaintext
265 lines
7.4 KiB
Plaintext
--
|
|
-- ERRORS
|
|
--
|
|
-- bad in postquel, but ok in postsql
|
|
select 1;
|
|
?column?
|
|
----------
|
|
1
|
|
(1 row)
|
|
|
|
--
|
|
-- UNSUPPORTED STUFF
|
|
|
|
-- doesn't work
|
|
-- attachas nonesuch
|
|
--
|
|
-- doesn't work
|
|
-- notify pg_class
|
|
--
|
|
--
|
|
-- SELECT
|
|
|
|
-- missing relation name
|
|
select;
|
|
ERROR: parser: parse error at or near ";" at character 7
|
|
-- no such relation
|
|
select * from nonesuch;
|
|
ERROR: Relation "nonesuch" does not exist
|
|
-- missing target list
|
|
select from pg_database;
|
|
ERROR: parser: parse error at or near "from" at character 8
|
|
-- bad name in target list
|
|
select nonesuch from pg_database;
|
|
ERROR: Attribute "nonesuch" not found
|
|
-- bad attribute name on lhs of operator
|
|
select * from pg_database where nonesuch = pg_database.datname;
|
|
ERROR: Attribute "nonesuch" not found
|
|
-- bad attribute name on rhs of operator
|
|
select * from pg_database where pg_database.datname = nonesuch;
|
|
ERROR: Attribute "nonesuch" not found
|
|
-- bad select distinct on syntax, distinct attribute missing
|
|
select distinct on (foobar) from pg_database;
|
|
ERROR: parser: parse error at or near "from" at character 29
|
|
-- bad select distinct on syntax, distinct attribute not in target list
|
|
select distinct on (foobar) * from pg_database;
|
|
ERROR: Attribute "foobar" not found
|
|
--
|
|
-- DELETE
|
|
|
|
-- missing relation name (this had better not wildcard!)
|
|
delete from;
|
|
ERROR: parser: parse error at or near ";" at character 12
|
|
-- no such relation
|
|
delete from nonesuch;
|
|
ERROR: Relation "nonesuch" does not exist
|
|
--
|
|
-- DROP
|
|
|
|
-- missing relation name (this had better not wildcard!)
|
|
drop table;
|
|
ERROR: parser: parse error at or near ";" at character 11
|
|
-- no such relation
|
|
drop table nonesuch;
|
|
ERROR: table "nonesuch" does not exist
|
|
--
|
|
-- ALTER TABLE
|
|
|
|
-- relation renaming
|
|
-- missing relation name
|
|
alter table rename;
|
|
ERROR: parser: parse error at or near ";" at character 19
|
|
-- no such relation
|
|
alter table nonesuch rename to newnonesuch;
|
|
ERROR: Relation "nonesuch" does not exist
|
|
-- no such relation
|
|
alter table nonesuch rename to stud_emp;
|
|
ERROR: Relation "nonesuch" does not exist
|
|
-- conflict
|
|
alter table stud_emp rename to aggtest;
|
|
ERROR: renamerel: relation "aggtest" exists
|
|
-- self-conflict
|
|
alter table stud_emp rename to stud_emp;
|
|
ERROR: renamerel: relation "stud_emp" exists
|
|
-- attribute renaming
|
|
-- no such relation
|
|
alter table nonesuchrel rename column nonesuchatt to newnonesuchatt;
|
|
ERROR: Relation "nonesuchrel" does not exist
|
|
-- no such attribute
|
|
alter table emp rename column nonesuchatt to newnonesuchatt;
|
|
ERROR: renameatt: attribute "nonesuchatt" does not exist
|
|
-- conflict
|
|
alter table emp rename column salary to manager;
|
|
ERROR: renameatt: attribute "manager" exists
|
|
-- conflict
|
|
alter table emp rename column salary to oid;
|
|
ERROR: renameatt: attribute "oid" exists
|
|
--
|
|
-- TRANSACTION STUFF
|
|
|
|
-- not in a xact
|
|
abort;
|
|
WARNING: ROLLBACK: no transaction in progress
|
|
-- not in a xact
|
|
end;
|
|
WARNING: COMMIT: no transaction in progress
|
|
--
|
|
-- CREATE AGGREGATE
|
|
-- sfunc/finalfunc type disagreement
|
|
create aggregate newavg2 (sfunc = int4pl,
|
|
basetype = int4,
|
|
stype = int4,
|
|
finalfunc = int2um,
|
|
initcond = '0');
|
|
ERROR: AggregateCreate: function int2um(integer) does not exist
|
|
-- left out basetype
|
|
create aggregate newcnt1 (sfunc = int4inc,
|
|
stype = int4,
|
|
initcond = '0');
|
|
ERROR: Define: "basetype" unspecified
|
|
--
|
|
-- DROP INDEX
|
|
|
|
-- missing index name
|
|
drop index;
|
|
ERROR: parser: parse error at or near ";" at character 11
|
|
-- bad index name
|
|
drop index 314159;
|
|
ERROR: parser: parse error at or near "314159" at character 12
|
|
-- no such index
|
|
drop index nonesuch;
|
|
ERROR: index "nonesuch" does not exist
|
|
--
|
|
-- DROP AGGREGATE
|
|
|
|
-- missing aggregate name
|
|
drop aggregate;
|
|
ERROR: parser: parse error at or near ";" at character 15
|
|
-- missing aggregate type
|
|
drop aggregate newcnt1;
|
|
ERROR: parser: parse error at or near ";" at character 23
|
|
-- bad aggregate name
|
|
drop aggregate 314159 (int);
|
|
ERROR: parser: parse error at or near "314159" at character 16
|
|
-- bad aggregate type
|
|
drop aggregate newcnt (nonesuch);
|
|
ERROR: Type "nonesuch" does not exist
|
|
-- no such aggregate
|
|
drop aggregate nonesuch (int4);
|
|
ERROR: RemoveAggregate: aggregate nonesuch(integer) does not exist
|
|
-- no such aggregate for type
|
|
drop aggregate newcnt (float4);
|
|
ERROR: RemoveAggregate: aggregate newcnt(real) does not exist
|
|
--
|
|
-- DROP FUNCTION
|
|
|
|
-- missing function name
|
|
drop function ();
|
|
ERROR: parser: parse error at or near "(" at character 15
|
|
-- bad function name
|
|
drop function 314159();
|
|
ERROR: parser: parse error at or near "314159" at character 15
|
|
-- no such function
|
|
drop function nonesuch();
|
|
ERROR: RemoveFunction: function nonesuch() does not exist
|
|
--
|
|
-- DROP TYPE
|
|
|
|
-- missing type name
|
|
drop type;
|
|
ERROR: parser: parse error at or near ";" at character 10
|
|
-- bad type name
|
|
drop type 314159;
|
|
ERROR: parser: parse error at or near "314159" at character 11
|
|
-- no such type
|
|
drop type nonesuch;
|
|
ERROR: Type "nonesuch" does not exist
|
|
--
|
|
-- DROP OPERATOR
|
|
|
|
-- missing everything
|
|
drop operator;
|
|
ERROR: parser: parse error at or near ";" at character 14
|
|
-- bad operator name
|
|
drop operator equals;
|
|
ERROR: parser: parse error at or near ";" at character 21
|
|
-- missing type list
|
|
drop operator ===;
|
|
ERROR: parser: parse error at or near ";" at character 18
|
|
-- missing parentheses
|
|
drop operator int4, int4;
|
|
ERROR: parser: parse error at or near "," at character 19
|
|
-- missing operator name
|
|
drop operator (int4, int4);
|
|
ERROR: parser: parse error at or near "(" at character 15
|
|
-- missing type list contents
|
|
drop operator === ();
|
|
ERROR: parser: parse error at or near ")" at character 20
|
|
-- no such operator
|
|
drop operator === (int4);
|
|
ERROR: parser: argument type missing (use NONE for unary operators)
|
|
-- no such operator by that name
|
|
drop operator === (int4, int4);
|
|
ERROR: RemoveOperator: Operator '===' for types 'int4' and 'int4' does not exist
|
|
-- no such type1
|
|
drop operator = (nonesuch);
|
|
ERROR: parser: argument type missing (use NONE for unary operators)
|
|
-- no such type1
|
|
drop operator = ( , int4);
|
|
ERROR: parser: parse error at or near "," at character 19
|
|
-- no such type1
|
|
drop operator = (nonesuch, int4);
|
|
ERROR: Type "nonesuch" does not exist
|
|
-- no such type2
|
|
drop operator = (int4, nonesuch);
|
|
ERROR: Type "nonesuch" does not exist
|
|
-- no such type2
|
|
drop operator = (int4, );
|
|
ERROR: parser: parse error at or near ")" at character 24
|
|
--
|
|
-- DROP RULE
|
|
|
|
-- missing rule name
|
|
drop rule;
|
|
ERROR: parser: parse error at or near ";" at character 10
|
|
-- bad rule name
|
|
drop rule 314159;
|
|
ERROR: parser: parse error at or near "314159" at character 11
|
|
-- no such rule
|
|
drop rule nonesuch on noplace;
|
|
ERROR: Relation "noplace" does not exist
|
|
-- bad keyword
|
|
drop tuple rule nonesuch;
|
|
ERROR: parser: parse error at or near "tuple" at character 6
|
|
-- no such rule
|
|
drop instance rule nonesuch on noplace;
|
|
ERROR: parser: parse error at or near "instance" at character 6
|
|
-- no such rule
|
|
drop rewrite rule nonesuch;
|
|
ERROR: parser: parse error at or near "rewrite" at character 6
|
|
--
|
|
-- Check that division-by-zero is properly caught.
|
|
--
|
|
select 1/0;
|
|
ERROR: division by zero
|
|
select 1::int8/0;
|
|
ERROR: division by zero
|
|
select 1/0::int8;
|
|
ERROR: division by zero
|
|
select 1::int2/0;
|
|
ERROR: division by zero
|
|
select 1/0::int2;
|
|
ERROR: division by zero
|
|
select 1::numeric/0;
|
|
ERROR: division by zero
|
|
select 1/0::numeric;
|
|
ERROR: division by zero
|
|
select 1::float8/0;
|
|
ERROR: division by zero
|
|
select 1/0::float8;
|
|
ERROR: division by zero
|
|
select 1::float4/0;
|
|
ERROR: division by zero
|
|
select 1/0::float4;
|
|
ERROR: division by zero
|