Commit 07272c6f authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Add tests for more INTERVAL syntax.

Add more tests for JOIN syntax.
All tests pass on my Linux box (except for the usual couple of lines
 for geometry).
parent 8e8fc32b
This diff is collapsed.
--
-- INTERVAL
--
SET DATESTYLE = DEFAULT;
-- check acceptance of "time zone style"
SELECT INTERVAL '01:00';
?column?
----------
+01:00
(1 row)
SELECT INTERVAL '+02:00';
?column?
----------
+02:00
(1 row)
SELECT INTERVAL '-08:00';
?column?
----------
-08:00
(1 row)
SELECT INTERVAL '-05';
?column?
-----------
-00:00:05
(1 row)
SELECT INTERVAL '-1 +02:03';
?column?
----------
-21:57
(1 row)
SELECT INTERVAL '-1 days +02:03';
?column?
----------
-21:57
(1 row)
SELECT INTERVAL '10 years -11 month -12 days +13:14';
?column?
--------------------------
9 years 1 mon -11 -10:46
(1 row)
CREATE TABLE INTERVAL_TBL (f1 interval);
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour');
......@@ -19,136 +63,152 @@ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
ERROR: Bad interval external representation '@ 30 eons ago'
-- test interval operators
SELECT '' AS ten, INTERVAL_TBL.*;
ten | f1
-----+-------------------------------
| @ 1 min
| @ 5 hours
| @ 10 days
| @ 34 years
| @ 3 mons
| @ 14 secs ago
| @ 1 day 2 hours 3 mins 4 secs
| @ 6 years
| @ 5 mons
| @ 5 mons 12 hours
ten | f1
-----+-----------------
| +00:01
| +05:00
| 10 +00:00
| 34 years +00:00
| 3 mons +00:00
| -00:00:14
| 1 +02:03:04
| 6 years +00:00
| 5 mons +00:00
| 5 mons +12:00
(10 rows)
SELECT '' AS nine, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
nine | f1
------+-------------------------------
| @ 1 min
| @ 5 hours
| @ 34 years
| @ 3 mons
| @ 14 secs ago
| @ 1 day 2 hours 3 mins 4 secs
| @ 6 years
| @ 5 mons
| @ 5 mons 12 hours
nine | f1
------+-----------------
| +00:01
| +05:00
| 34 years +00:00
| 3 mons +00:00
| -00:00:14
| 1 +02:03:04
| 6 years +00:00
| 5 mons +00:00
| 5 mons +12:00
(9 rows)
SELECT '' AS three, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
three | f1
-------+---------------
| @ 1 min
| @ 5 hours
| @ 14 secs ago
three | f1
-------+-----------
| +00:01
| +05:00
| -00:00:14
(3 rows)
SELECT '' AS three, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
three | f1
-------+---------------
| @ 1 min
| @ 5 hours
| @ 14 secs ago
three | f1
-------+-----------
| +00:01
| +05:00
| -00:00:14
(3 rows)
SELECT '' AS one, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
one | f1
-----+------------
| @ 34 years
one | f1
-----+-----------------
| 34 years +00:00
(1 row)
SELECT '' AS five, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
five | f1
------+-------------------
| @ 34 years
| @ 3 mons
| @ 6 years
| @ 5 mons
| @ 5 mons 12 hours
five | f1
------+-----------------
| 34 years +00:00
| 3 mons +00:00
| 6 years +00:00
| 5 mons +00:00
| 5 mons +12:00
(5 rows)
SELECT '' AS nine, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
nine | f1
------+-------------------------------
| @ 1 min
| @ 5 hours
| @ 10 days
| @ 34 years
| @ 3 mons
| @ 1 day 2 hours 3 mins 4 secs
| @ 6 years
| @ 5 mons
| @ 5 mons 12 hours
nine | f1
------+-----------------
| +00:01
| +05:00
| 10 +00:00
| 34 years +00:00
| 3 mons +00:00
| 1 +02:03:04
| 6 years +00:00
| 5 mons +00:00
| 5 mons +12:00
(9 rows)
SELECT '' AS fortyfive, r1.*, r2.*
FROM INTERVAL_TBL r1, INTERVAL_TBL r2
WHERE r1.f1 > r2.f1
ORDER BY r1.f1, r2.f1;
fortyfive | f1 | f1
-----------+-------------------------------+-------------------------------
| @ 1 min | @ 14 secs ago
| @ 5 hours | @ 14 secs ago
| @ 5 hours | @ 1 min
| @ 1 day 2 hours 3 mins 4 secs | @ 14 secs ago
| @ 1 day 2 hours 3 mins 4 secs | @ 1 min
| @ 1 day 2 hours 3 mins 4 secs | @ 5 hours
| @ 10 days | @ 14 secs ago
| @ 10 days | @ 1 min
| @ 10 days | @ 5 hours
| @ 10 days | @ 1 day 2 hours 3 mins 4 secs
| @ 3 mons | @ 14 secs ago
| @ 3 mons | @ 1 min
| @ 3 mons | @ 5 hours
| @ 3 mons | @ 1 day 2 hours 3 mins 4 secs
| @ 3 mons | @ 10 days
| @ 5 mons | @ 14 secs ago
| @ 5 mons | @ 1 min
| @ 5 mons | @ 5 hours
| @ 5 mons | @ 1 day 2 hours 3 mins 4 secs
| @ 5 mons | @ 10 days
| @ 5 mons | @ 3 mons
| @ 5 mons 12 hours | @ 14 secs ago
| @ 5 mons 12 hours | @ 1 min
| @ 5 mons 12 hours | @ 5 hours
| @ 5 mons 12 hours | @ 1 day 2 hours 3 mins 4 secs
| @ 5 mons 12 hours | @ 10 days
| @ 5 mons 12 hours | @ 3 mons
| @ 5 mons 12 hours | @ 5 mons
| @ 6 years | @ 14 secs ago
| @ 6 years | @ 1 min
| @ 6 years | @ 5 hours
| @ 6 years | @ 1 day 2 hours 3 mins 4 secs
| @ 6 years | @ 10 days
| @ 6 years | @ 3 mons
| @ 6 years | @ 5 mons
| @ 6 years | @ 5 mons 12 hours
| @ 34 years | @ 14 secs ago
| @ 34 years | @ 1 min
| @ 34 years | @ 5 hours
| @ 34 years | @ 1 day 2 hours 3 mins 4 secs
| @ 34 years | @ 10 days
| @ 34 years | @ 3 mons
| @ 34 years | @ 5 mons
| @ 34 years | @ 5 mons 12 hours
| @ 34 years | @ 6 years
fortyfive | f1 | f1
-----------+-----------------+----------------
| +00:01 | -00:00:14
| +05:00 | -00:00:14
| +05:00 | +00:01
| 1 +02:03:04 | -00:00:14
| 1 +02:03:04 | +00:01
| 1 +02:03:04 | +05:00
| 10 +00:00 | -00:00:14
| 10 +00:00 | +00:01
| 10 +00:00 | +05:00
| 10 +00:00 | 1 +02:03:04
| 3 mons +00:00 | -00:00:14
| 3 mons +00:00 | +00:01
| 3 mons +00:00 | +05:00
| 3 mons +00:00 | 1 +02:03:04
| 3 mons +00:00 | 10 +00:00
| 5 mons +00:00 | -00:00:14
| 5 mons +00:00 | +00:01
| 5 mons +00:00 | +05:00
| 5 mons +00:00 | 1 +02:03:04
| 5 mons +00:00 | 10 +00:00
| 5 mons +00:00 | 3 mons +00:00
| 5 mons +12:00 | -00:00:14
| 5 mons +12:00 | +00:01
| 5 mons +12:00 | +05:00
| 5 mons +12:00 | 1 +02:03:04
| 5 mons +12:00 | 10 +00:00
| 5 mons +12:00 | 3 mons +00:00
| 5 mons +12:00 | 5 mons +00:00
| 6 years +00:00 | -00:00:14
| 6 years +00:00 | +00:01
| 6 years +00:00 | +05:00
| 6 years +00:00 | 1 +02:03:04
| 6 years +00:00 | 10 +00:00
| 6 years +00:00 | 3 mons +00:00
| 6 years +00:00 | 5 mons +00:00
| 6 years +00:00 | 5 mons +12:00
| 34 years +00:00 | -00:00:14
| 34 years +00:00 | +00:01
| 34 years +00:00 | +05:00
| 34 years +00:00 | 1 +02:03:04
| 34 years +00:00 | 10 +00:00
| 34 years +00:00 | 3 mons +00:00
| 34 years +00:00 | 5 mons +00:00
| 34 years +00:00 | 5 mons +12:00
| 34 years +00:00 | 6 years +00:00
(45 rows)
SET DATESTYLE = 'postgres';
SELECT '' AS ten, INTERVAL_TBL.*;
ten | f1
-----+-------------------------------
| @ 1 min
| @ 5 hours
| @ 10 days
| @ 34 years
| @ 3 mons
| @ 14 secs ago
| @ 1 day 2 hours 3 mins 4 secs
| @ 6 years
| @ 5 mons
| @ 5 mons 12 hours
(10 rows)
This diff is collapsed.
......@@ -2,6 +2,17 @@
-- INTERVAL
--
SET DATESTYLE = DEFAULT;
-- check acceptance of "time zone style"
SELECT INTERVAL '01:00';
SELECT INTERVAL '+02:00';
SELECT INTERVAL '-08:00';
SELECT INTERVAL '-05';
SELECT INTERVAL '-1 +02:03';
SELECT INTERVAL '-1 days +02:03';
SELECT INTERVAL '10 years -11 month -12 days +13:14';
CREATE TABLE INTERVAL_TBL (f1 interval);
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
......@@ -46,3 +57,6 @@ SELECT '' AS fortyfive, r1.*, r2.*
WHERE r1.f1 > r2.f1
ORDER BY r1.f1, r2.f1;
SET DATESTYLE = 'postgres';
SELECT '' AS ten, INTERVAL_TBL.*;
......@@ -14,27 +14,28 @@ CREATE TABLE J2_TBL (
k integer
);
CREATE TABLE JOIN3_TBL (
i integer,
j integer,
y integer
);
CREATE TABLE JOIN4_TBL (
k integer,
z integer
);
INSERT INTO J1_TBL VALUES (1, 3, 'one');
INSERT INTO J1_TBL VALUES (2, 2, 'two');
INSERT INTO J1_TBL VALUES (3, 1, 'three');
INSERT INTO J1_TBL VALUES (4, 0, 'four');
INSERT INTO J1_TBL VALUES (1, 4, 'one');
INSERT INTO J1_TBL VALUES (2, 3, 'two');
INSERT INTO J1_TBL VALUES (3, 2, 'three');
INSERT INTO J1_TBL VALUES (4, 1, 'four');
INSERT INTO J1_TBL VALUES (5, 0, 'five');
INSERT INTO J1_TBL VALUES (6, 6, 'six');
INSERT INTO J1_TBL VALUES (7, 7, 'seven');
INSERT INTO J1_TBL VALUES (8, 8, 'eight');
INSERT INTO J1_TBL VALUES (0, NULL, 'zero');
INSERT INTO J1_TBL VALUES (NULL, NULL, 'null');
INSERT INTO J1_TBL VALUES (NULL, 0, 'zero');
INSERT INTO J2_TBL VALUES (1, -1);
INSERT INTO J2_TBL VALUES (2, 2);
INSERT INTO J2_TBL VALUES (3, -3);
INSERT INTO J2_TBL VALUES (2, 4);
INSERT INTO J2_TBL VALUES (5, -5);
INSERT INTO J2_TBL VALUES (5, -5);
INSERT INTO J2_TBL VALUES (0, NULL);
INSERT INTO J2_TBL VALUES (NULL, NULL);
INSERT INTO J2_TBL VALUES (NULL, 0);
--
-- CORRELATION NAMES
......@@ -159,18 +160,33 @@ SELECT '' AS "xxx", *
--
-- Outer joins
-- Note that OUTER is a noise word
--
SELECT '' AS "xxx", *
FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i);
SELECT '' AS "xxx", *
FROM J1_TBL LEFT JOIN J2_TBL USING (i);
SELECT '' AS "xxx", *
FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i);
-- Note that OUTER is a noise word
SELECT '' AS "xxx", *
FROM J1_TBL RIGHT JOIN J2_TBL USING (i);
SELECT '' AS "xxx", *
FROM J1_TBL FULL OUTER JOIN J2_TBL USING (i);
SELECT '' AS "xxx", *
FROM J1_TBL FULL JOIN J2_TBL USING (i);
SELECT '' AS "xxx", *
FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (k = 1);
SELECT '' AS "xxx", *
FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (i = 1);
--
-- More complicated constructs
......
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