]> granicus.if.org Git - postgresql/commitdiff
Clean up format of tests.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Wed, 5 Jan 2000 06:07:58 +0000 (06:07 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Wed, 5 Jan 2000 06:07:58 +0000 (06:07 +0000)
Remove older "::" type coersion syntax in favor of extended SQL92 style.
Include a few new tests for datetime/timespan arithmetic.

22 files changed:
src/test/regress/sql/abstime.sql
src/test/regress/sql/box.sql
src/test/regress/sql/circle.sql
src/test/regress/sql/comments.sql
src/test/regress/sql/datetime.sql
src/test/regress/sql/geometry.sql
src/test/regress/sql/horology.sql
src/test/regress/sql/inet.sql
src/test/regress/sql/join.sql
src/test/regress/sql/lseg.sql
src/test/regress/sql/numeric.sql
src/test/regress/sql/numerology.sql
src/test/regress/sql/oidjoins.sql
src/test/regress/sql/opr_sanity.sql
src/test/regress/sql/path.sql
src/test/regress/sql/point.sql
src/test/regress/sql/polygon.sql
src/test/regress/sql/reltime.sql
src/test/regress/sql/strings.sql
src/test/regress/sql/timespan.sql
src/test/regress/sql/tinterval.sql
src/test/regress/sql/type_sanity.sql

index 8e9e7b90a296752fdd6772a02ad200e0c4f03c3e..019b1d6dc100533693c6ef951593214d83f7e4f2 100644 (file)
@@ -1,4 +1,8 @@
--- **** testing built-in time types: abstime, reltime, and tinterval ****
+--
+-- ABSTIME
+-- testing built-in time type abstime
+-- uses reltime and tinterval
+--
 
 --
 -- timezones may vary based not only on location but the operating
@@ -10,18 +14,18 @@ CREATE TABLE ABSTIME_TBL (f1 abstime);
 
 INSERT INTO ABSTIME_TBL (f1) VALUES ('Jan 14, 1973 03:14:21');
 
--- was INSERT INTO ABSTIME_TBL (f1) VALUES ('now'::abstime):
-INSERT INTO ABSTIME_TBL (f1) VALUES ('Mon May  1 00:30:30 1995'::abstime);
+-- was INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'now'):
+INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'Mon May  1 00:30:30 1995');
 
-INSERT INTO ABSTIME_TBL (f1) VALUES ('epoch'::abstime);
+INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'epoch');
 
-INSERT INTO ABSTIME_TBL (f1) VALUES ('current'::abstime);
+INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'current');
 
-INSERT INTO ABSTIME_TBL (f1) VALUES ('infinity'::abstime);
+INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'infinity');
 
-INSERT INTO ABSTIME_TBL (f1) VALUES ('-infinity'::abstime);
+INSERT INTO ABSTIME_TBL (f1) VALUES (abstime '-infinity');
 
-INSERT INTO ABSTIME_TBL (f1) VALUES ('May 10, 1947 23:59:12');
+INSERT INTO ABSTIME_TBL (f1) VALUES (abstime 'May 10, 1947 23:59:12');
 
 
 -- what happens if we specify slightly misformatted abstime? 
@@ -40,48 +44,48 @@ INSERT INTO ABSTIME_TBL (f1) VALUES ('Jun 10, 1843');
 SELECT '' AS eight, ABSTIME_TBL.*;
 
 SELECT '' AS six, ABSTIME_TBL.*
-   WHERE ABSTIME_TBL.f1 < 'Jun 30, 2001'::abstime;
+   WHERE ABSTIME_TBL.f1 < abstime 'Jun 30, 2001';
 
 SELECT '' AS six, ABSTIME_TBL.*
-   WHERE ABSTIME_TBL.f1 > '-infinity'::abstime;
+   WHERE ABSTIME_TBL.f1 > abstime '-infinity';
 
 SELECT '' AS six, ABSTIME_TBL.*
-   WHERE 'May 10, 1947 23:59:12'::abstime <> ABSTIME_TBL.f1;
+   WHERE abstime 'May 10, 1947 23:59:12' <> ABSTIME_TBL.f1;
 
 SELECT '' AS one, ABSTIME_TBL.*
-   WHERE 'current'::abstime = ABSTIME_TBL.f1;
+   WHERE abstime 'current' = ABSTIME_TBL.f1;
 
 SELECT '' AS three, ABSTIME_TBL.*
-   WHERE 'epoch'::abstime >= ABSTIME_TBL.f1;
+   WHERE abstime 'epoch' >= ABSTIME_TBL.f1;
 
 SELECT '' AS four, ABSTIME_TBL.*
-   WHERE ABSTIME_TBL.f1 <= 'Jan 14, 1973 03:14:21'::abstime;
+   WHERE ABSTIME_TBL.f1 <= abstime 'Jan 14, 1973 03:14:21';
 
 SELECT '' AS four, ABSTIME_TBL.*
   WHERE ABSTIME_TBL.f1 <?>
-       '["Apr 1 1950 00:00:00" "Dec 30 1999 23:00:00"]'::tinterval;
+       tinterval '["Apr 1 1950 00:00:00" "Dec 30 1999 23:00:00"]';
 
 -- these four queries should return the same answer
 -- the "infinity" and "-infinity" tuples in ABSTIME_TBL cannot be added and
 -- therefore, should not show up in the results.
 SELECT '' AS three, ABSTIME_TBL.*
-  WHERE  (ABSTIME_TBL.f1 + '@ 3 year'::reltime) -- +3 years
-       < 'Jan 14 14:00:00 1977'::abstime;
+  WHERE  (ABSTIME_TBL.f1 + reltime '@ 3 year') -- +3 years
+       < abstime 'Jan 14 14:00:00 1977';
 
 SELECT '' AS three, ABSTIME_TBL.*
-   WHERE  (ABSTIME_TBL.f1 + '@ 3 year ago'::reltime)   -- -3 years
-       < 'Jan 14 14:00:00 1971'::abstime;
+   WHERE  (ABSTIME_TBL.f1 + reltime '@ 3 year ago')    -- -3 years
+       < abstime 'Jan 14 14:00:00 1971';
 
 SELECT '' AS three, ABSTIME_TBL.*
-   WHERE  (ABSTIME_TBL.f1 - '@ 3 year'::reltime)        -- -(+3) years
-       < 'Jan 14 14:00:00 1971'::abstime;
+   WHERE  (ABSTIME_TBL.f1 - reltime '@ 3 year')        -- -(+3) years
+       < abstime 'Jan 14 14:00:00 1971';
 
 SELECT '' AS three, ABSTIME_TBL.*
-   WHERE  (ABSTIME_TBL.f1 - '@ 3 year ago'::reltime)    -- -(-3) years
-        < 'Jan 14 14:00:00 1977'::abstime;
+   WHERE  (ABSTIME_TBL.f1 - reltime '@ 3 year ago')    -- -(-3) years
+        < abstime 'Jan 14 14:00:00 1977';
 
 SELECT '' AS ten, ABSTIME_TBL.f1 AS abstime, RELTIME_TBL.f1 AS reltime
    WHERE (ABSTIME_TBL.f1 + RELTIME_TBL.f1)
