OSDN Git Service

*shrug*
authorMarc G. Fournier <scrappy@hub.org>
Sun, 27 Apr 1997 03:56:23 +0000 (03:56 +0000)
committerMarc G. Fournier <scrappy@hub.org>
Sun, 27 Apr 1997 03:56:23 +0000 (03:56 +0000)
src/test/regress/sql/datetime.sql [new file with mode: 0644]
src/test/regress/sql/destroy.sql [new file with mode: 0644]
src/test/regress/sql/errors.sql [new file with mode: 0644]
src/test/regress/sql/timespan.sql [new file with mode: 0644]

diff --git a/src/test/regress/sql/datetime.sql b/src/test/regress/sql/datetime.sql
new file mode 100644 (file)
index 0000000..b091094
--- /dev/null
@@ -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';
+
diff --git a/src/test/regress/sql/destroy.sql b/src/test/regress/sql/destroy.sql
new file mode 100644 (file)
index 0000000..8f32eb5
--- /dev/null
@@ -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;
+
diff --git a/src/test/regress/sql/errors.sql b/src/test/regress/sql/errors.sql
new file mode 100644 (file)
index 0000000..e3a080e
--- /dev/null
@@ -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;
+
diff --git a/src/test/regress/sql/timespan.sql b/src/test/regress/sql/timespan.sql
new file mode 100644 (file)
index 0000000..32eb893
--- /dev/null
@@ -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;
+