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 -- 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); CREATE TABLE INTERVAL_TBL (f1 interval);
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour');
...@@ -19,136 +63,152 @@ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago'); ...@@ -19,136 +63,152 @@ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
ERROR: Bad interval external representation '@ 30 eons ago' ERROR: Bad interval external representation '@ 30 eons ago'
-- test interval operators -- test interval operators
SELECT '' AS ten, INTERVAL_TBL.*; SELECT '' AS ten, INTERVAL_TBL.*;
ten | f1 ten | f1
-----+------------------------------- -----+-----------------
| @ 1 min | +00:01
| @ 5 hours | +05:00
| @ 10 days | 10 +00:00
| @ 34 years | 34 years +00:00
| @ 3 mons | 3 mons +00:00
| @ 14 secs ago | -00:00:14
| @ 1 day 2 hours 3 mins 4 secs | 1 +02:03:04
| @ 6 years | 6 years +00:00
| @ 5 mons | 5 mons +00:00
| @ 5 mons 12 hours | 5 mons +12:00
(10 rows) (10 rows)
SELECT '' AS nine, INTERVAL_TBL.* SELECT '' AS nine, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days'; WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
nine | f1 nine | f1
------+------------------------------- ------+-----------------
| @ 1 min | +00:01
| @ 5 hours | +05:00
| @ 34 years | 34 years +00:00
| @ 3 mons | 3 mons +00:00
| @ 14 secs ago | -00:00:14
| @ 1 day 2 hours 3 mins 4 secs | 1 +02:03:04
| @ 6 years | 6 years +00:00
| @ 5 mons | 5 mons +00:00
| @ 5 mons 12 hours | 5 mons +12:00
(9 rows) (9 rows)
SELECT '' AS three, INTERVAL_TBL.* SELECT '' AS three, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours'; WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
three | f1 three | f1
-------+--------------- -------+-----------
| @ 1 min | +00:01
| @ 5 hours | +05:00
| @ 14 secs ago | -00:00:14
(3 rows) (3 rows)
SELECT '' AS three, INTERVAL_TBL.* SELECT '' AS three, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 < interval '@ 1 day'; WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
three | f1 three | f1
-------+--------------- -------+-----------
| @ 1 min | +00:01
| @ 5 hours | +05:00
| @ 14 secs ago | -00:00:14
(3 rows) (3 rows)
SELECT '' AS one, INTERVAL_TBL.* SELECT '' AS one, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 = interval '@ 34 years'; WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
one | f1 one | f1
-----+------------ -----+-----------------
| @ 34 years | 34 years +00:00
(1 row) (1 row)
SELECT '' AS five, INTERVAL_TBL.* SELECT '' AS five, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month'; WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
five | f1 five | f1
------+------------------- ------+-----------------
| @ 34 years | 34 years +00:00
| @ 3 mons | 3 mons +00:00
| @ 6 years | 6 years +00:00
| @ 5 mons | 5 mons +00:00
| @ 5 mons 12 hours | 5 mons +12:00
(5 rows) (5 rows)
SELECT '' AS nine, INTERVAL_TBL.* SELECT '' AS nine, INTERVAL_TBL.*
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago'; WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
nine | f1 nine | f1
------+------------------------------- ------+-----------------
| @ 1 min | +00:01
| @ 5 hours | +05:00
| @ 10 days | 10 +00:00
| @ 34 years | 34 years +00:00
| @ 3 mons | 3 mons +00:00
| @ 1 day 2 hours 3 mins 4 secs | 1 +02:03:04
| @ 6 years | 6 years +00:00
| @ 5 mons | 5 mons +00:00
| @ 5 mons 12 hours | 5 mons +12:00
(9 rows) (9 rows)
SELECT '' AS fortyfive, r1.*, r2.* SELECT '' AS fortyfive, r1.*, r2.*
FROM INTERVAL_TBL r1, INTERVAL_TBL r2 FROM INTERVAL_TBL r1, INTERVAL_TBL r2
WHERE r1.f1 > r2.f1 WHERE r1.f1 > r2.f1
ORDER BY r1.f1, r2.f1; ORDER BY r1.f1, r2.f1;
fortyfive | f1 | f1 fortyfive | f1 | f1
-----------+-------------------------------+------------------------------- -----------+-----------------+----------------
| @ 1 min | @ 14 secs ago | +00:01 | -00:00:14
| @ 5 hours | @ 14 secs ago | +05:00 | -00:00:14
| @ 5 hours | @ 1 min | +05:00 | +00:01
| @ 1 day 2 hours 3 mins 4 secs | @ 14 secs ago | 1 +02:03:04 | -00:00:14
| @ 1 day 2 hours 3 mins 4 secs | @ 1 min | 1 +02:03:04 | +00:01
| @ 1 day 2 hours 3 mins 4 secs | @ 5 hours | 1 +02:03:04 | +05:00
| @ 10 days | @ 14 secs ago | 10 +00:00 | -00:00:14
| @ 10 days | @ 1 min | 10 +00:00 | +00:01
| @ 10 days | @ 5 hours | 10 +00:00 | +05:00
| @ 10 days | @ 1 day 2 hours 3 mins 4 secs | 10 +00:00 | 1 +02:03:04
| @ 3 mons | @ 14 secs ago | 3 mons +00:00 | -00:00:14
| @ 3 mons | @ 1 min | 3 mons +00:00 | +00:01
| @ 3 mons | @ 5 hours | 3 mons +00:00 | +05:00
| @ 3 mons | @ 1 day 2 hours 3 mins 4 secs | 3 mons +00:00 | 1 +02:03:04
| @ 3 mons | @ 10 days | 3 mons +00:00 | 10 +00:00
| @ 5 mons | @ 14 secs ago | 5 mons +00:00 | -00:00:14
| @ 5 mons | @ 1 min | 5 mons +00:00 | +00:01
| @ 5 mons | @ 5 hours | 5 mons +00:00 | +05:00
| @ 5 mons | @ 1 day 2 hours 3 mins 4 secs | 5 mons +00:00 | 1 +02:03:04
| @ 5 mons | @ 10 days | 5 mons +00:00 | 10 +00:00
| @ 5 mons | @ 3 mons | 5 mons +00:00 | 3 mons +00:00
| @ 5 mons 12 hours | @ 14 secs ago | 5 mons +12:00 | -00:00:14
| @ 5 mons 12 hours | @ 1 min | 5 mons +12:00 | +00:01
| @ 5 mons 12 hours | @ 5 hours | 5 mons +12:00 | +05:00
| @ 5 mons 12 hours | @ 1 day 2 hours 3 mins 4 secs | 5 mons +12:00 | 1 +02:03:04
| @ 5 mons 12 hours | @ 10 days | 5 mons +12:00 | 10 +00:00
| @ 5 mons 12 hours | @ 3 mons | 5 mons +12:00 | 3 mons +00:00
| @ 5 mons 12 hours | @ 5 mons | 5 mons +12:00 | 5 mons +00:00
| @ 6 years | @ 14 secs ago | 6 years +00:00 | -00:00:14
| @ 6 years | @ 1 min | 6 years +00:00 | +00:01
| @ 6 years | @ 5 hours | 6 years +00:00 | +05:00
| @ 6 years | @ 1 day 2 hours 3 mins 4 secs | 6 years +00:00 | 1 +02:03:04
| @ 6 years | @ 10 days | 6 years +00:00 | 10 +00:00
| @ 6 years | @ 3 mons | 6 years +00:00 | 3 mons +00:00
| @ 6 years | @ 5 mons | 6 years +00:00 | 5 mons +00:00
| @ 6 years | @ 5 mons 12 hours | 6 years +00:00 | 5 mons +12:00
| @ 34 years | @ 14 secs ago | 34 years +00:00 | -00:00:14
| @ 34 years | @ 1 min | 34 years +00:00 | +00:01
| @ 34 years | @ 5 hours | 34 years +00:00 | +05:00
| @ 34 years | @ 1 day 2 hours 3 mins 4 secs | 34 years +00:00 | 1 +02:03:04
| @ 34 years | @ 10 days | 34 years +00:00 | 10 +00:00
| @ 34 years | @ 3 mons | 34 years +00:00 | 3 mons +00:00
| @ 34 years | @ 5 mons | 34 years +00:00 | 5 mons +00:00
| @ 34 years | @ 5 mons 12 hours | 34 years +00:00 | 5 mons +12:00
| @ 34 years | @ 6 years | 34 years +00:00 | 6 years +00:00
(45 rows) (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 @@ ...@@ -2,6 +2,17 @@
-- INTERVAL -- 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); CREATE TABLE INTERVAL_TBL (f1 interval);
INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute');
...@@ -46,3 +57,6 @@ SELECT '' AS fortyfive, r1.*, r2.* ...@@ -46,3 +57,6 @@ SELECT '' AS fortyfive, r1.*, r2.*
WHERE r1.f1 > r2.f1 WHERE r1.f1 > r2.f1
ORDER BY 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 ( ...@@ -14,27 +14,28 @@ CREATE TABLE J2_TBL (
k integer 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 (1, 4, 'one');
INSERT INTO J1_TBL VALUES (2, 2, 'two'); INSERT INTO J1_TBL VALUES (2, 3, 'two');
INSERT INTO J1_TBL VALUES (3, 1, 'three'); INSERT INTO J1_TBL VALUES (3, 2, 'three');
INSERT INTO J1_TBL VALUES (4, 0, 'four'); 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 (1, -1);
INSERT INTO J2_TBL VALUES (2, 2); INSERT INTO J2_TBL VALUES (2, 2);
INSERT INTO J2_TBL VALUES (3, -3); INSERT INTO J2_TBL VALUES (3, -3);
INSERT INTO J2_TBL VALUES (2, 4); 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 (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 -- CORRELATION NAMES
...@@ -159,18 +160,33 @@ SELECT '' AS "xxx", * ...@@ -159,18 +160,33 @@ SELECT '' AS "xxx", *
-- --
-- Outer joins -- Outer joins
-- Note that OUTER is a noise word
-- --
SELECT '' AS "xxx", * SELECT '' AS "xxx", *
FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i); 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", * SELECT '' AS "xxx", *
FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i); 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", * SELECT '' AS "xxx", *
FROM J1_TBL FULL JOIN J2_TBL USING (i); 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 -- 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