-       < 'Jan 14 14:00:00 1971'::abstime
+       < abstime 'Jan 14 14:00:00 1971'
    ORDER BY abstime, reltime;
 
index 12125959c876e99283e781dfdb4c3192047fb8e9..bd28243c7ce4fb6497488bf25f433fada7600221 100644 (file)
@@ -1,4 +1,6 @@
---  ****************** test built-in type box ********************
+--
+-- BOX
+--
 
 --
 -- box logic
@@ -43,67 +45,67 @@ SELECT '' AS four, b.*, box_area(b.f1) as barea
 -- overlap 
 SELECT '' AS three, b.f1
    FROM BOX_TBL b  
-   WHERE b.f1 && '(2.5,2.5,1.0,1.0)'::box;
+   WHERE b.f1 && box '(2.5,2.5,1.0,1.0)';
 
 -- left-or-overlap (x only) 
 SELECT '' AS two, b1.*
    FROM BOX_TBL b1
-   WHERE b1.f1 &< '(2.0,2.0,2.5,2.5)'::box;
+   WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)';
 
 -- right-or-overlap (x only) 
 SELECT '' AS two, b1.*
    FROM BOX_TBL b1
-   WHERE b1.f1 &> '(2.0,2.0,2.5,2.5)'::box;
+   WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)';
 
 -- left of 
 SELECT '' AS two, b.f1
    FROM BOX_TBL b
-   WHERE b.f1 << '(3.0,3.0,5.0,5.0)'::box;
+   WHERE b.f1 << box '(3.0,3.0,5.0,5.0)';
 
 -- area <= 
 SELECT '' AS four, b.f1
    FROM BOX_TBL b
-   WHERE b.f1 <= '(3.0,3.0,5.0,5.0)'::box;
+   WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)';
 
 -- area < 
 SELECT '' AS two, b.f1
    FROM BOX_TBL b
-   WHERE b.f1 < '(3.0,3.0,5.0,5.0)'::box;
+   WHERE b.f1 < box '(3.0,3.0,5.0,5.0)';
 
 -- area = 
 SELECT '' AS two, b.f1
    FROM BOX_TBL b
-   WHERE b.f1 = '(3.0,3.0,5.0,5.0)'::box;
+   WHERE b.f1 = box '(3.0,3.0,5.0,5.0)';
 
 -- area > 
 SELECT '' AS two, b.f1
    FROM BOX_TBL b                              -- zero area 
-   WHERE b.f1 > '(3.5,3.0,4.5,3.0)'::box;      
+   WHERE b.f1 > box '(3.5,3.0,4.5,3.0)';       
 
 -- area >= 
 SELECT '' AS four, b.f1
    FROM BOX_TBL b                              -- zero area 
-   WHERE b.f1 >= '(3.5,3.0,4.5,3.0)'::box;
+   WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)';
 
 -- right of 
 SELECT '' AS two, b.f1
    FROM BOX_TBL b
-   WHERE '(3.0,3.0,5.0,5.0)'::box >> b.f1;
+   WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1;
 
 -- contained in 
 SELECT '' AS three, b.f1
    FROM BOX_TBL b
-   WHERE b.f1 @ '(0,0,3,3)'::box;
+   WHERE b.f1 @ box '(0,0,3,3)';
 
 -- contains 
 SELECT '' AS three, b.f1
    FROM BOX_TBL b
-   WHERE '(0,0,3,3)'::box ~ b.f1;
+   WHERE box '(0,0,3,3)' ~ b.f1;
 
 -- box equality 
 SELECT '' AS one, b.f1
    FROM BOX_TBL b
-   WHERE '(1,1,3,3)'::box ~= b.f1;
+   WHERE box '(1,1,3,3)' ~= b.f1;
 
 -- center of box, left unary operator 
 SELECT '' AS four, @@(b1.f1) AS p
index b430f72132ff8770e0c0c8d38f77b32993aeebe1..6590d0bf58e5d24ce892b7c078ae7d7a60f64397 100644 (file)
@@ -1,5 +1,5 @@
 --
--- circles
+-- CIRCLE
 --
 
 CREATE TABLE CIRCLE_TBL (f1 circle);
index 070917da657eb95934efb51ad0c64ccaba61f1ae..527988f4a5eabb95973128cf2aae932be2ce3c09 100644 (file)
@@ -1,5 +1,5 @@
 --
--- Comments
+-- COMMENTS
 --
 
 SELECT 'trailing' AS first; -- trailing single line
index 1961fbcb05bc8e8db9c27909308261b57c6d9773..3b9400c4b69257cb8689391e36e2ad478767131e 100644 (file)
@@ -1,14 +1,16 @@
--- *** testing new built-in time types: datetime, timespan ***
+--
+-- DATETIME
+--
 
 -- Shorthand values
 -- Not directly usable for regression testing since these are not constants.
 -- So, just try to test parser and hope for the best - tgl 97/04/26
 
-SELECT ('today'::datetime = ('yesterday'::datetime + '1 day'::timespan)) as "True";
-SELECT ('today'::datetime = ('tomorrow'::datetime - '1 day'::timespan)) as "True";
-SELECT ('tomorrow'::datetime = ('yesterday'::datetime + '2 days'::timespan)) as "True";
-SELECT ('current'::datetime = 'now'::datetime) as "True";
-SELECT ('now'::datetime - 'current'::datetime) AS "ZeroSecs";
+SELECT (datetime 'today' = (datetime 'yesterday' + timespan '1 day')) as "True";
+SELECT (datetime 'today' = (datetime 'tomorrow' - timespan '1 day')) as "True";
+SELECT (datetime 'tomorrow' = (datetime 'yesterday' + timespan '2 days')) as "True";
+SELECT (datetime 'current' = 'now') as "True";
+SELECT (datetime 'now' - 'current') AS "ZeroSecs";
 
 SET DateStyle = 'Postgres,noneuropean';
 SELECT datetime('1994-01-01', '11:00') AS "Jan_01_1994_11am";
@@ -22,13 +24,13 @@ INSERT INTO DATETIME_TBL VALUES ('tomorrow');
 INSERT INTO DATETIME_TBL VALUES ('tomorrow EST');
 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;
+SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = datetime 'today';
+SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = datetime 'tomorrow';
+SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = datetime 'yesterday';
+SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = datetime 'today' + timespan '1 day';
+SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = datetime 'today' - timespan '1 day';
 
-SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = 'now'::datetime;
+SELECT count(*) AS one FROM DATETIME_TBL WHERE d1 = datetime 'now';
 
 DELETE FROM DATETIME_TBL;
 
@@ -36,7 +38,7 @@ DELETE FROM DATETIME_TBL;
 INSERT INTO DATETIME_TBL VALUES ('current');
 BEGIN;
 INSERT INTO DATETIME_TBL VALUES ('now');
