Commit 4c4e68dc authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Clean up format of tests.

Remove older "::" type coersion syntax in favor of extended SQL92 style.
Include a few new tests for datetime/timespan arithmetic.
parent d8310553
-- **** 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;
-- ****************** 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
......
--
-- circles
-- CIRCLE
--
CREATE TABLE CIRCLE_TBL (f1 circle);
......
--
-- Comments
-- COMMENTS
--
SELECT 'trailing' AS first; -- trailing single line
......
-- *** 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,
......
--
-- 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;
......
--
-- 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
......
-- INET regression tests
--
-- INET
--
-- prepare the table...
......
......@@ -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;
--
-- 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;
-- ******************************
-- * 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
......
--
-- numerology.sql
-- NUMEROLOGY
-- Test various combinations of numeric types and functions.
--
--
......
This diff is collapsed.
--
-- 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.
--
......
--
-- path.sql
-- PATH
--
--DROP TABLE PATH_TBL;
......
-- ************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;
......
-- *************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;
--
-- 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
......
--
-- STRINGS
-- Test various data entry syntaxes.
--
......
--
-- 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
......
--
-- 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;
......
--
-- TYPE_SANITY
-- Sanity checks for common errors in making type-related system tables:
-- pg_type, pg_class, pg_attribute.
--
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment