mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-04-24 21:02:55 +08:00
*shrug*
This commit is contained in:
parent
df77071773
commit
78454c2744
149
src/test/regress/sql/datetime.sql
Normal file
149
src/test/regress/sql/datetime.sql
Normal file
@ -0,0 +1,149 @@
|
||||
-- *** testing new built-in time types: datetime, timespan ***
|
||||
|
||||
CREATE TABLE DATETIME_TBL( d1 datetime);
|
||||
|
||||
-- Shorthand values
|
||||
-- Not testable since these are not constant for regression testing.
|
||||
-- So, just try to test parser and hope for the best - tgl 97/04/26
|
||||
INSERT INTO DATETIME_TBL VALUES ('current');
|
||||
INSERT INTO DATETIME_TBL VALUES ('now');
|
||||
INSERT INTO DATETIME_TBL VALUES ('today');
|
||||
INSERT INTO DATETIME_TBL VALUES ('yesterday');
|
||||
INSERT INTO DATETIME_TBL VALUES ('tomorrow');
|
||||
INSERT INTO DATETIME_TBL VALUES ('tomorrow PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('tomorrow zulu');
|
||||
|
||||
SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'today'::datetime;
|
||||
SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'tomorrow'::datetime;
|
||||
SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'yesterday'::datetime;
|
||||
SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'today'::datetime + '1 day'::timespan;
|
||||
SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'today'::datetime - '1 day'::timespan;
|
||||
|
||||
INSERT INTO DATETIME_TBL VALUES ('current');
|
||||
BEGIN;
|
||||
INSERT INTO DATETIME_TBL VALUES ('now');
|
||||
SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'now'::datetime;
|
||||
END;
|
||||
DELETE FROM DATETIME_TBL;
|
||||
|
||||
-- Special values
|
||||
INSERT INTO DATETIME_TBL VALUES ('invalid');
|
||||
INSERT INTO DATETIME_TBL VALUES ('-infinity');
|
||||
INSERT INTO DATETIME_TBL VALUES ('infinity');
|
||||
INSERT INTO DATETIME_TBL VALUES ('epoch');
|
||||
|
||||
-- Postgres v6.0 standard output format
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Invalid Abstime');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Undefined Abstime');
|
||||
|
||||
-- Variations on Postgres v6.1 standard output format
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mon Feb 10 17:32:01.000001 1997 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST');
|
||||
|
||||
-- ISO 8601 format
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-01-02');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-01-02 03:04:05');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-02-10 17:32:01-08');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-02-10 17:32:01-0800');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-02-10 17:32:01 -08:00');
|
||||
INSERT INTO DATETIME_TBL VALUES ('19970210 173201 -0800');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-06-10 17:32:01 -07:00');
|
||||
|
||||
-- Variations for acceptable input formats
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 10 17:32:01 1997 -0800');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 10 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 10 5:32PM 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997/02/10 17:32:01-0800');
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-02-10 17:32:01 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb-10-1997 17:32:01 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('02-10-1997 17:32:01 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('19970210 173201 PST');
|
||||
INSERT INTO DATETIME_TBL VALUES ('97FEB10 5:32:01PM UTC');
|
||||
INSERT INTO DATETIME_TBL VALUES ('97/02/10 17:32:01 UTC');
|
||||
INSERT INTO DATETIME_TBL VALUES ('97.041 17:32:01 UTC');
|
||||
|
||||
-- Check date conversion and date arithmetic
|
||||
INSERT INTO DATETIME_TBL VALUES ('1997-06-10 18:32:01 PDT');
|
||||
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 10 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 11 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 12 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 13 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 14 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 15 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 1997');
|
||||
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 0097 BC');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 0097');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 0597');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 1097');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 1697');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 1797');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 1897');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 2097');
|
||||
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 28 17:32:01 1996');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 29 17:32:01 1996');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mar 01 17:32:01 1996');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Dec 30 17:32:01 1996');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Dec 31 17:32:01 1996');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Jan 01 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 28 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 29 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Mar 01 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Dec 30 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Dec 31 17:32:01 1997');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Dec 31 17:32:01 1999');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Jan 01 17:32:01 2000');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Dec 31 17:32:01 2000');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Jan 01 17:32:01 2001');
|
||||
|
||||
-- Currently unsupported syntax and ranges
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 -0097');
|
||||
INSERT INTO DATETIME_TBL VALUES ('Feb 16 17:32:01 5097 BC');
|
||||
|
||||
SELECT '' AS sixtythree, d1 FROM DATETIME_TBL;
|
||||
|
||||
-- Demonstrate functions and operators
|
||||
SELECT '' AS fortythree, d1 FROM DATETIME_TBL
|
||||
WHERE d1 > '1997-01-02'::datetime and d1 != 'current'::datetime;
|
||||
|
||||
SELECT '' AS fifteen, d1 FROM DATETIME_TBL
|
||||
WHERE d1 < '1997-01-02'::datetime and d1 != 'current'::datetime;
|
||||
|
||||
SELECT '' AS one, d1 FROM DATETIME_TBL
|
||||
WHERE d1 = '1997-01-02'::datetime and d1 != 'current'::datetime;
|
||||
|
||||
SELECT '' AS fiftyeight, d1 FROM DATETIME_TBL
|
||||
WHERE d1 != '1997-01-02'::datetime and d1 != 'current'::datetime;
|
||||
|
||||
SELECT '' AS sixteen, d1 FROM DATETIME_TBL
|
||||
WHERE d1 <= '1997-01-02'::datetime and d1 != 'current'::datetime;
|
||||
|
||||
SELECT '' AS fortyfour, d1 FROM DATETIME_TBL
|
||||
WHERE d1 >= '1997-01-02'::datetime and d1 != 'current'::datetime;
|
||||
|
||||
SELECT '' AS sixtythree, d1 + '1 year'::timespan AS one_year FROM DATETIME_TBL;
|
||||
|
||||
SELECT '' AS sixtythree, d1 - '1 year'::timespan AS one_year FROM DATETIME_TBL;
|
||||
|
||||
-- Casting within a BETWEEN qualifier should probably be allowed by the parser. - tgl 97/04/26
|
||||
--SELECT '' AS fifty, d1 - '1997-01-02'::datetime AS diff
|
||||
-- FROM DATETIME_TBL WHERE d1 BETWEEN '1902-01-01'::datetime AND '2038-01-01'::datetime;
|
||||
SELECT '' AS fifty, d1 - '1997-01-02'::datetime AS diff
|
||||
FROM DATETIME_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
|
||||
|
||||
SELECT '' AS fortynine, date_part( 'year', d1) AS year, date_part( 'month', d1) AS month,
|
||||
date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour,
|
||||
date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second
|
||||
FROM DATETIME_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
|
||||
|
||||
SELECT '' AS fortynine, date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec,
|
||||
date_part( 'usec', d1) AS usec
|
||||
FROM DATETIME_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
|
||||
|
285
src/test/regress/sql/destroy.sql
Normal file
285
src/test/regress/sql/destroy.sql
Normal file
@ -0,0 +1,285 @@
|
||||
--
|
||||
-- destroy.source
|
||||
--
|
||||
-- $Header: /cvsroot/pgsql/src/test/regress/sql/Attic/destroy.sql,v 1.1 1997/04/27 03:56:20 scrappy Exp $
|
||||
--
|
||||
|
||||
--
|
||||
-- this will fail if the user is not the postgres superuser.
|
||||
-- if it does, don't worry about it (you can turn usersuper
|
||||
-- back on as "postgres"). too many people don't follow
|
||||
-- directions and run this as "postgres", though...
|
||||
--
|
||||
UPDATE pg_user
|
||||
SET usesuper = 't'::bool
|
||||
WHERE usename = 'postgres';
|
||||
|
||||
|
||||
--
|
||||
-- FUNCTION REMOVAL
|
||||
--
|
||||
DROP FUNCTION hobbies(person);
|
||||
|
||||
DROP FUNCTION hobby_construct(text,text);
|
||||
|
||||
DROP FUNCTION equipment(hobbies_r);
|
||||
|
||||
DROP FUNCTION user_relns();
|
||||
|
||||
DROP FUNCTION widget_in(opaque);
|
||||
|
||||
DROP FUNCTION widget_out(opaque);
|
||||
|
||||
DROP FUNCTION pt_in_widget(point,widget);
|
||||
|
||||
DROP FUNCTION overpaid(emp);
|
||||
|
||||
DROP FUNCTION boxarea(box);
|
||||
|
||||
DROP FUNCTION interpt_pp(path,path);
|
||||
|
||||
DROP FUNCTION reverse_c16(char16);
|
||||
|
||||
|
||||
--
|
||||
-- OPERATOR REMOVAL
|
||||
--
|
||||
DROP OPERATOR ## (path, path);
|
||||
|
||||
DROP OPERATOR <% (point, widget);
|
||||
|
||||
-- left unary
|
||||
DROP OPERATOR @#@ (none, int4);
|
||||
|
||||
-- right unary
|
||||
DROP OPERATOR #@# (int4, none);
|
||||
|
||||
-- right unary
|
||||
DROP OPERATOR #%# (int4, none);
|
||||
|
||||
|
||||
--
|
||||
-- ABSTRACT DATA TYPE REMOVAL
|
||||
--
|
||||
DROP TYPE city_budget;
|
||||
|
||||
DROP TYPE widget;
|
||||
|
||||
|
||||
--
|
||||
-- RULE REMOVAL
|
||||
-- (is also tested in queries.source)
|
||||
--
|
||||
|
||||
--
|
||||
-- AGGREGATE REMOVAL
|
||||
--
|
||||
DROP AGGREGATE newavg;
|
||||
|
||||
DROP AGGREGATE newsum;
|
||||
|
||||
DROP AGGREGATE newcnt;
|
||||
|
||||
|
||||
--
|
||||
-- CLASS REMOVAL
|
||||
-- (inheritance hierarchies are deleted in reverse order)
|
||||
--
|
||||
|
||||
--
|
||||
-- DROP ancillary data structures (i.e. indices)
|
||||
--
|
||||
DROP INDEX onek_unique1;
|
||||
|
||||
DROP INDEX onek_unique2;
|
||||
|
||||
DROP INDEX onek_hundred;
|
||||
|
||||
DROP INDEX onek_stringu1;
|
||||
|
||||
DROP INDEX tenk1_unique1;
|
||||
|
||||
DROP INDEX tenk1_unique2;
|
||||
|
||||
DROP INDEX tenk1_hundred;
|
||||
|
||||
DROP INDEX tenk2_unique1;
|
||||
|
||||
DROP INDEX tenk2_unique2;
|
||||
|
||||
DROP INDEX tenk2_hundred;
|
||||
|
||||
-- DROP INDEX onek2_u1_prtl;
|
||||
|
||||
-- DROP INDEX onek2_u2_prtl;
|
||||
|
||||
-- DROP INDEX onek2_stu1_prtl;
|
||||
|
||||
DROP INDEX rect2ind;
|
||||
|
||||
DROP INDEX rix;
|
||||
|
||||
DROP INDEX iix;
|
||||
|
||||
DROP INDEX six;
|
||||
|
||||
DROP INDEX hash_i4_index;
|
||||
|
||||
DROP INDEX hash_c16_index;
|
||||
|
||||
DROP INDEX hash_txt_index;
|
||||
|
||||
DROP INDEX hash_f8_index;
|
||||
|
||||
-- DROP INDEX hash_ovfl_index;
|
||||
|
||||
DROP INDEX bt_i4_index;
|
||||
|
||||
DROP INDEX bt_c16_index;
|
||||
|
||||
DROP INDEX bt_txt_index;
|
||||
|
||||
DROP INDEX bt_f8_index;
|
||||
|
||||
|
||||
DROP TABLE onek;
|
||||
|
||||
DROP TABLE onek2;
|
||||
|
||||
DROP TABLE tenk1;
|
||||
|
||||
DROP TABLE tenk2;
|
||||
|
||||
DROP TABLE Bprime;
|
||||
|
||||
|
||||
DROP TABLE hobbies_r;
|
||||
|
||||
DROP TABLE equipment_r;
|
||||
|
||||
|
||||
DROP TABLE aggtest;
|
||||
|
||||
DROP TABLE xacttest;
|
||||
|
||||
DROP TABLE arrtest;
|
||||
|
||||
DROP TABLE iportaltest;
|
||||
|
||||
|
||||
DROP TABLE f_star;
|
||||
|
||||
DROP TABLE e_star;
|
||||
|
||||
DROP TABLE d_star;
|
||||
|
||||
DROP TABLE c_star;
|
||||
|
||||
DROP TABLE b_star;
|
||||
|
||||
DROP TABLE a_star;
|
||||
|
||||
|
||||
--
|
||||
-- must be in reverse inheritance order
|
||||
--
|
||||
DROP TABLE stud_emp;
|
||||
|
||||
DROP TABLE student;
|
||||
|
||||
DROP TABLE slow_emp4000;
|
||||
|
||||
DROP TABLE fast_emp4000;
|
||||
|
||||
DROP TABLE emp;
|
||||
|
||||
DROP TABLE person;
|
||||
|
||||
|
||||
DROP TABLE ramp;
|
||||
|
||||
DROP TABLE real_city;
|
||||
|
||||
DROP TABLE dept;
|
||||
|
||||
DROP TABLE ihighway;
|
||||
|
||||
DROP TABLE shighway;
|
||||
|
||||
DROP TABLE road;
|
||||
|
||||
DROP TABLE city;
|
||||
|
||||
|
||||
DROP TABLE hash_i4_heap;
|
||||
|
||||
DROP TABLE hash_c16_heap;
|
||||
|
||||
DROP TABLE hash_txt_heap;
|
||||
|
||||
DROP TABLE hash_f8_heap;
|
||||
|
||||
-- DROP TABLE hash_ovfl_heap;
|
||||
|
||||
DROP TABLE bt_i4_heap;
|
||||
|
||||
DROP TABLE bt_c16_heap;
|
||||
|
||||
DROP TABLE bt_txt_heap;
|
||||
|
||||
DROP TABLE bt_f8_heap;
|
||||
|
||||
|
||||
DROP TABLE BOOLTBL1;
|
||||
|
||||
DROP TABLE BOOLTBL2;
|
||||
|
||||
DROP TABLE ABSTIME_TBL;
|
||||
|
||||
DROP TABLE RELTIME_TBL;
|
||||
|
||||
DROP TABLE TINTERVAL_TBL;
|
||||
|
||||
DROP TABLE BOX_TBL;
|
||||
|
||||
DROP TABLE CHAR_TBL;
|
||||
|
||||
DROP TABLE CHAR2_TBL;
|
||||
|
||||
DROP TABLE CHAR4_TBL;
|
||||
|
||||
DROP TABLE CHAR8_TBL;
|
||||
|
||||
DROP TABLE CHAR16_TBL;
|
||||
|
||||
DROP TABLE FLOAT4_TBL;
|
||||
|
||||
DROP TABLE FLOAT8_TBL;
|
||||
|
||||
DROP TABLE INT2_TBL;
|
||||
|
||||
DROP TABLE INT4_TBL;
|
||||
|
||||
DROP TABLE OID_TBL;
|
||||
|
||||
DROP TABLE OIDNAME_TBL;
|
||||
|
||||
DROP TABLE OIDINT2_TBL;
|
||||
|
||||
DROP TABLE OIDINT4_TBL;
|
||||
|
||||
DROP TABLE POINT_TBL;
|
||||
|
||||
DROP TABLE POLYGON_TBL;
|
||||
|
||||
|
||||
--
|
||||
-- VIRTUAL CLASS REMOVAL
|
||||
-- (also tests removal of rewrite rules)
|
||||
--
|
||||
DROP VIEW street;
|
||||
|
||||
DROP VIEW iexit;
|
||||
|
||||
DROP VIEW toyemp;
|
||||
|
275
src/test/regress/sql/errors.sql
Normal file
275
src/test/regress/sql/errors.sql
Normal file
@ -0,0 +1,275 @@
|
||||
--
|
||||
-- errors.source
|
||||
--
|
||||
-- $Header: /cvsroot/pgsql/src/test/regress/sql/errors.sql,v 1.1 1997/04/27 03:56:21 scrappy Exp $
|
||||
|
||||
|
||||
-- bad in postquel, but ok in postsql
|
||||
select 1
|
||||
|
||||
|
||||
--
|
||||
-- UNSUPPORTED STUFF
|
||||
|
||||
-- doesn't work
|
||||
-- attachas nonesuch
|
||||
--
|
||||
-- doesn't work
|
||||
-- notify pg_class
|
||||
--
|
||||
|
||||
--
|
||||
-- RETRIEVE
|
||||
|
||||
-- missing relation name
|
||||
select
|
||||
|
||||
-- no such relation
|
||||
select * from nonesuch;
|
||||
|
||||
-- bad name in target list
|
||||
select nonesuch from pg_database;
|
||||
-- bad attribute name on lhs of operator
|
||||
select * from pg_database where nonesuch = pg_database.datname;
|
||||
|
||||
-- bad attribute name on rhs of operator
|
||||
select * from pg_database where pg_database.datname = nonesuch;
|
||||
|
||||
|
||||
-- bad select distinct on syntax, distinct attribute missing
|
||||
select distinct on foobar from pg_database;
|
||||
|
||||
|
||||
-- bad select distinct on syntax, distinct attribute not in target list
|
||||
select distinct on foobar * from pg_database;
|
||||
|
||||
|
||||
--
|
||||
-- DELETE
|
||||
|
||||
-- missing relation name (this had better not wildcard!)
|
||||
delete from;
|
||||
|
||||
-- no such relation
|
||||
delete from nonesuch;
|
||||
|
||||
|
||||
--
|
||||
-- DESTROY
|
||||
|
||||
-- missing relation name (this had better not wildcard!)
|
||||
drop table;
|
||||
|
||||
-- no such relation
|
||||
drop table nonesuch;
|
||||
|
||||
|
||||
--
|
||||
-- RENAME
|
||||
|
||||
|
||||
-- relation renaming
|
||||
|
||||
-- missing relation name
|
||||
alter table rename;
|
||||
|
||||
-- no such relation
|
||||
alter table nonesuch rename to newnonesuch;
|
||||
|
||||
-- no such relation
|
||||
alter table nonesuch rename to stud_emp;
|
||||
|
||||
-- system relation
|
||||
alter table stud_emp rename to pg_stud_emp;
|
||||
|
||||
-- conflict
|
||||
alter table stud_emp rename to aggtest;
|
||||
|
||||
-- self-conflict
|
||||
alter table stud_emp rename to stud_emp;
|
||||
|
||||
|
||||
-- attribute renaming
|
||||
|
||||
-- no such relation
|
||||
alter table nonesuchrel rename column nonesuchatt to newnonesuchatt;
|
||||
|
||||
-- no such attribute
|
||||
alter table emp rename column nonesuchatt to newnonesuchatt;
|
||||
|
||||
-- conflict
|
||||
alter table emp rename column salary to manager;
|
||||
|
||||
-- conflict
|
||||
alter table emp rename column salary to oid;
|
||||
|
||||
|
||||
--
|
||||
-- TRANSACTION STUFF
|
||||
|
||||
-- not in a xact
|
||||
abort;
|
||||
|
||||
-- not in a xact
|
||||
end;
|
||||
|
||||
|
||||
--
|
||||
-- DEFINE AGGREGATE
|
||||
|
||||
-- left out finalfunc
|
||||
create aggregate newavg1 (sfunc1 = int4pl,
|
||||
basetype = int4,
|
||||
stype1 = int4,
|
||||
sfunc2 = int4inc,
|
||||
stype2 = int4,
|
||||
initcond1 = '0',
|
||||
initcond2 = '0');
|
||||
|
||||
-- sfunc return type disagreement
|
||||
create aggregate newavg2 (sfunc1 = int4pl,
|
||||
basetype = int4,
|
||||
stype1 = int4,
|
||||
sfunc2 = int2inc,
|
||||
stype2 = int2,
|
||||
finalfunc = int4div,
|
||||
initcond1 = '0',
|
||||
initcond2 = '0');
|
||||
|
||||
-- sfunc/finalfunc type disagreement
|
||||
create aggregate newavg3 (sfunc1 = int4pl,
|
||||
basetype = int4,
|
||||
stype1 = int4,
|
||||
sfunc2 = int4inc,
|
||||
stype2 = int4,
|
||||
finalfunc = int2div,
|
||||
initcond1 = '0',
|
||||
initcond2 = '0');
|
||||
|
||||
-- left out basetype
|
||||
create aggregate newcnt1 (sfunc2 = int4inc,
|
||||
stype2 = int4,
|
||||
initcond2 = '0');
|
||||
|
||||
-- left out initcond2 (for sfunc2)
|
||||
create aggregate newcnt1 (sfunc2 = int4inc,
|
||||
basetype = int4,
|
||||
stype2 = int4);
|
||||
|
||||
|
||||
--
|
||||
-- REMOVE INDEX
|
||||
|
||||
-- missing index name
|
||||
drop index;
|
||||
|
||||
-- bad index name
|
||||
drop index 314159;
|
||||
|
||||
-- no such index
|
||||
drop index nonesuch;
|
||||
|
||||
|
||||
--
|
||||
-- REMOVE AGGREGATE
|
||||
|
||||
-- missing aggregate name
|
||||
drop aggregate;
|
||||
|
||||
-- bad aggregate name
|
||||
drop aggregate 314159;
|
||||
|
||||
-- no such aggregate
|
||||
drop aggregate nonesuch;
|
||||
|
||||
|
||||
--
|
||||
-- REMOVE FUNCTION
|
||||
|
||||
-- missing function name
|
||||
drop function ();
|
||||
|
||||
-- bad function name
|
||||
drop function 314159();
|
||||
|
||||
-- no such function
|
||||
drop function nonesuch();
|
||||
|
||||
|
||||
--
|
||||
-- REMOVE TYPE
|
||||
|
||||
-- missing type name
|
||||
drop type;
|
||||
|
||||
-- bad type name
|
||||
drop type 314159;
|
||||
|
||||
-- no such type
|
||||
drop type nonesuch;
|
||||
|
||||
|
||||
--
|
||||
-- DROP OPERATOR
|
||||
|
||||
-- missing everything
|
||||
drop operator;
|
||||
|
||||
-- bad operator name
|
||||
drop operator equals;
|
||||
|
||||
-- missing type list
|
||||
drop operator ===;
|
||||
|
||||
-- missing parentheses
|
||||
drop operator int4, int4;
|
||||
|
||||
-- missing operator name
|
||||
drop operator (int4, int4);
|
||||
|
||||
-- missing type list contents
|
||||
drop operator === ();
|
||||
|
||||
-- no such operator
|
||||
drop operator === (int4);
|
||||
|
||||
-- no such operator by that name
|
||||
drop operator === (int4, int4);
|
||||
|
||||
-- no such type1
|
||||
drop operator = (nonesuch);
|
||||
|
||||
-- no such type1
|
||||
drop operator = ( , int4);
|
||||
|
||||
-- no such type1
|
||||
drop operator = (nonesuch, int4);
|
||||
|
||||
-- no such type2
|
||||
drop operator = (int4, nonesuch);
|
||||
|
||||
-- no such type2
|
||||
drop operator = (int4, );
|
||||
|
||||
|
||||
--
|
||||
-- DROP RULE
|
||||
|
||||
-- missing rule name
|
||||
drop rule;
|
||||
|
||||
-- bad rule name
|
||||
drop rule 314159;
|
||||
|
||||
-- no such rule
|
||||
drop rule nonesuch;
|
||||
|
||||
-- bad keyword
|
||||
drop tuple rule nonesuch;
|
||||
|
||||
-- no such rule
|
||||
drop instance rule nonesuch;
|
||||
|
||||
-- no such rule
|
||||
drop rewrite rule nonesuch;
|
||||
|
43
src/test/regress/sql/timespan.sql
Normal file
43
src/test/regress/sql/timespan.sql
Normal file
@ -0,0 +1,43 @@
|
||||
CREATE TABLE TIMESPAN_TBL (f1 timespan);
|
||||
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 1 minute');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 5 hour');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 10 day');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 34 year');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 3 months');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 14 seconds ago');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('1 day 2 hours 3 minutes 4 seconds');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('6 years');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('5 months');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('5 months 12 hours');
|
||||
|
||||
-- badly formatted timespan:
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('badly formatted timespan');
|
||||
INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 30 eons ago');
|
||||
|
||||
-- test timespan operators
|
||||
|
||||
SELECT '' AS ten, TIMESPAN_TBL.*;
|
||||
|
||||
SELECT '' AS nine, TIMESPAN_TBL.*
|
||||
WHERE TIMESPAN_TBL.f1 <> '@ 10 days'::timespan;
|
||||
|
||||
SELECT '' AS three, TIMESPAN_TBL.*
|
||||
WHERE TIMESPAN_TBL.f1 <= '@ 5 hours'::timespan;
|
||||
|
||||
SELECT '' AS three, TIMESPAN_TBL.*
|
||||
WHERE TIMESPAN_TBL.f1 < '@ 1 day'::timespan;
|
||||
|
||||
SELECT '' AS one, TIMESPAN_TBL.*
|
||||
WHERE TIMESPAN_TBL.f1 = '@ 34 years'::timespan;
|
||||
|
||||
SELECT '' AS five, TIMESPAN_TBL.*
|
||||
WHERE TIMESPAN_TBL.f1 >= '@ 1 month'::timespan;
|
||||
|
||||
SELECT '' AS nine, TIMESPAN_TBL.*
|
||||
WHERE TIMESPAN_TBL.f1 > '@ 3 seconds ago'::timespan;
|
||||
|
||||
SELECT '' AS fortyfive, r1.*, r2.*
|
||||
FROM TIMESPAN_TBL r1, TIMESPAN_TBL r2
|
||||
WHERE r1.f1 > r2.f1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user