-SELECT count(*) AS two FROM DATETIME_TBL WHERE d1 = 'now'::datetime;
+SELECT count(*) AS two FROM DATETIME_TBL WHERE d1 = datetime 'now';
 END;
 DELETE FROM DATETIME_TBL;
 
@@ -125,31 +127,31 @@ 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;
+   WHERE d1 > datetime '1997-01-02' and d1 != datetime 'current';
 
 SELECT '' AS fifteen, d1 FROM DATETIME_TBL
-   WHERE d1 < '1997-01-02'::datetime and d1 != 'current'::datetime;
+   WHERE d1 < datetime '1997-01-02' and d1 != datetime 'current';
 
 SELECT '' AS one, d1 FROM DATETIME_TBL
-   WHERE d1 = '1997-01-02'::datetime and d1 != 'current'::datetime;
+   WHERE d1 = datetime '1997-01-02' and d1 != datetime 'current';
 
 SELECT '' AS fiftyeight, d1 FROM DATETIME_TBL
-   WHERE d1 != '1997-01-02'::datetime and d1 != 'current'::datetime;
+   WHERE d1 != datetime '1997-01-02' and d1 != datetime 'current';
 
 SELECT '' AS sixteen, d1 FROM DATETIME_TBL
-   WHERE d1 <= '1997-01-02'::datetime and d1 != 'current'::datetime;
+   WHERE d1 <= datetime '1997-01-02' and d1 != datetime 'current';
 
 SELECT '' AS fortyfour, d1 FROM DATETIME_TBL
-   WHERE d1 >= '1997-01-02'::datetime and d1 != 'current'::datetime;
+   WHERE d1 >= datetime '1997-01-02' and d1 != datetime 'current';
 
-SELECT '' AS sixtythree, d1 + '1 year'::timespan AS one_year FROM DATETIME_TBL;
+SELECT '' AS sixtythree, d1 + timespan '1 year' AS one_year FROM DATETIME_TBL;
 
-SELECT '' AS sixtythree, d1 - '1 year'::timespan AS one_year FROM DATETIME_TBL;
+SELECT '' AS sixtythree, d1 - timespan '1 year' 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
+--SELECT '' AS fifty, d1 - datetime '1997-01-02' AS diff
+--   FROM DATETIME_TBL WHERE d1 BETWEEN datetime '1902-01-01' AND datetime '2038-01-01';
+SELECT '' AS fifty, d1 - datetime '1997-01-02' 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,
index c27b31b6ef57f677002fea70744fb6d3849ceda0..a19b7883abe4132a4940deb5fed62d8ab609d3b2 100644 (file)
@@ -1,3 +1,7 @@
+--
+-- GEOMETRY
+--
+
 --
 -- Points
 --
@@ -21,22 +25,22 @@ SELECT '' AS two, (@@ f1) AS center
 -- "is horizontal" function
 SELECT '' AS two, p1.f1
    FROM POINT_TBL p1
-   WHERE ishorizontal(p1.f1, '(0,0)'::point);
+   WHERE ishorizontal(p1.f1, point '(0,0)');
 
 -- "is horizontal" operator
 SELECT '' AS two, p1.f1
    FROM POINT_TBL p1
-   WHERE p1.f1 ?- '(0,0)'::point;
+   WHERE p1.f1 ?- point '(0,0)';
 
 -- "is vertical" function
 SELECT '' AS one, p1.f1
    FROM POINT_TBL p1
-   WHERE isvertical(p1.f1, '(5.1,34.5)'::point);
+   WHERE isvertical(p1.f1, point '(5.1,34.5)');
 
 -- "is vertical" operator
 SELECT '' AS one, p1.f1
    FROM POINT_TBL p1
-   WHERE p1.f1 ?| '(5.1,34.5)'::point;
+   WHERE p1.f1 ?| point '(5.1,34.5)';
 
 --
 -- Line segments
@@ -73,7 +77,7 @@ SELECT '' AS twentyfour, b.f1 * p.f1 AS rotation
 
 SELECT '' AS twenty, b.f1 / p.f1 AS rotation
    FROM BOX_TBL b, POINT_TBL p
-   WHERE (p.f1 <-> '(0,0)'::point) >= 1;
+   WHERE (p.f1 <-> point '(0,0)') >= 1;
 
 --
 -- Paths
@@ -86,11 +90,11 @@ SELECT '' AS eight, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
 SELECT '' AS four, path(f1) FROM POLYGON_TBL;
 
 -- translation
-SELECT '' AS eight, p1.f1 + '(10,10)'::point AS dist_add
+SELECT '' AS eight, p1.f1 + point '(10,10)' AS dist_add
    FROM PATH_TBL p1;
 
 -- scaling and rotation
-SELECT '' AS eight, p1.f1 * '(2,-1)'::point AS dist_mul
+SELECT '' AS eight, p1.f1 * point '(2,-1)' AS dist_mul
    FROM PATH_TBL p1;
 
 RESET geqo;
index 4dae31af6ec1d1e5cb22f020b6b62a12211eb4e0..247910ffb642736024419d16d5305351bb85ea95 100644 (file)
@@ -1,11 +1,16 @@
 --
--- horology.sql
+-- HOROLOGY
 --
 
 --
 -- datetime, timespan arithmetic
 --
 
+SELECT datetime '1996-03-01' - timespan '1 second' AS "Feb 29";
+SELECT datetime '1999-03-01' - timespan '1 second' AS "Feb 28";
+SELECT datetime '2000-03-01' - timespan '1 second' AS "Feb 29";
+SELECT datetime '1999-12-01' + timespan '1 month - 1 second' AS "Dec 31";
+
 CREATE TABLE TEMP_DATETIME (f1 datetime);
 
 -- get some candidate input values
@@ -28,8 +33,8 @@ SELECT '' AS hundred, d.f1 AS datetime, t.f1 AS timespan, d.f1 - t.f1 AS minus
   WHERE isfinite(d.f1)
   ORDER BY minus, datetime, timespan;
 
-SELECT '' AS ten, d.f1 AS datetime, '1980-01-06 00:00 GMT'::datetime AS gpstime_zero,
-   d.f1 - '1980-01-06 00:00 GMT'::datetime AS difference
+SELECT '' AS ten, d.f1 AS datetime, datetime '1980-01-06 00:00 GMT' AS gpstime_zero,
+   d.f1 - datetime '1980-01-06 00:00 GMT' AS difference
   FROM TEMP_DATETIME d
   ORDER BY difference;
 
@@ -54,7 +59,7 @@ SELECT '' AS four, f1 AS abstime,
   date_part('day',f1) AS day, date_part('hour', f1) AS hour,
   date_part('minute', f1) AS minute, date_part('second', f1) AS second
   FROM ABSTIME_TBL
-  WHERE isfinite(f1) and f1 <> 'current'::abstime
+  WHERE isfinite(f1) and f1 <> abstime 'current'
   ORDER BY abstime;
 
 --
@@ -63,7 +68,7 @@ SELECT '' AS four, f1 AS abstime,
 
 SELECT '' AS ten, f1 AS datetime, date( f1) AS date
   FROM TEMP_DATETIME
-  WHERE f1 <> 'current'::datetime
+  WHERE f1 <> datetime 'current'
   ORDER BY date;
 
 SELECT '' AS ten, f1 AS datetime, abstime( f1) AS abstime
@@ -72,7 +77,7 @@ SELECT '' AS ten, f1 AS datetime, abstime( f1) AS abstime
 
 SELECT '' AS five, f1 AS abstime, date( f1) AS date
   FROM ABSTIME_TBL
-  WHERE isfinite(f1) AND f1 <> 'current'::abstime
+  WHERE isfinite(f1) AND f1 <> abstime 'current'
   ORDER BY date;
 
 SELECT '' AS five, d1 AS datetime, abstime(d1) AS abstime
index 785795a1d5d62c9fecffa538c01cef90ae4a9211..cc5a94503d7221dccf593da74019c22b5d5448cb 100644 (file)
@@ -1,4 +1,5 @@
--- INET regression tests
+--
+-- INET
 --
 
 -- prepare the table...
index dedff3a170b5b3b89fcbd06e56d77e309e92aa35..9e138d327bce55d68278707d560c3e6d09e857e8 100644 (file)
@@ -4,10 +4,10 @@
 -- Test join clauses
 --
 
-CREATE TABLE JOIN_TBL (
+CREATE TABLE JOIN1_TBL (
   i integer,
   j integer,
-  x text
+  t text
 );
 
 CREATE TABLE JOIN2_TBL (
@@ -15,10 +15,21 @@ CREATE TABLE JOIN2_TBL (
   k integer
 );
 
-INSERT INTO JOIN_TBL VALUES (1, 3, 'one');
-INSERT INTO JOIN_TBL VALUES (2, 2, 'two');
-INSERT INTO JOIN_TBL VALUES (3, 1, 'three');
-INSERT INTO JOIN_TBL VALUES (4, 0, 'four');
+CREATE TABLE JOIN3_TBL (
+  i integer,
+  j integer,
+  y integer
+);
+
+CREATE TABLE JOIN4_TBL (
+  k integer,
+  z integer
+);
+
+INSERT INTO JOIN1_TBL VALUES (1, 3, 'one');
+INSERT INTO JOIN1_TBL VALUES (2, 2, 'two');
+INSERT INTO JOIN1_TBL VALUES (3, 1, 'three');
+INSERT INTO JOIN1_TBL VALUES (4, 0, 'four');
 
 INSERT INTO JOIN2_TBL VALUES (1, -1);
 INSERT INTO JOIN2_TBL VALUES (2, 2);
@@ -26,27 +37,62 @@ INSERT INTO JOIN2_TBL VALUES (3, -3);
 INSERT INTO JOIN2_TBL VALUES (2, 4);
 
 
+--
+-- CROSS JOIN
+-- Qualifications are not allowed on cross joins,
+-- which degenerate into a standard unqualified inner join.
+--
+
+SELECT '' AS "xxx", *
+  FROM JOIN1_TBL CROSS JOIN JOIN2_TBL;
+
+SELECT '' AS "xxx", i, k, t
+  FROM JOIN1_TBL CROSS JOIN JOIN2_TBL;
+
+SELECT '' AS "xxx", ii, tt, kk
+  FROM JOIN1_TBL CROSS JOIN JOIN2_TBL AS JT (ii, jj, tt, ii2, kk);
+
+SELECT '' AS "xxx", jt.ii, jt.jj, jt.kk
+  FROM JOIN1_TBL CROSS JOIN JOIN2_TBL AS JT (ii, jj, tt, ii2, kk);
+
+
+--
 --
 -- Inner joins (equi-joins)
 --
+--
+
+--
+-- Inner joins (equi-joins) with USING clause
+-- The USING syntax changes the shape of the resulting table
+-- by including a column in the USING clause only once in the result.
+--
 
+-- Inner equi-join on all columns with the same name
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL CROSS JOIN JOIN2_TBL;
+  FROM JOIN1_TBL NATURAL JOIN JOIN2_TBL;
 
+-- Inner equi-join on specified column
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL NATURAL JOIN JOIN2_TBL;
+  FROM JOIN1_TBL INNER JOIN JOIN2_TBL USING (i);
 
+-- Same as above, slightly different syntax
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL INNER JOIN JOIN2_TBL USING (i);
+  FROM JOIN1_TBL JOIN JOIN2_TBL USING (i);
+
+
+--
+-- Inner joins (equi-joins)
+--
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL JOIN JOIN2_TBL ON (JOIN_TBL.i = JOIN2_TBL.i);
+  FROM JOIN1_TBL JOIN JOIN2_TBL ON (JOIN1_TBL.i = JOIN2_TBL.i);
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL JOIN JOIN2_TBL ON (JOIN_TBL.i = JOIN2_TBL.k);
+  FROM JOIN1_TBL JOIN JOIN2_TBL ON (JOIN1_TBL.i = JOIN2_TBL.k);
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL CROSS JOIN JOIN2_TBL;
+  FROM JOIN1_TBL CROSS JOIN JOIN2_TBL;
 
 
 --
@@ -54,7 +100,7 @@ SELECT '' AS "xxx", *
 --
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL JOIN JOIN2_TBL ON (JOIN_TBL.i <= JOIN2_TBL.k);
+  FROM JOIN1_TBL JOIN JOIN2_TBL ON (JOIN1_TBL.i <= JOIN2_TBL.k);
 
 
 --
@@ -62,16 +108,16 @@ SELECT '' AS "xxx", *
 --
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL OUTER JOIN JOIN2_TBL USING (i);
+  FROM JOIN1_TBL OUTER JOIN JOIN2_TBL USING (i);
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL LEFT OUTER JOIN JOIN2_TBL USING (i);
+  FROM JOIN1_TBL LEFT OUTER JOIN JOIN2_TBL USING (i);
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL RIGHT OUTER JOIN JOIN2_TBL USING (i);
+  FROM JOIN1_TBL RIGHT OUTER JOIN JOIN2_TBL USING (i);
 
 SELECT '' AS "xxx", *
-  FROM JOIN_TBL FULL OUTER JOIN JOIN2_TBL USING (i);
+  FROM JOIN1_TBL FULL OUTER JOIN JOIN2_TBL USING (i);
 
 
 --
@@ -82,6 +128,6 @@ SELECT '' AS "xxx", *
 -- Clean up
 --
 
-DROP TABLE JOIN_TBL;
+DROP TABLE JOIN1_TBL;
 DROP TABLE JOIN2_TBL;
 
index b43e62670612b2efea41386cdc40ad07292d94eb..9202f2d28457c6def71a814e2b4a050f3b220317 100644 (file)
@@ -1,4 +1,5 @@
 --
+-- LSEG
 -- Line segments
 --
 
@@ -19,7 +20,7 @@ INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)');
 
 select * from LSEG_TBL;
 
-SELECT * FROM LSEG_TBL WHERE s <= '[(1,2),(3,4)]'::lseg;
+SELECT * FROM LSEG_TBL WHERE s <= lseg '[(1,2),(3,4)]';
 
-SELECT * FROM LSEG_TBL WHERE (s <-> '[(1,2),(3,4)]'::lseg) < 10;
+SELECT * FROM LSEG_TBL WHERE (s <-> lseg '[(1,2),(3,4)]') < 10;
 
index a1a2ae27e207ea74ef2983db7b4335204a24b4ed..fdd7ade10c4b4404bc03088e761c29063b203098 100644 (file)
@@ -1,6 +1,6 @@
--- ******************************
--- * Test suite for the Postgres NUMERIC data type
--- ******************************
+--
+-- NUMERIC
+--
 
 CREATE TABLE num_data (id int4, val numeric(210,10));
 CREATE TABLE num_exp_add (id1 int4, id2 int4, expected numeric(210,10));
@@ -614,7 +614,7 @@ SELECT t1.id1, t1.result, t2.expected
 -- * Logarithm base 10 check
 -- ******************************
 DELETE FROM num_result;
-INSERT INTO num_result SELECT id, 0, LOG('10'::numeric, ABS(val))
+INSERT INTO num_result SELECT id, 0, LOG(numeric '10', ABS(val))
     FROM num_data
     WHERE val != '0.0';
 SELECT t1.id1, t1.result, t2.expected
@@ -626,7 +626,7 @@ SELECT t1.id1, t1.result, t2.expected
 -- * POWER(10, LN(value)) check
 -- ******************************
 DELETE FROM num_result;
-INSERT INTO num_result SELECT id, 0, POWER('10'::numeric, LN(ABS(round(val,200))))
+INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200))))
     FROM num_data
     WHERE val != '0.0';
 SELECT t1.id1, t1.result, t2.expected
index 65791aa125d5bdd947a38af6cbf6a2950cddcec7..35975f3bd61f25b9e623634614f290e76dea2934 100644 (file)
@@ -1,5 +1,6 @@
 --
--- numerology.sql
+-- NUMEROLOGY
+-- Test various combinations of numeric types and functions.
 --
 
 --
index a6a7723ebd86a17b586ba026318b1d46e0629b58..27b6034a3320975a5745236cc0b96f09bbec1ecc 100644 (file)
 --
+-- OIDJOIN
 -- This is created by pgsql/contrib/findoidjoins/make_oidjoin_check
 --
-SELECT oid, pg_aggregate.aggtransfn1 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggtransfn1 != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_aggregate.aggtransfn1);
-SELECT oid, pg_aggregate.aggtransfn2 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggtransfn2 != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_aggregate.aggtransfn2);
-SELECT oid, pg_aggregate.aggfinalfn 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggfinalfn != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_aggregate.aggfinalfn);
-SELECT oid, pg_aggregate.aggbasetype 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggbasetype != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggbasetype);
-SELECT oid, pg_aggregate.aggtranstype1 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggtranstype1 != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggtranstype1);
-SELECT oid, pg_aggregate.aggtranstype2 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggtranstype2 != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggtranstype2);
-SELECT oid, pg_aggregate.aggfinaltype 
-FROM   pg_aggregate 
-WHERE  pg_aggregate.aggfinaltype != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggfinaltype);
-SELECT oid, pg_am.amgettuple 
-FROM   pg_am 
-WHERE  pg_am.amgettuple != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amgettuple);
-SELECT oid, pg_am.aminsert 
-FROM   pg_am 
-WHERE  pg_am.aminsert != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.aminsert);
-SELECT oid, pg_am.amdelete 
-FROM   pg_am 
-WHERE  pg_am.amdelete != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amdelete);
-SELECT oid, pg_am.ambeginscan 
-FROM   pg_am 
-WHERE  pg_am.ambeginscan != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambeginscan);
-SELECT oid, pg_am.amrescan 
-FROM   pg_am 
-WHERE  pg_am.amrescan != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrescan);
-SELECT oid, pg_am.amendscan 
-FROM   pg_am 
-WHERE  pg_am.amendscan != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amendscan);
-SELECT oid, pg_am.ammarkpos 
-FROM   pg_am 
-WHERE  pg_am.ammarkpos != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ammarkpos);
-SELECT oid, pg_am.amrestrpos 
-FROM   pg_am 
-WHERE  pg_am.amrestrpos != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrestrpos);
-SELECT oid, pg_am.ambuild 
-FROM   pg_am 
-WHERE  pg_am.ambuild != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambuild);
-SELECT oid, pg_amop.amopid 
-FROM   pg_amop 
-WHERE  pg_amop.amopid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amop.amopid);
-SELECT oid, pg_amop.amopclaid 
-FROM   pg_amop 
-WHERE  pg_amop.amopclaid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amop.amopclaid);
-SELECT oid, pg_amop.amopopr 
-FROM   pg_amop 
-WHERE  pg_amop.amopopr != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_amop.amopopr);
-SELECT oid, pg_amop.amopselect 
-FROM   pg_amop 
-WHERE  pg_amop.amopselect != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amop.amopselect);
-SELECT oid, pg_amop.amopnpages 
-FROM   pg_amop 
-WHERE  pg_amop.amopnpages != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amop.amopnpages);
-SELECT oid, pg_amproc.amid 
-FROM   pg_amproc 
-WHERE  pg_amproc.amid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amproc.amid);
-SELECT oid, pg_amproc.amopclaid 
-FROM   pg_amproc 
-WHERE  pg_amproc.amopclaid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amproc.amopclaid);
-SELECT oid, pg_amproc.amproc 
-FROM   pg_amproc 
-WHERE  pg_amproc.amproc != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amproc.amproc);
-SELECT oid, pg_attribute.attrelid 
-FROM   pg_attribute 
-WHERE  pg_attribute.attrelid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_attribute.attrelid);
-SELECT oid, pg_attribute.atttypid 
-FROM   pg_attribute 
-WHERE  pg_attribute.atttypid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_attribute.atttypid);
-SELECT oid, pg_class.reltype 
-FROM   pg_class 
-WHERE  pg_class.reltype != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_class.reltype);
-SELECT oid, pg_class.relam 
-FROM   pg_class 
-WHERE  pg_class.relam != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_class.relam);
-SELECT oid, pg_index.indexrelid 
-FROM   pg_index 
-WHERE  pg_index.indexrelid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indexrelid);
-SELECT oid, pg_index.indrelid 
-FROM   pg_index 
-WHERE  pg_index.indrelid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indrelid);
-SELECT oid, pg_opclass.opcdeftype 
-FROM   pg_opclass 
-WHERE  pg_opclass.opcdeftype != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_opclass.opcdeftype);
-SELECT oid, pg_operator.oprleft 
-FROM   pg_operator 
-WHERE  pg_operator.oprleft != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprleft);
-SELECT oid, pg_operator.oprright 
-FROM   pg_operator 
-WHERE  pg_operator.oprright != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprright);
-SELECT oid, pg_operator.oprresult 
-FROM   pg_operator 
-WHERE  pg_operator.oprresult != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprresult);
-SELECT oid, pg_operator.oprcom 
-FROM   pg_operator 
-WHERE  pg_operator.oprcom != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprcom);
-SELECT oid, pg_operator.oprnegate 
-FROM   pg_operator 
-WHERE  pg_operator.oprnegate != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprnegate);
-SELECT oid, pg_operator.oprlsortop 
-FROM   pg_operator 
-WHERE  pg_operator.oprlsortop != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprlsortop);
-SELECT oid, pg_operator.oprrsortop 
-FROM   pg_operator 
-WHERE  pg_operator.oprrsortop != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprrsortop);
-SELECT oid, pg_operator.oprcode 
-FROM   pg_operator 
-WHERE  pg_operator.oprcode != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprcode);
-SELECT oid, pg_operator.oprrest 
-FROM   pg_operator 
-WHERE  pg_operator.oprrest != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprrest);
-SELECT oid, pg_operator.oprjoin 
-FROM   pg_operator 
-WHERE  pg_operator.oprjoin != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprjoin);
-SELECT oid, pg_proc.prolang 
-FROM   pg_proc 
-WHERE  pg_proc.prolang != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_language AS t1 WHERE t1.oid = pg_proc.prolang);
-SELECT oid, pg_proc.prorettype 
-FROM   pg_proc 
-WHERE  pg_proc.prorettype != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_proc.prorettype);
-SELECT oid, pg_rewrite.ev_class 
-FROM   pg_rewrite 
-WHERE  pg_rewrite.ev_class != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_rewrite.ev_class);
-SELECT oid, pg_type.typrelid 
-FROM   pg_type 
-WHERE  pg_type.typrelid != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_type.typrelid);
-SELECT oid, pg_type.typelem 
-FROM   pg_type 
-WHERE  pg_type.typelem != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_type.typelem);
-SELECT oid, pg_type.typinput 
-FROM   pg_type 
-WHERE  pg_type.typinput != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typinput);
-SELECT oid, pg_type.typoutput 
-FROM   pg_type 
-WHERE  pg_type.typoutput != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typoutput);
-SELECT oid, pg_type.typreceive 
-FROM   pg_type 
-WHERE  pg_type.typreceive != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typreceive);
-SELECT oid, pg_type.typsend 
-FROM   pg_type 
-WHERE  pg_type.typsend != 0 AND 
-       NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typsend);
+
+SELECT oid, pg_aggregate.aggtransfn1 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggtransfn1 != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_aggregate.aggtransfn1);
+SELECT oid, pg_aggregate.aggtransfn2 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggtransfn2 != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_aggregate.aggtransfn2);
+SELECT oid, pg_aggregate.aggfinalfn 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggfinalfn != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_aggregate.aggfinalfn);
+SELECT oid, pg_aggregate.aggbasetype 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggbasetype != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggbasetype);
+SELECT oid, pg_aggregate.aggtranstype1 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggtranstype1 != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggtranstype1);
+SELECT oid, pg_aggregate.aggtranstype2 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggtranstype2 != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggtranstype2);
+SELECT oid, pg_aggregate.aggfinaltype 
+  FROM pg_aggregate 
+  WHERE pg_aggregate.aggfinaltype != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_aggregate.aggfinaltype);
+SELECT oid, pg_am.amgettuple 
+  FROM pg_am 
+  WHERE pg_am.amgettuple != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amgettuple);
+SELECT oid, pg_am.aminsert 
+  FROM pg_am 
+  WHERE pg_am.aminsert != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.aminsert);
+SELECT oid, pg_am.amdelete 
+  FROM pg_am 
+  WHERE pg_am.amdelete != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amdelete);
+SELECT oid, pg_am.ambeginscan 
+  FROM pg_am 
+  WHERE pg_am.ambeginscan != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambeginscan);
+SELECT oid, pg_am.amrescan 
+  FROM pg_am 
+  WHERE pg_am.amrescan != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrescan);
+SELECT oid, pg_am.amendscan 
+  FROM pg_am 
+  WHERE pg_am.amendscan != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amendscan);
+SELECT oid, pg_am.ammarkpos 
+  FROM pg_am 
+  WHERE pg_am.ammarkpos != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ammarkpos);
+SELECT oid, pg_am.amrestrpos 
+  FROM pg_am 
+  WHERE pg_am.amrestrpos != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrestrpos);
+SELECT oid, pg_am.ambuild 
+  FROM pg_am 
+  WHERE pg_am.ambuild != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambuild);
+SELECT oid, pg_amop.amopid 
+  FROM pg_amop 
+  WHERE pg_amop.amopid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amop.amopid);
+SELECT oid, pg_amop.amopclaid 
+  FROM pg_amop 
+  WHERE pg_amop.amopclaid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amop.amopclaid);
+SELECT oid, pg_amop.amopopr 
+  FROM pg_amop 
+  WHERE pg_amop.amopopr != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_amop.amopopr);
+SELECT oid, pg_amop.amopselect 
+  FROM pg_amop 
+  WHERE pg_amop.amopselect != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amop.amopselect);
+SELECT oid, pg_amop.amopnpages 
+  FROM pg_amop 
+  WHERE pg_amop.amopnpages != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amop.amopnpages);
+SELECT oid, pg_amproc.amid 
+  FROM pg_amproc 
+  WHERE pg_amproc.amid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amproc.amid);
+SELECT oid, pg_amproc.amopclaid 
+  FROM pg_amproc 
+  WHERE pg_amproc.amopclaid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amproc.amopclaid);
+SELECT oid, pg_amproc.amproc 
+  FROM pg_amproc 
+  WHERE pg_amproc.amproc != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amproc.amproc);
+SELECT oid, pg_attribute.attrelid 
+  FROM pg_attribute 
+  WHERE pg_attribute.attrelid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_attribute.attrelid);
+SELECT oid, pg_attribute.atttypid 
+  FROM pg_attribute 
+  WHERE pg_attribute.atttypid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_attribute.atttypid);
+SELECT oid, pg_class.reltype 
+  FROM pg_class 
+  WHERE pg_class.reltype != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_class.reltype);
+SELECT oid, pg_class.relam 
+  FROM pg_class 
+  WHERE pg_class.relam != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_class.relam);
+SELECT oid, pg_index.indexrelid 
+  FROM pg_index 
+  WHERE pg_index.indexrelid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indexrelid);
+SELECT oid, pg_index.indrelid 
+  FROM pg_index 
+  WHERE pg_index.indrelid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indrelid);
+SELECT oid, pg_opclass.opcdeftype 
+  FROM pg_opclass 
+  WHERE pg_opclass.opcdeftype != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_opclass.opcdeftype);
+SELECT oid, pg_operator.oprleft 
+  FROM pg_operator 
+  WHERE pg_operator.oprleft != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprleft);
+SELECT oid, pg_operator.oprright 
+  FROM pg_operator 
+  WHERE pg_operator.oprright != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprright);
+SELECT oid, pg_operator.oprresult 
+  FROM pg_operator 
+  WHERE pg_operator.oprresult != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprresult);
+SELECT oid, pg_operator.oprcom 
+  FROM pg_operator 
+  WHERE pg_operator.oprcom != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprcom);
+SELECT oid, pg_operator.oprnegate 
+  FROM pg_operator 
+  WHERE pg_operator.oprnegate != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprnegate);
+SELECT oid, pg_operator.oprlsortop 
+  FROM pg_operator 
+  WHERE pg_operator.oprlsortop != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprlsortop);
+SELECT oid, pg_operator.oprrsortop 
+  FROM pg_operator 
+  WHERE pg_operator.oprrsortop != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprrsortop);
+SELECT oid, pg_operator.oprcode 
+  FROM pg_operator 
+  WHERE pg_operator.oprcode != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprcode);
+SELECT oid, pg_operator.oprrest 
+  FROM pg_operator 
+  WHERE pg_operator.oprrest != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprrest);
+SELECT oid, pg_operator.oprjoin 
+  FROM pg_operator 
+  WHERE pg_operator.oprjoin != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprjoin);
+SELECT oid, pg_proc.prolang 
+  FROM pg_proc 
+  WHERE pg_proc.prolang != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_language AS t1 WHERE t1.oid = pg_proc.prolang);
+SELECT oid, pg_proc.prorettype 
+  FROM pg_proc 
+  WHERE pg_proc.prorettype != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_proc.prorettype);
+SELECT oid, pg_rewrite.ev_class 
+  FROM pg_rewrite 
+  WHERE pg_rewrite.ev_class != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_rewrite.ev_class);
+SELECT oid, pg_type.typrelid 
+  FROM pg_type 
+  WHERE pg_type.typrelid != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_type.typrelid);
+SELECT oid, pg_type.typelem 
+  FROM pg_type 
+  WHERE pg_type.typelem != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_type.typelem);
+SELECT oid, pg_type.typinput 
+  FROM pg_type 
+  WHERE pg_type.typinput != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typinput);
+SELECT oid, pg_type.typoutput 
+  FROM pg_type 
+  WHERE pg_type.typoutput != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typoutput);
+SELECT oid, pg_type.typreceive 
+  FROM pg_type 
+  WHERE pg_type.typreceive != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typreceive);
+SELECT oid, pg_type.typsend 
+  FROM pg_type 
+  WHERE pg_type.typsend != 0 AND 
+    NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typsend);
+
index a465d26a06994f1f4893279162cff02022605037..9964f5c1e12ced383951249ce853f15f4baf16af 100644 (file)
@@ -1,4 +1,5 @@
 --
+-- OPR_SANITY
 -- Sanity checks for common errors in making operator/procedure system tables:
 -- pg_operator, pg_proc, pg_aggregate, pg_am, pg_amop, pg_amproc, pg_opclass.
 --
index 11a3bb30a72ed2abd6d1fe234d628114395d63e4..36cb7c8109f490cb421bcfee081ce74a70cc75b5 100644 (file)
@@ -1,5 +1,5 @@
 --
--- path.sql
+-- PATH
 --
 
 --DROP TABLE PATH_TBL;
index 336ffa299fa8ec4b6206848de0b3360d277769ac..6c6867c43253d73f1daef33c3b768b69642aa020 100644 (file)
@@ -1,4 +1,6 @@
---  ************testing built-in type point ****************
+--
+-- POINT
+--
 
 CREATE TABLE POINT_TBL(f1 point);
 
@@ -41,15 +43,15 @@ SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
 
 -- point in box 
 SELECT '' AS three, p.* FROM POINT_TBL p
-   WHERE p.f1 @ '(0,0,100,100)'::box;
+   WHERE p.f1 @ box '(0,0,100,100)';
 
 SELECT '' AS three, p.* FROM POINT_TBL p
-   WHERE not p.f1 @ '(0,0,100,100)'::box;
+   WHERE not p.f1 @ box '(0,0,100,100)';
 
 SELECT '' AS two, p.* FROM POINT_TBL p
-   WHERE p.f1 @ '[(0,0),(-10,0),(-10,10)]'::path;
+   WHERE p.f1 @ path '[(0,0),(-10,0),(-10,10)]';
 
-SELECT '' AS six, p.f1, p.f1 <-> '(0,0)'::point AS dist
+SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist
    FROM POINT_TBL p
    ORDER BY dist;
 
index 977e602348c9e1d7240feb9602f1ddda2721d1de..99d674e8d29dcd414176ca091065f2a28c2269c4 100644 (file)
@@ -1,4 +1,5 @@
--- *************testing built-in type polygon ****************
+--
+-- POLYGON
 --
 -- polygon logic
 --
@@ -67,17 +68,17 @@ SELECT '' AS zero, p.*
 -- contained 
 SELECT '' AS one, p.* 
    FROM POLYGON_TBL p
-   WHERE p.f1 @ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
+   WHERE p.f1 @ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
 -- same 
 SELECT '' AS one, p.*
    FROM POLYGON_TBL p
-   WHERE p.f1 ~= '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
+   WHERE p.f1 ~= polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
 -- contains 
 SELECT '' AS one, p.*
    FROM POLYGON_TBL p
-   WHERE p.f1 ~ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
+   WHERE p.f1 ~ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
 --
 -- polygon logic
@@ -93,26 +94,26 @@ SELECT '' AS one, p.*
 --     0 1 2 3 4
 --
 -- left of 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon << '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' << polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
 -- left overlap 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon << '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS true;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' << polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
 
 -- right overlap 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon &> '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS true;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' &> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
 
 -- right of 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon >> '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' >> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
 -- contained in 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon @ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' @ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
 -- contains 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon ~ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' ~ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
 -- same 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon ~= '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS false;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' ~= polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
 -- overlap 
-SELECT '(2.0,0.0),(2.0,4.0),(0.0,0.0)'::polygon && '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon AS true;
+SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' && polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
 
index d11b48f0960d2f310256a778d712ecc6b6de43cc..53295d3e66bdd31941f8502a143908937aa7f9cb 100644 (file)
@@ -1,3 +1,7 @@
+--
+-- RELTIME
+--
+
 CREATE TABLE RELTIME_TBL (f1 reltime);
 
 INSERT INTO RELTIME_TBL (f1) VALUES ('@ 1 minute');
@@ -13,7 +17,7 @@ INSERT INTO RELTIME_TBL (f1) VALUES ('@ 3 months');
 INSERT INTO RELTIME_TBL (f1) VALUES ('@ 14 seconds ago');
 
 
--- badly formatted reltimes:   
+-- badly formatted reltimes
 INSERT INTO RELTIME_TBL (f1) VALUES ('badly formatted reltime');
 
 INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
@@ -23,22 +27,22 @@ INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
 SELECT '' AS six, RELTIME_TBL.*;
 
 SELECT '' AS five, RELTIME_TBL.*
-   WHERE RELTIME_TBL.f1 <> '@ 10 days'::reltime;
+   WHERE RELTIME_TBL.f1 <> reltime '@ 10 days';
 
 SELECT '' AS three, RELTIME_TBL.*
-   WHERE RELTIME_TBL.f1 <= '@ 5 hours'::reltime;
+   WHERE RELTIME_TBL.f1 <= reltime '@ 5 hours';
 
 SELECT '' AS three, RELTIME_TBL.*
-   WHERE RELTIME_TBL.f1 < '@ 1 day'::reltime;
+   WHERE RELTIME_TBL.f1 < reltime '@ 1 day';
 
 SELECT '' AS one, RELTIME_TBL.*
-   WHERE RELTIME_TBL.f1 = '@ 34 years'::reltime;
+   WHERE RELTIME_TBL.f1 = reltime '@ 34 years';
 
 SELECT '' AS two, RELTIME_TBL.* 
-   WHERE RELTIME_TBL.f1 >= '@ 1 month'::reltime;
+   WHERE RELTIME_TBL.f1 >= reltime '@ 1 month';
 
 SELECT '' AS five, RELTIME_TBL.*
-   WHERE RELTIME_TBL.f1 > '@ 3 seconds ago'::reltime;
+   WHERE RELTIME_TBL.f1 > reltime '@ 3 seconds ago';
 
 SELECT '' AS fifteen, r1.*, r2.*
    FROM RELTIME_TBL r1, RELTIME_TBL r2
index e2c86449aeffa45fedd6d28750b7690145cb4d18..7be0073a6fcbfe3aaa04a2aa723e199f4f5dd5d4 100644 (file)
@@ -1,4 +1,5 @@
 --
+-- STRINGS
 -- Test various data entry syntaxes.
 --
 
index df103edae0aa4b9a29aeed0eface819439ae06fd..0ce18514d8b56d740f99f7036e34fc3b3930bb68 100644 (file)
@@ -1,3 +1,7 @@
+--
+-- TIMESPAN
+--
+
 CREATE TABLE TIMESPAN_TBL (f1 timespan);
 
 INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 1 minute');
@@ -11,7 +15,7 @@ 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:   
+-- badly formatted timespan
 INSERT INTO TIMESPAN_TBL (f1) VALUES ('badly formatted timespan');
 INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 30 eons ago');
 
@@ -20,22 +24,22 @@ INSERT INTO TIMESPAN_TBL (f1) VALUES ('@ 30 eons ago');
 SELECT '' AS ten, TIMESPAN_TBL.*;
 
 SELECT '' AS nine, TIMESPAN_TBL.*
-   WHERE TIMESPAN_TBL.f1 <> '@ 10 days'::timespan;
+   WHERE TIMESPAN_TBL.f1 <> timespan '@ 10 days';
 
 SELECT '' AS three, TIMESPAN_TBL.*
-   WHERE TIMESPAN_TBL.f1 <= '@ 5 hours'::timespan;
+   WHERE TIMESPAN_TBL.f1 <= timespan '@ 5 hours';
 
 SELECT '' AS three, TIMESPAN_TBL.*
-   WHERE TIMESPAN_TBL.f1 < '@ 1 day'::timespan;
+   WHERE TIMESPAN_TBL.f1 < timespan '@ 1 day';
 
 SELECT '' AS one, TIMESPAN_TBL.*
-   WHERE TIMESPAN_TBL.f1 = '@ 34 years'::timespan;
+   WHERE TIMESPAN_TBL.f1 = timespan '@ 34 years';
 
 SELECT '' AS five, TIMESPAN_TBL.* 
-   WHERE TIMESPAN_TBL.f1 >= '@ 1 month'::timespan;
+   WHERE TIMESPAN_TBL.f1 >= timespan '@ 1 month';
 
 SELECT '' AS nine, TIMESPAN_TBL.*
-   WHERE TIMESPAN_TBL.f1 > '@ 3 seconds ago'::timespan;
+   WHERE TIMESPAN_TBL.f1 > timespan '@ 3 seconds ago';
 
 SELECT '' AS fortyfive, r1.*, r2.*
    FROM TIMESPAN_TBL r1, TIMESPAN_TBL r2
index b2a3d93c4e96d5b3351c2ea17c52bb9b5ee59cc6..3ba0cd6c194606653144b9b8187ea289781fb7ce 100644 (file)
@@ -1,3 +1,7 @@
+--
+-- TINTERVAL
+--
+
 CREATE TABLE TINTERVAL_TBL (f1  tinterval);
 
 INSERT INTO TINTERVAL_TBL (f1)
@@ -61,7 +65,7 @@ SELECT '' AS three, t.*
 SELECT '' AS three, t1.*
    FROM TINTERVAL_TBL t1
    WHERE t1.f1 &&
-        '["Aug 15 14:23:19 1983" "Sep 16 14:23:19 1983"]'::tinterval;
+        tinterval '["Aug 15 14:23:19 1983" "Sep 16 14:23:19 1983"]';
 
 SET geqo TO 'off';
 
@@ -80,15 +84,15 @@ SELECT '' AS fourteen, t1.f1 AS interval1, t2.f1 AS interval2
 SELECT '' AS five, t1.f1
    FROM TINTERVAL_TBL t1
    WHERE not t1.f1 << 
-        '["Aug 15 14:23:19 1980" "Sep 16 14:23:19 1990"]'::tinterval
+        tinterval '["Aug 15 14:23:19 1980" "Sep 16 14:23:19 1990"]'
    ORDER BY t1.f1;
 
 -- make time interval
 SELECT '' AS three, t1.f1
    FROM TINTERVAL_TBL t1
    WHERE t1.f1 &&
-        ('Aug 15 14:23:19 1983'::abstime <#>
-         'Sep 16 14:23:19 1983'::abstime)
+        (abstime 'Aug 15 14:23:19 1983' <#>
+         abstime 'Sep 16 14:23:19 1983')
    ORDER BY t1.f1;
 
 RESET geqo;
index a6635fe779f174f1c34caa878e6175643e603a44..312fd2857af110b2e92b5e9ac863c293ec8998db 100644 (file)
@@ -1,4 +1,5 @@
 --
+-- TYPE_SANITY
 -- Sanity checks for common errors in making type-related system tables:
 -- pg_type, pg_class, pg_attribute.
 --