Clean up ancient test style

Many older tests where written in a style like

    SELECT '' AS two, i.* FROM INT2_TBL

where the first column indicated the number of expected result rows.
This has gotten increasingly out of date, as the test data fixtures
have expanded, so a lot of these were wrong and misleading.  Moreover,
this style isn't really necessary, since the psql output already shows
the number of result rows.

To clean this up, remove all those extra columns.

Discussion: https://www.postgresql.org/message-id/flat/1a25312b-2686-380d-3c67-7a69094a999f%40enterprisedb.com
This commit is contained in:
Peter Eisentraut 2020-12-15 21:54:06 +01:00
parent b3817f5f77
commit c06d6aa4c3
61 changed files with 9225 additions and 9225 deletions

View File

@ -226,48 +226,48 @@ INSERT INTO BOOLTBL1 (f1) VALUES (bool 't');
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True'); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True');
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true'); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');
-- BOOLTBL1 should be full of true's at this point -- BOOLTBL1 should be full of true's at this point
SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1; SELECT BOOLTBL1.* FROM BOOLTBL1;
t_3 | f1 f1
-----+---- ----
| t t
| t t
| t t
(3 rows) (3 rows)
SELECT '' AS t_3, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 = bool 'true'; WHERE f1 = bool 'true';
t_3 | f1 f1
-----+---- ----
| t t
| t t
| t t
(3 rows) (3 rows)
SELECT '' AS t_3, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 <> bool 'false'; WHERE f1 <> bool 'false';
t_3 | f1 f1
-----+---- ----
| t t
| t t
| t t
(3 rows) (3 rows)
SELECT '' AS zero, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE booleq(bool 'false', f1); WHERE booleq(bool 'false', f1);
zero | f1 f1
------+---- ----
(0 rows) (0 rows)
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f'); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
SELECT '' AS f_1, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 = bool 'false'; WHERE f1 = bool 'false';
f_1 | f1 f1
-----+---- ----
| f f
(1 row) (1 row)
CREATE TABLE BOOLTBL2 (f1 bool); CREATE TABLE BOOLTBL2 (f1 bool);
@ -283,86 +283,86 @@ ERROR: invalid input syntax for type boolean: "XXX"
LINE 2: VALUES (bool 'XXX'); LINE 2: VALUES (bool 'XXX');
^ ^
-- BOOLTBL2 should be full of false's at this point -- BOOLTBL2 should be full of false's at this point
SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2; SELECT BOOLTBL2.* FROM BOOLTBL2;
f_4 | f1 f1
-----+---- ----
| f f
| f f
| f f
| f f
(4 rows) (4 rows)
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE BOOLTBL2.f1 <> BOOLTBL1.f1; WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
tf_12 | f1 | f1 f1 | f1
-------+----+---- ----+----
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
(12 rows) (12 rows)
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1); WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
tf_12 | f1 | f1 f1 | f1
-------+----+---- ----+----
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
(12 rows) (12 rows)
SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false'; WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
ff_4 | f1 | f1 f1 | f1
------+----+---- ----+----
| f | f f | f
| f | f f | f
| f | f f | f
| f | f f | f
(4 rows) (4 rows)
SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true' WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
ORDER BY BOOLTBL1.f1, BOOLTBL2.f1; ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
tf_12_ff_4 | f1 | f1 f1 | f1
------------+----+---- ----+----
| f | f f | f
| f | f f | f
| f | f f | f
| f | f f | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
| t | f t | f
(16 rows) (16 rows)
-- --
@ -370,76 +370,76 @@ SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
-- Try all combinations to ensure that we get nothing when we expect nothing -- Try all combinations to ensure that we get nothing when we expect nothing
-- - thomas 2000-01-04 -- - thomas 2000-01-04
-- --
SELECT '' AS "True", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS TRUE; WHERE f1 IS TRUE;
True | f1 f1
------+---- ----
| t t
| t t
| t t
(3 rows) (3 rows)
SELECT '' AS "Not False", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS NOT FALSE; WHERE f1 IS NOT FALSE;
Not False | f1 f1
-----------+---- ----
| t t
| t t
| t t
(3 rows) (3 rows)
SELECT '' AS "False", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS FALSE; WHERE f1 IS FALSE;
False | f1 f1
-------+---- ----
| f f
(1 row) (1 row)
SELECT '' AS "Not True", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS NOT TRUE; WHERE f1 IS NOT TRUE;
Not True | f1 f1
----------+---- ----
| f f
(1 row) (1 row)
SELECT '' AS "True", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS TRUE; WHERE f1 IS TRUE;
True | f1 f1
------+---- ----
(0 rows) (0 rows)
SELECT '' AS "Not False", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS NOT FALSE; WHERE f1 IS NOT FALSE;
Not False | f1 f1
-----------+---- ----
(0 rows) (0 rows)
SELECT '' AS "False", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS FALSE; WHERE f1 IS FALSE;
False | f1 f1
-------+---- ----
| f f
| f f
| f f
| f f
(4 rows) (4 rows)
SELECT '' AS "Not True", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS NOT TRUE; WHERE f1 IS NOT TRUE;
Not True | f1 f1
----------+---- ----
| f f
| f f
| f f
| f f
(4 rows) (4 rows)
-- --

View File

@ -44,197 +44,197 @@ INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
ERROR: invalid input syntax for type box: "asdfasdf(ad" ERROR: invalid input syntax for type box: "asdfasdf(ad"
LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad'); LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
^ ^
SELECT '' AS four, * FROM BOX_TBL; SELECT * FROM BOX_TBL;
four | f1 f1
------+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (-2,2),(-8,-10) (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
| (3,3),(3,3) (3,3),(3,3)
(5 rows) (5 rows)
SELECT '' AS four, b.*, area(b.f1) as barea SELECT b.*, area(b.f1) as barea
FROM BOX_TBL b; FROM BOX_TBL b;
four | f1 | barea f1 | barea
------+---------------------+------- ---------------------+-------
| (2,2),(0,0) | 4 (2,2),(0,0) | 4
| (3,3),(1,1) | 4 (3,3),(1,1) | 4
| (-2,2),(-8,-10) | 72 (-2,2),(-8,-10) | 72
| (2.5,3.5),(2.5,2.5) | 0 (2.5,3.5),(2.5,2.5) | 0
| (3,3),(3,3) | 0 (3,3),(3,3) | 0
(5 rows) (5 rows)
-- overlap -- overlap
SELECT '' AS three, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 && box '(2.5,2.5,1.0,1.0)'; WHERE b.f1 && box '(2.5,2.5,1.0,1.0)';
three | f1 f1
-------+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
(3 rows) (3 rows)
-- left-or-overlap (x only) -- left-or-overlap (x only)
SELECT '' AS two, b1.* SELECT b1.*
FROM BOX_TBL b1 FROM BOX_TBL b1
WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)'; WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)';
two | f1 f1
-----+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (-2,2),(-8,-10) (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
(3 rows) (3 rows)
-- right-or-overlap (x only) -- right-or-overlap (x only)
SELECT '' AS two, b1.* SELECT b1.*
FROM BOX_TBL b1 FROM BOX_TBL b1
WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)'; WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)';
two | f1 f1
-----+--------------------- ---------------------
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
| (3,3),(3,3) (3,3),(3,3)
(2 rows) (2 rows)
-- left of -- left of
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 << box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 << box '(3.0,3.0,5.0,5.0)';
two | f1 f1
-----+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (-2,2),(-8,-10) (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
(3 rows) (3 rows)
-- area <= -- area <=
SELECT '' AS four, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)';
four | f1 f1
------+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
| (3,3),(3,3) (3,3),(3,3)
(4 rows) (4 rows)
-- area < -- area <
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 < box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 < box '(3.0,3.0,5.0,5.0)';
two | f1 f1
-----+--------------------- ---------------------
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
| (3,3),(3,3) (3,3),(3,3)
(2 rows) (2 rows)
-- area = -- area =
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 = box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 = box '(3.0,3.0,5.0,5.0)';
two | f1 f1
-----+------------- -------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
(2 rows) (2 rows)
-- area > -- area >
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b -- zero area FROM BOX_TBL b -- zero area
WHERE b.f1 > box '(3.5,3.0,4.5,3.0)'; WHERE b.f1 > box '(3.5,3.0,4.5,3.0)';
two | f1 f1
-----+----------------- -----------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (-2,2),(-8,-10) (-2,2),(-8,-10)
(3 rows) (3 rows)
-- area >= -- area >=
SELECT '' AS four, b.f1 SELECT b.f1
FROM BOX_TBL b -- zero area FROM BOX_TBL b -- zero area
WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)'; WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)';
four | f1 f1
------+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (-2,2),(-8,-10) (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
| (3,3),(3,3) (3,3),(3,3)
(5 rows) (5 rows)
-- right of -- right of
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1; WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1;
two | f1 f1
-----+--------------------- ---------------------
| (2,2),(0,0) (2,2),(0,0)
| (-2,2),(-8,-10) (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5)
(3 rows) (3 rows)
-- contained in -- contained in
SELECT '' AS three, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 <@ box '(0,0,3,3)'; WHERE b.f1 <@ box '(0,0,3,3)';
three | f1 f1
-------+------------- -------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (3,3),(3,3) (3,3),(3,3)
(3 rows) (3 rows)
-- contains -- contains
SELECT '' AS three, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE box '(0,0,3,3)' @> b.f1; WHERE box '(0,0,3,3)' @> b.f1;
three | f1 f1
-------+------------- -------------
| (2,2),(0,0) (2,2),(0,0)
| (3,3),(1,1) (3,3),(1,1)
| (3,3),(3,3) (3,3),(3,3)
(3 rows) (3 rows)
-- box equality -- box equality
SELECT '' AS one, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE box '(1,1,3,3)' ~= b.f1; WHERE box '(1,1,3,3)' ~= b.f1;
one | f1 f1
-----+------------- -------------
| (3,3),(1,1) (3,3),(1,1)
(1 row) (1 row)
-- center of box, left unary operator -- center of box, left unary operator
SELECT '' AS four, @@(b1.f1) AS p SELECT @@(b1.f1) AS p
FROM BOX_TBL b1; FROM BOX_TBL b1;
four | p p
------+--------- ---------
| (1,1) (1,1)
| (2,2) (2,2)
| (-5,-4) (-5,-4)
| (2.5,3) (2.5,3)
| (3,3) (3,3)
(5 rows) (5 rows)
-- wholly-contained -- wholly-contained
SELECT '' AS one, b1.*, b2.* SELECT b1.*, b2.*
FROM BOX_TBL b1, BOX_TBL b2 FROM BOX_TBL b1, BOX_TBL b2
WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1; WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1;
one | f1 | f1 f1 | f1
-----+-------------+------------- -------------+-------------
| (3,3),(1,1) | (3,3),(3,3) (3,3),(1,1) | (3,3),(3,3)
(1 row) (1 row)
SELECT '' AS four, height(f1), width(f1) FROM BOX_TBL; SELECT height(f1), width(f1) FROM BOX_TBL;
four | height | width height | width
------+--------+------- --------+-------
| 2 | 2 2 | 2
| 2 | 2 2 | 2
| 12 | 6 12 | 6
| 1 | 0 1 | 0
| 0 | 0 0 | 0
(5 rows) (5 rows)
-- --

View File

@ -107,33 +107,33 @@ SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
-- --
-- Examples of targets involving tables -- Examples of targets involving tables
-- --
SELECT '' AS "Five", SELECT
CASE CASE
WHEN i >= 3 THEN i WHEN i >= 3 THEN i
END AS ">= 3 or Null" END AS ">= 3 or Null"
FROM CASE_TBL; FROM CASE_TBL;
Five | >= 3 or Null >= 3 or Null
------+-------------- --------------
|
|
| 3 3
| 4 4
(4 rows) (4 rows)
SELECT '' AS "Five", SELECT
CASE WHEN i >= 3 THEN (i + i) CASE WHEN i >= 3 THEN (i + i)
ELSE i ELSE i
END AS "Simplest Math" END AS "Simplest Math"
FROM CASE_TBL; FROM CASE_TBL;
Five | Simplest Math Simplest Math
------+--------------- ---------------
| 1 1
| 2 2
| 6 6
| 8 8
(4 rows) (4 rows)
SELECT '' AS "Five", i AS "Value", SELECT i AS "Value",
CASE WHEN (i < 0) THEN 'small' CASE WHEN (i < 0) THEN 'small'
WHEN (i = 0) THEN 'zero' WHEN (i = 0) THEN 'zero'
WHEN (i = 1) THEN 'one' WHEN (i = 1) THEN 'one'
@ -141,15 +141,15 @@ SELECT '' AS "Five", i AS "Value",
ELSE 'big' ELSE 'big'
END AS "Category" END AS "Category"
FROM CASE_TBL; FROM CASE_TBL;
Five | Value | Category Value | Category
------+-------+---------- -------+----------
| 1 | one 1 | one
| 2 | two 2 | two
| 3 | big 3 | big
| 4 | big 4 | big
(4 rows) (4 rows)
SELECT '' AS "Five", SELECT
CASE WHEN ((i < 0) or (i < 0)) THEN 'small' CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
WHEN ((i = 0) or (i = 0)) THEN 'zero' WHEN ((i = 0) or (i = 0)) THEN 'zero'
WHEN ((i = 1) or (i = 1)) THEN 'one' WHEN ((i = 1) or (i = 1)) THEN 'one'
@ -157,12 +157,12 @@ SELECT '' AS "Five",
ELSE 'big' ELSE 'big'
END AS "Category" END AS "Category"
FROM CASE_TBL; FROM CASE_TBL;
Five | Category Category
------+---------- ----------
| one one
| two two
| big big
| big big
(4 rows) (4 rows)
-- --
@ -223,44 +223,44 @@ SELECT *
4 | | 2 | -4 4 | | 2 | -4
(2 rows) (2 rows)
SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)", SELECT NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)",
NULLIF(b.i, 4) AS "NULLIF(b.i,4)" NULLIF(b.i, 4) AS "NULLIF(b.i,4)"
FROM CASE_TBL a, CASE2_TBL b; FROM CASE_TBL a, CASE2_TBL b;
five | NULLIF(a.i,b.i) | NULLIF(b.i,4) NULLIF(a.i,b.i) | NULLIF(b.i,4)
------+-----------------+--------------- -----------------+---------------
| | 1 | 1
| 2 | 1 2 | 1
| 3 | 1 3 | 1
| 4 | 1 4 | 1
| 1 | 2 1 | 2
| | 2 | 2
| 3 | 2 3 | 2
| 4 | 2 4 | 2
| 1 | 3 1 | 3
| 2 | 3 2 | 3
| | 3 | 3
| 4 | 3 4 | 3
| 1 | 2 1 | 2
| | 2 | 2
| 3 | 2 3 | 2
| 4 | 2 4 | 2
| | 1 | 1
| 2 | 1 2 | 1
| 3 | 1 3 | 1
| 4 | 1 4 | 1
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
(24 rows) (24 rows)
SELECT '' AS "Two", * SELECT *
FROM CASE_TBL a, CASE2_TBL b FROM CASE_TBL a, CASE2_TBL b
WHERE COALESCE(f,b.i) = 2; WHERE COALESCE(f,b.i) = 2;
Two | i | f | i | j i | f | i | j
-----+---+---+---+---- ---+---+---+----
| 4 | | 2 | -2 4 | | 2 | -2
| 4 | | 2 | -4 4 | | 2 | -4
(2 rows) (2 rows)
-- --

View File

@ -25,79 +25,79 @@ INSERT INTO CHAR_TBL (f1) VALUES ('');
INSERT INTO CHAR_TBL (f1) VALUES ('cd'); INSERT INTO CHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type character(1) ERROR: value too long for type character(1)
INSERT INTO CHAR_TBL (f1) VALUES ('c '); INSERT INTO CHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
seven | f1 f1
-------+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(7 rows) (7 rows)
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
six | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
one | f1 f1
-----+---- ----
| a a
(1 row) (1 row)
SELECT '' AS five, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
five | f1 f1
------+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
(5 rows) (5 rows)
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
six | f1 f1
-----+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
one | f1 f1
-----+---- ----
| c c
(1 row) (1 row)
SELECT '' AS two, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
two | f1 f1
-----+---- ----
| a a
| c c
(2 rows) (2 rows)
DROP TABLE CHAR_TBL; DROP TABLE CHAR_TBL;
@ -111,12 +111,12 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type character(4) ERROR: value too long for type character(4)
INSERT INTO CHAR_TBL (f1) VALUES ('abcd '); INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
four | f1 f1
------+------ ------
| a a
| ab ab
| abcd abcd
| abcd abcd
(4 rows) (4 rows)

View File

@ -25,79 +25,79 @@ INSERT INTO CHAR_TBL (f1) VALUES ('');
INSERT INTO CHAR_TBL (f1) VALUES ('cd'); INSERT INTO CHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type character(1) ERROR: value too long for type character(1)
INSERT INTO CHAR_TBL (f1) VALUES ('c '); INSERT INTO CHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
seven | f1 f1
-------+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(7 rows) (7 rows)
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
six | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
one | f1 f1
-----+---- ----
| a a
(1 row) (1 row)
SELECT '' AS five, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
five | f1 f1
------+---- ----
| 1 1
| 2 2
| 3 3
|
(4 rows) (4 rows)
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
six | f1 f1
-----+---- ----
| a a
| 1 1
| 2 2
| 3 3
|
(5 rows) (5 rows)
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
one | f1 f1
-----+---- ----
| A A
| c c
(2 rows) (2 rows)
SELECT '' AS two, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
two | f1 f1
-----+---- ----
| a a
| A A
| c c
(3 rows) (3 rows)
DROP TABLE CHAR_TBL; DROP TABLE CHAR_TBL;
@ -111,12 +111,12 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type character(4) ERROR: value too long for type character(4)
INSERT INTO CHAR_TBL (f1) VALUES ('abcd '); INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
four | f1 f1
------+------ ------
| a a
| ab ab
| abcd abcd
| abcd abcd
(4 rows) (4 rows)

View File

@ -25,79 +25,79 @@ INSERT INTO CHAR_TBL (f1) VALUES ('');
INSERT INTO CHAR_TBL (f1) VALUES ('cd'); INSERT INTO CHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type character(1) ERROR: value too long for type character(1)
INSERT INTO CHAR_TBL (f1) VALUES ('c '); INSERT INTO CHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
seven | f1 f1
-------+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(7 rows) (7 rows)
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
six | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
one | f1 f1
-----+---- ----
| a a
(1 row) (1 row)
SELECT '' AS five, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
five | f1 f1
------+---- ----
|
(1 row) (1 row)
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
six | f1 f1
-----+---- ----
| a a
|
(2 rows) (2 rows)
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
one | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
| c c
(5 rows) (5 rows)
SELECT '' AS two, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
two | f1 f1
-----+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
| c c
(6 rows) (6 rows)
DROP TABLE CHAR_TBL; DROP TABLE CHAR_TBL;
@ -111,12 +111,12 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type character(4) ERROR: value too long for type character(4)
INSERT INTO CHAR_TBL (f1) VALUES ('abcd '); INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
four | f1 f1
------+------ ------
| a a
| ab ab
| abcd abcd
| abcd abcd
(4 rows) (4 rows)

View File

@ -47,79 +47,79 @@ SELECT * FROM CIRCLE_TBL;
<(3,5),NaN> <(3,5),NaN>
(8 rows) (8 rows)
SELECT '' AS six, center(f1) AS center SELECT center(f1) AS center
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
six | center center
-----+----------- -----------
| (5,1) (5,1)
| (1,2) (1,2)
| (1,3) (1,3)
| (1,2) (1,2)
| (100,200) (100,200)
| (100,1) (100,1)
| (3,5) (3,5)
| (3,5) (3,5)
(8 rows) (8 rows)
SELECT '' AS six, radius(f1) AS radius SELECT radius(f1) AS radius
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
six | radius radius
-----+-------- --------
| 3 3
| 100 100
| 5 5
| 3 3
| 10 10
| 115 115
| 0 0
| NaN NaN
(8 rows) (8 rows)
SELECT '' AS six, diameter(f1) AS diameter SELECT diameter(f1) AS diameter
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
six | diameter diameter
-----+---------- ----------
| 6 6
| 200 200
| 10 10
| 6 6
| 20 20
| 230 230
| 0 0
| NaN NaN
(8 rows) (8 rows)
SELECT '' AS two, f1 FROM CIRCLE_TBL WHERE radius(f1) < 5; SELECT f1 FROM CIRCLE_TBL WHERE radius(f1) < 5;
two | f1 f1
-----+----------- -----------
| <(5,1),3> <(5,1),3>
| <(1,2),3> <(1,2),3>
| <(3,5),0> <(3,5),0>
(3 rows) (3 rows)
SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10; SELECT f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10;
four | f1 f1
------+---------------- ----------------
| <(1,2),100> <(1,2),100>
| <(1,3),5> <(1,3),5>
| <(100,200),10> <(100,200),10>
| <(100,1),115> <(100,1),115>
| <(3,5),NaN> <(3,5),NaN>
(5 rows) (5 rows)
SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance SELECT c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance
FROM CIRCLE_TBL c1, CIRCLE_TBL c2 FROM CIRCLE_TBL c1, CIRCLE_TBL c2
WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0) WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
ORDER BY distance, area(c1.f1), area(c2.f1); ORDER BY distance, area(c1.f1), area(c2.f1);
five | one | two | distance one | two | distance
------+----------------+----------------+------------------ ----------------+----------------+------------------
| <(3,5),0> | <(1,2),3> | 0.60555127546399 <(3,5),0> | <(1,2),3> | 0.60555127546399
| <(3,5),0> | <(5,1),3> | 1.4721359549996 <(3,5),0> | <(5,1),3> | 1.4721359549996
| <(100,200),10> | <(100,1),115> | 74 <(100,200),10> | <(100,1),115> | 74
| <(100,200),10> | <(1,2),100> | 111.37072977248 <(100,200),10> | <(1,2),100> | 111.37072977248
| <(1,3),5> | <(100,200),10> | 205.4767561445 <(1,3),5> | <(100,200),10> | 205.4767561445
| <(5,1),3> | <(100,200),10> | 207.51303816328 <(5,1),3> | <(100,200),10> | 207.51303816328
| <(3,5),0> | <(100,200),10> | 207.79348015953 <(3,5),0> | <(100,200),10> | 207.79348015953
| <(1,2),3> | <(100,200),10> | 208.37072977248 <(1,2),3> | <(100,200),10> | 208.37072977248
(8 rows) (8 rows)

View File

@ -161,136 +161,136 @@ SELECT 'nan'::numeric::float4;
NaN NaN
(1 row) (1 row)
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
five | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e+20 1.2345679e+20
| 1.2345679e-20 1.2345679e-20
(5 rows) (5 rows)
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
four | f1 f1
------+--------------- ---------------
| 0 0
| -34.84 -34.84
| 1.2345679e+20 1.2345679e+20
| 1.2345679e-20 1.2345679e-20
(4 rows) (4 rows)
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
one | f1 f1
-----+-------- --------
| 1004.3 1004.3
(1 row) (1 row)
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
three | f1 f1
-------+--------------- ---------------
| 0 0
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(3 rows) (3 rows)
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
three | f1 f1
-------+--------------- ---------------
| 0 0
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(3 rows) (3 rows)
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
four | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(4 rows) (4 rows)
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
four | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(4 rows) (4 rows)
SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+---------------- ---------------+----------------
| 1004.3 | -10043 1004.3 | -10043
| 1.2345679e+20 | -1.2345678e+21 1.2345679e+20 | -1.2345678e+21
| 1.2345679e-20 | -1.2345678e-19 1.2345679e-20 | -1.2345678e-19
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+--------------- ---------------+---------------
| 1004.3 | 994.3 1004.3 | 994.3
| 1.2345679e+20 | 1.2345679e+20 1.2345679e+20 | 1.2345679e+20
| 1.2345679e-20 | -10 1.2345679e-20 | -10
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+---------------- ---------------+----------------
| 1004.3 | -100.43 1004.3 | -100.43
| 1.2345679e+20 | -1.2345679e+19 1.2345679e+20 | -1.2345679e+19
| 1.2345679e-20 | -1.2345679e-21 1.2345679e-20 | -1.2345679e-21
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+--------------- ---------------+---------------
| 1004.3 | 1014.3 1004.3 | 1014.3
| 1.2345679e+20 | 1.2345679e+20 1.2345679e+20 | 1.2345679e+20
| 1.2345679e-20 | 10 1.2345679e-20 | 10
(3 rows) (3 rows)
-- test divide by zero -- test divide by zero
SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f; SELECT f.f1 / '0.0' from FLOAT4_TBL f;
ERROR: division by zero ERROR: division by zero
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
five | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e+20 1.2345679e+20
| 1.2345679e-20 1.2345679e-20
(5 rows) (5 rows)
-- test the unary float4abs operator -- test the unary float4abs operator
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f; SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
five | f1 | abs_f1 f1 | abs_f1
------+---------------+--------------- ---------------+---------------
| 0 | 0 0 | 0
| 1004.3 | 1004.3 1004.3 | 1004.3
| -34.84 | 34.84 -34.84 | 34.84
| 1.2345679e+20 | 1.2345679e+20 1.2345679e+20 | 1.2345679e+20
| 1.2345679e-20 | 1.2345679e-20 1.2345679e-20 | 1.2345679e-20
(5 rows) (5 rows)
UPDATE FLOAT4_TBL UPDATE FLOAT4_TBL
SET f1 = FLOAT4_TBL.f1 * '-1' SET f1 = FLOAT4_TBL.f1 * '-1'
WHERE FLOAT4_TBL.f1 > '0.0'; WHERE FLOAT4_TBL.f1 > '0.0';
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
five | f1 f1
------+---------------- ----------------
| 0 0
| -34.84 -34.84
| -1004.3 -1004.3
| -1.2345679e+20 -1.2345679e+20
| -1.2345679e-20 -1.2345679e-20
(5 rows) (5 rows)
-- test edge-case coercions to integer -- test edge-case coercions to integer

View File

@ -161,136 +161,136 @@ SELECT 'nan'::numeric::float4;
NaN NaN
(1 row) (1 row)
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
five | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e+20 1.2345679e+20
| 1.2345679e-20 1.2345679e-20
(5 rows) (5 rows)
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
four | f1 f1
------+--------------- ---------------
| 0 0
| -34.84 -34.84
| 1.2345679e+20 1.2345679e+20
| 1.2345679e-20 1.2345679e-20
(4 rows) (4 rows)
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
one | f1 f1
-----+-------- --------
| 1004.3 1004.3
(1 row) (1 row)
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
three | f1 f1
-------+--------------- ---------------
| 0 0
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(3 rows) (3 rows)
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
three | f1 f1
-------+--------------- ---------------
| 0 0
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(3 rows) (3 rows)
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
four | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(4 rows) (4 rows)
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
four | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e-20 1.2345679e-20
(4 rows) (4 rows)
SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+---------------- ---------------+----------------
| 1004.3 | -10043 1004.3 | -10043
| 1.2345679e+20 | -1.2345678e+21 1.2345679e+20 | -1.2345678e+21
| 1.2345679e-20 | -1.2345678e-19 1.2345679e-20 | -1.2345678e-19
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+--------------- ---------------+---------------
| 1004.3 | 994.3 1004.3 | 994.3
| 1.2345679e+20 | 1.2345679e+20 1.2345679e+20 | 1.2345679e+20
| 1.2345679e-20 | -10 1.2345679e-20 | -10
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+---------------- ---------------+----------------
| 1004.3 | -100.43 1004.3 | -100.43
| 1.2345679e+20 | -1.2345679e+19 1.2345679e+20 | -1.2345679e+19
| 1.2345679e-20 | -1.2345679e-21 1.2345679e-20 | -1.2345679e-21
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+---------------+--------------- ---------------+---------------
| 1004.3 | 1014.3 1004.3 | 1014.3
| 1.2345679e+20 | 1.2345679e+20 1.2345679e+20 | 1.2345679e+20
| 1.2345679e-20 | 10 1.2345679e-20 | 10
(3 rows) (3 rows)
-- test divide by zero -- test divide by zero
SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f; SELECT f.f1 / '0.0' from FLOAT4_TBL f;
ERROR: division by zero ERROR: division by zero
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
five | f1 f1
------+--------------- ---------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345679e+20 1.2345679e+20
| 1.2345679e-20 1.2345679e-20
(5 rows) (5 rows)
-- test the unary float4abs operator -- test the unary float4abs operator
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f; SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
five | f1 | abs_f1 f1 | abs_f1
------+---------------+--------------- ---------------+---------------
| 0 | 0 0 | 0
| 1004.3 | 1004.3 1004.3 | 1004.3
| -34.84 | 34.84 -34.84 | 34.84
| 1.2345679e+20 | 1.2345679e+20 1.2345679e+20 | 1.2345679e+20
| 1.2345679e-20 | 1.2345679e-20 1.2345679e-20 | 1.2345679e-20
(5 rows) (5 rows)
UPDATE FLOAT4_TBL UPDATE FLOAT4_TBL
SET f1 = FLOAT4_TBL.f1 * '-1' SET f1 = FLOAT4_TBL.f1 * '-1'
WHERE FLOAT4_TBL.f1 > '0.0'; WHERE FLOAT4_TBL.f1 > '0.0';
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
five | f1 f1
------+---------------- ----------------
| 0 0
| -34.84 -34.84
| -1004.3 -1004.3
| -1.2345679e+20 -1.2345679e+20
| -1.2345679e-20 -1.2345679e-20
(5 rows) (5 rows)
-- test edge-case coercions to integer -- test edge-case coercions to integer

View File

@ -144,146 +144,146 @@ SELECT 'nan'::numeric::float8;
NaN NaN
(1 row) (1 row)
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
five | f1 f1
------+---------------------- ----------------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345678901234e+200 1.2345678901234e+200
| 1.2345678901234e-200 1.2345678901234e-200
(5 rows) (5 rows)
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
four | f1 f1
------+---------------------- ----------------------
| 0 0
| -34.84 -34.84
| 1.2345678901234e+200 1.2345678901234e+200
| 1.2345678901234e-200 1.2345678901234e-200
(4 rows) (4 rows)
SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
one | f1 f1
-----+-------- --------
| 1004.3 1004.3
(1 row) (1 row)
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
three | f1 f1
-------+---------------------- ----------------------
| 0 0
| -34.84 -34.84
| 1.2345678901234e-200 1.2345678901234e-200
(3 rows) (3 rows)
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3';
three | f1 f1
-------+---------------------- ----------------------
| 0 0
| -34.84 -34.84
| 1.2345678901234e-200 1.2345678901234e-200
(3 rows) (3 rows)
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
four | f1 f1
------+---------------------- ----------------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345678901234e-200 1.2345678901234e-200
(4 rows) (4 rows)
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3';
four | f1 f1
------+---------------------- ----------------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345678901234e-200 1.2345678901234e-200
(4 rows) (4 rows)
SELECT '' AS three, f.f1, f.f1 * '-10' AS x SELECT f.f1, f.f1 * '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+----------------------+----------------------- ----------------------+-----------------------
| 1004.3 | -10043 1004.3 | -10043
| 1.2345678901234e+200 | -1.2345678901234e+201 1.2345678901234e+200 | -1.2345678901234e+201
| 1.2345678901234e-200 | -1.2345678901234e-199 1.2345678901234e-200 | -1.2345678901234e-199
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 + '-10' AS x SELECT f.f1, f.f1 + '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+----------------------+---------------------- ----------------------+----------------------
| 1004.3 | 994.3 1004.3 | 994.3
| 1.2345678901234e+200 | 1.2345678901234e+200 1.2345678901234e+200 | 1.2345678901234e+200
| 1.2345678901234e-200 | -10 1.2345678901234e-200 | -10
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 / '-10' AS x SELECT f.f1, f.f1 / '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+----------------------+----------------------- ----------------------+-----------------------
| 1004.3 | -100.42999999999999 1004.3 | -100.42999999999999
| 1.2345678901234e+200 | -1.2345678901234e+199 1.2345678901234e+200 | -1.2345678901234e+199
| 1.2345678901234e-200 | -1.2345678901234e-201 1.2345678901234e-200 | -1.2345678901234e-201
(3 rows) (3 rows)
SELECT '' AS three, f.f1, f.f1 - '-10' AS x SELECT f.f1, f.f1 - '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | x f1 | x
-------+----------------------+---------------------- ----------------------+----------------------
| 1004.3 | 1014.3 1004.3 | 1014.3
| 1.2345678901234e+200 | 1.2345678901234e+200 1.2345678901234e+200 | 1.2345678901234e+200
| 1.2345678901234e-200 | 10 1.2345678901234e-200 | 10
(3 rows) (3 rows)
SELECT '' AS one, f.f1 ^ '2.0' AS square_f1 SELECT f.f1 ^ '2.0' AS square_f1
FROM FLOAT8_TBL f where f.f1 = '1004.3'; FROM FLOAT8_TBL f where f.f1 = '1004.3';
one | square_f1 square_f1
-----+-------------------- --------------------
| 1008618.4899999999 1008618.4899999999
(1 row) (1 row)
-- absolute value -- absolute value
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 SELECT f.f1, @f.f1 AS abs_f1
FROM FLOAT8_TBL f; FROM FLOAT8_TBL f;
five | f1 | abs_f1 f1 | abs_f1
------+----------------------+---------------------- ----------------------+----------------------
| 0 | 0 0 | 0
| 1004.3 | 1004.3 1004.3 | 1004.3
| -34.84 | 34.84 -34.84 | 34.84
| 1.2345678901234e+200 | 1.2345678901234e+200 1.2345678901234e+200 | 1.2345678901234e+200
| 1.2345678901234e-200 | 1.2345678901234e-200 1.2345678901234e-200 | 1.2345678901234e-200
(5 rows) (5 rows)
-- truncate -- truncate
SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1 SELECT f.f1, trunc(f.f1) AS trunc_f1
FROM FLOAT8_TBL f; FROM FLOAT8_TBL f;
five | f1 | trunc_f1 f1 | trunc_f1
------+----------------------+---------------------- ----------------------+----------------------
| 0 | 0 0 | 0
| 1004.3 | 1004 1004.3 | 1004
| -34.84 | -34 -34.84 | -34
| 1.2345678901234e+200 | 1.2345678901234e+200 1.2345678901234e+200 | 1.2345678901234e+200
| 1.2345678901234e-200 | 0 1.2345678901234e-200 | 0
(5 rows) (5 rows)
-- round -- round
SELECT '' AS five, f.f1, round(f.f1) AS round_f1 SELECT f.f1, round(f.f1) AS round_f1
FROM FLOAT8_TBL f; FROM FLOAT8_TBL f;
five | f1 | round_f1 f1 | round_f1
------+----------------------+---------------------- ----------------------+----------------------
| 0 | 0 0 | 0
| 1004.3 | 1004 1004.3 | 1004
| -34.84 | -35 -34.84 | -35
| 1.2345678901234e+200 | 1.2345678901234e+200 1.2345678901234e+200 | 1.2345678901234e+200
| 1.2345678901234e-200 | 0 1.2345678901234e-200 | 0
(5 rows) (5 rows)
-- ceil / ceiling -- ceil / ceiling
@ -344,14 +344,14 @@ SELECT |/ float8 '64' AS eight;
8 8
(1 row) (1 row)
SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1 SELECT f.f1, |/f.f1 AS sqrt_f1
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | sqrt_f1 f1 | sqrt_f1
-------+----------------------+----------------------- ----------------------+-----------------------
| 1004.3 | 31.6906926399535 1004.3 | 31.6906926399535
| 1.2345678901234e+200 | 1.11111110611109e+100 1.2345678901234e+200 | 1.11111110611109e+100
| 1.2345678901234e-200 | 1.11111110611109e-100 1.2345678901234e-200 | 1.11111110611109e-100
(3 rows) (3 rows)
-- power -- power
@ -554,14 +554,14 @@ SELECT power(float8 '-inf', float8 '-inf');
(1 row) (1 row)
-- take exp of ln(f.f1) -- take exp of ln(f.f1)
SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1 SELECT f.f1, exp(ln(f.f1)) AS exp_ln_f1
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
three | f1 | exp_ln_f1 f1 | exp_ln_f1
-------+----------------------+----------------------- ----------------------+-----------------------
| 1004.3 | 1004.3 1004.3 | 1004.3
| 1.2345678901234e+200 | 1.23456789012338e+200 1.2345678901234e+200 | 1.23456789012338e+200
| 1.2345678901234e-200 | 1.23456789012339e-200 1.2345678901234e-200 | 1.23456789012339e-200
(3 rows) (3 rows)
-- check edge cases for exp -- check edge cases for exp
@ -578,32 +578,32 @@ SELECT ||/ float8 '27' AS three;
3 3
(1 row) (1 row)
SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f; SELECT f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
five | f1 | cbrt_f1 f1 | cbrt_f1
------+----------------------+---------------------- ----------------------+----------------------
| 0 | 0 0 | 0
| 1004.3 | 10.014312837827 1004.3 | 10.014312837827
| -34.84 | -3.26607421344208 -34.84 | -3.26607421344208
| 1.2345678901234e+200 | 4.97933859234765e+66 1.2345678901234e+200 | 4.97933859234765e+66
| 1.2345678901234e-200 | 2.3112042409018e-67 1.2345678901234e-200 | 2.3112042409018e-67
(5 rows) (5 rows)
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
five | f1 f1
------+---------------------- ----------------------
| 0 0
| 1004.3 1004.3
| -34.84 -34.84
| 1.2345678901234e+200 1.2345678901234e+200
| 1.2345678901234e-200 1.2345678901234e-200
(5 rows) (5 rows)
UPDATE FLOAT8_TBL UPDATE FLOAT8_TBL
SET f1 = FLOAT8_TBL.f1 * '-1' SET f1 = FLOAT8_TBL.f1 * '-1'
WHERE FLOAT8_TBL.f1 > '0.0'; WHERE FLOAT8_TBL.f1 > '0.0';
SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f; SELECT f.f1 * '1e200' from FLOAT8_TBL f;
ERROR: value out of range: overflow ERROR: value out of range: overflow
SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f; SELECT f.f1 ^ '1e200' from FLOAT8_TBL f;
ERROR: value out of range: overflow ERROR: value out of range: overflow
SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5; SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
?column? ?column?
@ -611,22 +611,22 @@ SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
2 2
(1 row) (1 row)
SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ; SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
ERROR: cannot take logarithm of zero ERROR: cannot take logarithm of zero
SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ; SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ;
ERROR: cannot take logarithm of a negative number ERROR: cannot take logarithm of a negative number
SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f; SELECT exp(f.f1) from FLOAT8_TBL f;
ERROR: value out of range: underflow ERROR: value out of range: underflow
SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f; SELECT f.f1 / '0.0' from FLOAT8_TBL f;
ERROR: division by zero ERROR: division by zero
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
five | f1 f1
------+----------------------- -----------------------
| 0 0
| -34.84 -34.84
| -1004.3 -1004.3
| -1.2345678901234e+200 -1.2345678901234e+200
| -1.2345678901234e-200 -1.2345678901234e-200
(5 rows) (5 rows)
-- hyperbolic functions -- hyperbolic functions
@ -787,14 +787,14 @@ INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30');
INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200');
INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
five | f1 f1
------+----------------------- -----------------------
| 0 0
| -34.84 -34.84
| -1004.3 -1004.3
| -1.2345678901234e+200 -1.2345678901234e+200
| -1.2345678901234e-200 -1.2345678901234e-200
(5 rows) (5 rows)
-- test edge-case coercions to integer -- test edge-case coercions to integer

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -43,165 +43,165 @@ ERROR: invalid cidr value: "ffff:ffff:ffff:ffff::/24"
LINE 1: INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:fff... LINE 1: INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:fff...
^ ^
DETAIL: Value has bits set to right of mask. DETAIL: Value has bits set to right of mask.
SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL; SELECT c AS cidr, i AS inet FROM INET_TBL;
ten | cidr | inet cidr | inet
-----+--------------------+------------------ --------------------+------------------
| 192.168.1.0/24 | 192.168.1.226/24 192.168.1.0/24 | 192.168.1.226/24
| 192.168.1.0/26 | 192.168.1.226 192.168.1.0/26 | 192.168.1.226
| 192.168.1.0/24 | 192.168.1.0/24 192.168.1.0/24 | 192.168.1.0/24
| 192.168.1.0/24 | 192.168.1.0/25 192.168.1.0/24 | 192.168.1.0/25
| 192.168.1.0/24 | 192.168.1.255/24 192.168.1.0/24 | 192.168.1.255/24
| 192.168.1.0/24 | 192.168.1.255/25 192.168.1.0/24 | 192.168.1.255/25
| 10.0.0.0/8 | 10.1.2.3/8 10.0.0.0/8 | 10.1.2.3/8
| 10.0.0.0/32 | 10.1.2.3/8 10.0.0.0/32 | 10.1.2.3/8
| 10.1.2.3/32 | 10.1.2.3 10.1.2.3/32 | 10.1.2.3
| 10.1.2.0/24 | 10.1.2.3/24 10.1.2.0/24 | 10.1.2.3/24
| 10.1.0.0/16 | 10.1.2.3/16 10.1.0.0/16 | 10.1.2.3/16
| 10.0.0.0/8 | 10.1.2.3/8 10.0.0.0/8 | 10.1.2.3/8
| 10.0.0.0/8 | 11.1.2.3/8 10.0.0.0/8 | 11.1.2.3/8
| 10.0.0.0/8 | 9.1.2.3/8 10.0.0.0/8 | 9.1.2.3/8
| 10:23::f1/128 | 10:23::f1/64 10:23::f1/128 | 10:23::f1/64
| 10:23::8000/113 | 10:23::ffff 10:23::8000/113 | 10:23::ffff
| ::ffff:1.2.3.4/128 | ::4.3.2.1/24 ::ffff:1.2.3.4/128 | ::4.3.2.1/24
(17 rows) (17 rows)
-- now test some support functions -- now test some support functions
SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL; SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL;
ten | inet | host | text | family inet | host | text | family
-----+------------------+---------------+------------------+-------- ------------------+---------------+------------------+--------
| 192.168.1.226/24 | 192.168.1.226 | 192.168.1.226/24 | 4 192.168.1.226/24 | 192.168.1.226 | 192.168.1.226/24 | 4
| 192.168.1.226 | 192.168.1.226 | 192.168.1.226/32 | 4 192.168.1.226 | 192.168.1.226 | 192.168.1.226/32 | 4
| 192.168.1.0/24 | 192.168.1.0 | 192.168.1.0/24 | 4 192.168.1.0/24 | 192.168.1.0 | 192.168.1.0/24 | 4
| 192.168.1.0/25 | 192.168.1.0 | 192.168.1.0/25 | 4 192.168.1.0/25 | 192.168.1.0 | 192.168.1.0/25 | 4
| 192.168.1.255/24 | 192.168.1.255 | 192.168.1.255/24 | 4 192.168.1.255/24 | 192.168.1.255 | 192.168.1.255/24 | 4
| 192.168.1.255/25 | 192.168.1.255 | 192.168.1.255/25 | 4 192.168.1.255/25 | 192.168.1.255 | 192.168.1.255/25 | 4
| 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4
| 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4
| 10.1.2.3 | 10.1.2.3 | 10.1.2.3/32 | 4 10.1.2.3 | 10.1.2.3 | 10.1.2.3/32 | 4
| 10.1.2.3/24 | 10.1.2.3 | 10.1.2.3/24 | 4 10.1.2.3/24 | 10.1.2.3 | 10.1.2.3/24 | 4
| 10.1.2.3/16 | 10.1.2.3 | 10.1.2.3/16 | 4 10.1.2.3/16 | 10.1.2.3 | 10.1.2.3/16 | 4
| 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4
| 11.1.2.3/8 | 11.1.2.3 | 11.1.2.3/8 | 4 11.1.2.3/8 | 11.1.2.3 | 11.1.2.3/8 | 4
| 9.1.2.3/8 | 9.1.2.3 | 9.1.2.3/8 | 4 9.1.2.3/8 | 9.1.2.3 | 9.1.2.3/8 | 4
| 10:23::f1/64 | 10:23::f1 | 10:23::f1/64 | 6 10:23::f1/64 | 10:23::f1 | 10:23::f1/64 | 6
| 10:23::ffff | 10:23::ffff | 10:23::ffff/128 | 6 10:23::ffff | 10:23::ffff | 10:23::ffff/128 | 6
| ::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6 ::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6
(17 rows) (17 rows)
SELECT '' AS ten, c AS cidr, broadcast(c), SELECT c AS cidr, broadcast(c),
i AS inet, broadcast(i) FROM INET_TBL; i AS inet, broadcast(i) FROM INET_TBL;
ten | cidr | broadcast | inet | broadcast cidr | broadcast | inet | broadcast
-----+--------------------+------------------+------------------+--------------------------------------- --------------------+------------------+------------------+---------------------------------------
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24
| 192.168.1.0/26 | 192.168.1.63/26 | 192.168.1.226 | 192.168.1.226 192.168.1.0/26 | 192.168.1.63/26 | 192.168.1.226 | 192.168.1.226
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.255/24 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.255/24
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/25 | 192.168.1.127/25 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/25 | 192.168.1.127/25
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/24 | 192.168.1.255/24 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/24 | 192.168.1.255/24
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/25 | 192.168.1.255/25 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/25 | 192.168.1.255/25
| 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
| 10.0.0.0/32 | 10.0.0.0 | 10.1.2.3/8 | 10.255.255.255/8 10.0.0.0/32 | 10.0.0.0 | 10.1.2.3/8 | 10.255.255.255/8
| 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3 | 10.1.2.3 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3 | 10.1.2.3
| 10.1.2.0/24 | 10.1.2.255/24 | 10.1.2.3/24 | 10.1.2.255/24 10.1.2.0/24 | 10.1.2.255/24 | 10.1.2.3/24 | 10.1.2.255/24
| 10.1.0.0/16 | 10.1.255.255/16 | 10.1.2.3/16 | 10.1.255.255/16 10.1.0.0/16 | 10.1.255.255/16 | 10.1.2.3/16 | 10.1.255.255/16
| 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
| 10.0.0.0/8 | 10.255.255.255/8 | 11.1.2.3/8 | 11.255.255.255/8 10.0.0.0/8 | 10.255.255.255/8 | 11.1.2.3/8 | 11.255.255.255/8
| 10.0.0.0/8 | 10.255.255.255/8 | 9.1.2.3/8 | 9.255.255.255/8 10.0.0.0/8 | 10.255.255.255/8 | 9.1.2.3/8 | 9.255.255.255/8
| 10:23::f1/128 | 10:23::f1 | 10:23::f1/64 | 10:23::ffff:ffff:ffff:ffff/64 10:23::f1/128 | 10:23::f1 | 10:23::f1/64 | 10:23::ffff:ffff:ffff:ffff/64
| 10:23::8000/113 | 10:23::ffff/113 | 10:23::ffff | 10:23::ffff 10:23::8000/113 | 10:23::ffff/113 | 10:23::ffff | 10:23::ffff
| ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4 | ::4.3.2.1/24 | 0:ff:ffff:ffff:ffff:ffff:ffff:ffff/24 ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4 | ::4.3.2.1/24 | 0:ff:ffff:ffff:ffff:ffff:ffff:ffff/24
(17 rows) (17 rows)
SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)", SELECT c AS cidr, network(c) AS "network(cidr)",
i AS inet, network(i) AS "network(inet)" FROM INET_TBL; i AS inet, network(i) AS "network(inet)" FROM INET_TBL;
ten | cidr | network(cidr) | inet | network(inet) cidr | network(cidr) | inet | network(inet)
-----+--------------------+--------------------+------------------+------------------ --------------------+--------------------+------------------+------------------
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226/24 | 192.168.1.0/24 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226/24 | 192.168.1.0/24
| 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226 | 192.168.1.226/32 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226 | 192.168.1.226/32
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/25 | 192.168.1.0/25 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/25 | 192.168.1.0/25
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/25 | 192.168.1.128/25 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/25 | 192.168.1.128/25
| 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8
| 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.0.0.0/8 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.0.0.0/8
| 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32
| 10.1.2.0/24 | 10.1.2.0/24 | 10.1.2.3/24 | 10.1.2.0/24 10.1.2.0/24 | 10.1.2.0/24 | 10.1.2.3/24 | 10.1.2.0/24
| 10.1.0.0/16 | 10.1.0.0/16 | 10.1.2.3/16 | 10.1.0.0/16 10.1.0.0/16 | 10.1.0.0/16 | 10.1.2.3/16 | 10.1.0.0/16
| 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8
| 10.0.0.0/8 | 10.0.0.0/8 | 11.1.2.3/8 | 11.0.0.0/8 10.0.0.0/8 | 10.0.0.0/8 | 11.1.2.3/8 | 11.0.0.0/8
| 10.0.0.0/8 | 10.0.0.0/8 | 9.1.2.3/8 | 9.0.0.0/8 10.0.0.0/8 | 10.0.0.0/8 | 9.1.2.3/8 | 9.0.0.0/8
| 10:23::f1/128 | 10:23::f1/128 | 10:23::f1/64 | 10:23::/64 10:23::f1/128 | 10:23::f1/128 | 10:23::f1/64 | 10:23::/64
| 10:23::8000/113 | 10:23::8000/113 | 10:23::ffff | 10:23::ffff/128 10:23::8000/113 | 10:23::8000/113 | 10:23::ffff | 10:23::ffff/128
| ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 | ::/24 ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 | ::/24
(17 rows) (17 rows)
SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)", SELECT c AS cidr, masklen(c) AS "masklen(cidr)",
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL; i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL;
ten | cidr | masklen(cidr) | inet | masklen(inet) cidr | masklen(cidr) | inet | masklen(inet)
-----+--------------------+---------------+------------------+--------------- --------------------+---------------+------------------+---------------
| 192.168.1.0/24 | 24 | 192.168.1.226/24 | 24 192.168.1.0/24 | 24 | 192.168.1.226/24 | 24
| 192.168.1.0/26 | 26 | 192.168.1.226 | 32 192.168.1.0/26 | 26 | 192.168.1.226 | 32
| 192.168.1.0/24 | 24 | 192.168.1.0/24 | 24 192.168.1.0/24 | 24 | 192.168.1.0/24 | 24
| 192.168.1.0/24 | 24 | 192.168.1.0/25 | 25 192.168.1.0/24 | 24 | 192.168.1.0/25 | 25
| 192.168.1.0/24 | 24 | 192.168.1.255/24 | 24 192.168.1.0/24 | 24 | 192.168.1.255/24 | 24
| 192.168.1.0/24 | 24 | 192.168.1.255/25 | 25 192.168.1.0/24 | 24 | 192.168.1.255/25 | 25
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
| 10.0.0.0/32 | 32 | 10.1.2.3/8 | 8 10.0.0.0/32 | 32 | 10.1.2.3/8 | 8
| 10.1.2.3/32 | 32 | 10.1.2.3 | 32 10.1.2.3/32 | 32 | 10.1.2.3 | 32
| 10.1.2.0/24 | 24 | 10.1.2.3/24 | 24 10.1.2.0/24 | 24 | 10.1.2.3/24 | 24
| 10.1.0.0/16 | 16 | 10.1.2.3/16 | 16 10.1.0.0/16 | 16 | 10.1.2.3/16 | 16
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
| 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8
| 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
| 10:23::f1/128 | 128 | 10:23::f1/64 | 64 10:23::f1/128 | 128 | 10:23::f1/64 | 64
| 10:23::8000/113 | 113 | 10:23::ffff | 128 10:23::8000/113 | 113 | 10:23::ffff | 128
| ::ffff:1.2.3.4/128 | 128 | ::4.3.2.1/24 | 24 ::ffff:1.2.3.4/128 | 128 | ::4.3.2.1/24 | 24
(17 rows) (17 rows)
SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)", SELECT c AS cidr, masklen(c) AS "masklen(cidr)",
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL
WHERE masklen(c) <= 8; WHERE masklen(c) <= 8;
four | cidr | masklen(cidr) | inet | masklen(inet) cidr | masklen(cidr) | inet | masklen(inet)
------+------------+---------------+------------+--------------- ------------+---------------+------------+---------------
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
| 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8
| 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
(4 rows) (4 rows)
SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL SELECT c AS cidr, i AS inet FROM INET_TBL
WHERE c = i; WHERE c = i;
six | cidr | inet cidr | inet
-----+----------------+---------------- ----------------+----------------
| 192.168.1.0/24 | 192.168.1.0/24 192.168.1.0/24 | 192.168.1.0/24
| 10.1.2.3/32 | 10.1.2.3 10.1.2.3/32 | 10.1.2.3
(2 rows) (2 rows)
SELECT '' AS ten, i, c, SELECT i, c,
i < c AS lt, i <= c AS le, i = c AS eq, i < c AS lt, i <= c AS le, i = c AS eq,
i >= c AS ge, i > c AS gt, i <> c AS ne, i >= c AS ge, i > c AS gt, i <> c AS ne,
i << c AS sb, i <<= c AS sbe, i << c AS sb, i <<= c AS sbe,
i >> c AS sup, i >>= c AS spe, i >> c AS sup, i >>= c AS spe,
i && c AS ovr i && c AS ovr
FROM INET_TBL; FROM INET_TBL;
ten | i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe | ovr i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe | ovr
-----+------------------+--------------------+----+----+----+----+----+----+----+-----+-----+-----+----- ------------------+--------------------+----+----+----+----+----+----+----+-----+-----+-----+-----
| 192.168.1.226/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t | t 192.168.1.226/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t | t
| 192.168.1.226 | 192.168.1.0/26 | f | f | f | t | t | t | f | f | f | f | f 192.168.1.226 | 192.168.1.0/26 | f | f | f | t | t | t | f | f | f | f | f
| 192.168.1.0/24 | 192.168.1.0/24 | f | t | t | t | f | f | f | t | f | t | t 192.168.1.0/24 | 192.168.1.0/24 | f | t | t | t | f | f | f | t | f | t | t
| 192.168.1.0/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f | t 192.168.1.0/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f | t
| 192.168.1.255/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t | t 192.168.1.255/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t | t
| 192.168.1.255/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f | t 192.168.1.255/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f | t
| 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t | t 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t | t
| 10.1.2.3/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t | t 10.1.2.3/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t | t
| 10.1.2.3 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t | t 10.1.2.3 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t | t
| 10.1.2.3/24 | 10.1.2.0/24 | f | f | f | t | t | t | f | t | f | t | t 10.1.2.3/24 | 10.1.2.0/24 | f | f | f | t | t | t | f | t | f | t | t
| 10.1.2.3/16 | 10.1.0.0/16 | f | f | f | t | t | t | f | t | f | t | t 10.1.2.3/16 | 10.1.0.0/16 | f | f | f | t | t | t | f | t | f | t | t
| 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t | t 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t | t
| 11.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | f | f | f | f 11.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | f | f | f | f
| 9.1.2.3/8 | 10.0.0.0/8 | t | t | f | f | f | t | f | f | f | f | f 9.1.2.3/8 | 10.0.0.0/8 | t | t | f | f | f | t | f | f | f | f | f
| 10:23::f1/64 | 10:23::f1/128 | t | t | f | f | f | t | f | f | t | t | t 10:23::f1/64 | 10:23::f1/128 | t | t | f | f | f | t | f | f | t | t | t
| 10:23::ffff | 10:23::8000/113 | f | f | f | t | t | t | t | t | f | f | t 10:23::ffff | 10:23::8000/113 | f | f | f | t | t | t | t | t | f | f | t
| ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | t | t | f | f | f | t | f | f | t | t | t ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | t | t | f | f | f | t | f | f | t | t | t
(17 rows) (17 rows)
SELECT max(i) AS max, min(i) AS min FROM INET_TBL; SELECT max(i) AS max, min(i) AS min FROM INET_TBL;
@ -217,26 +217,26 @@ SELECT max(c) AS max, min(c) AS min FROM INET_TBL;
(1 row) (1 row)
-- check the conversion to/from text and set_netmask -- check the conversion to/from text and set_netmask
SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL; SELECT set_masklen(inet(text(i)), 24) FROM INET_TBL;
ten | set_masklen set_masklen
-----+------------------ ------------------
| 192.168.1.226/24 192.168.1.226/24
| 192.168.1.226/24 192.168.1.226/24
| 192.168.1.0/24 192.168.1.0/24
| 192.168.1.0/24 192.168.1.0/24
| 192.168.1.255/24 192.168.1.255/24
| 192.168.1.255/24 192.168.1.255/24
| 10.1.2.3/24 10.1.2.3/24
| 10.1.2.3/24 10.1.2.3/24
| 10.1.2.3/24 10.1.2.3/24
| 10.1.2.3/24 10.1.2.3/24
| 10.1.2.3/24 10.1.2.3/24
| 10.1.2.3/24 10.1.2.3/24
| 11.1.2.3/24 11.1.2.3/24
| 9.1.2.3/24 9.1.2.3/24
| 10:23::f1/24 10:23::f1/24
| 10:23::ffff/24 10:23::ffff/24
| ::4.3.2.1/24 ::4.3.2.1/24
(17 rows) (17 rows)
-- check that btree index works correctly -- check that btree index works correctly

View File

@ -41,205 +41,205 @@ INSERT INTO INT2_TBL(f1) VALUES ('');
ERROR: invalid input syntax for type smallint: "" ERROR: invalid input syntax for type smallint: ""
LINE 1: INSERT INTO INT2_TBL(f1) VALUES (''); LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('');
^ ^
SELECT '' AS five, * FROM INT2_TBL; SELECT * FROM INT2_TBL;
five | f1 f1
------+-------- --------
| 0 0
| 1234 1234
| -1234 -1234
| 32767 32767
| -32767 -32767
(5 rows) (5 rows)
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0';
four | f1 f1
------+-------- --------
| 1234 1234
| -1234 -1234
| 32767 32767
| -32767 -32767
(4 rows) (4 rows)
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0';
four | f1 f1
------+-------- --------
| 1234 1234
| -1234 -1234
| 32767 32767
| -32767 -32767
(4 rows) (4 rows)
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 = int2 '0';
one | f1 f1
-----+---- ----
| 0 0
(1 row) (1 row)
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 = int4 '0';
one | f1 f1
-----+---- ----
| 0 0
(1 row) (1 row)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 < int2 '0';
two | f1 f1
-----+-------- --------
| -1234 -1234
| -32767 -32767
(2 rows) (2 rows)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 < int4 '0';
two | f1 f1
-----+-------- --------
| -1234 -1234
| -32767 -32767
(2 rows) (2 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0';
three | f1 f1
-------+-------- --------
| 0 0
| -1234 -1234
| -32767 -32767
(3 rows) (3 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0';
three | f1 f1
-------+-------- --------
| 0 0
| -1234 -1234
| -32767 -32767
(3 rows) (3 rows)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 > int2 '0';
two | f1 f1
-----+------- -------
| 1234 1234
| 32767 32767
(2 rows) (2 rows)
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 > int4 '0';
two | f1 f1
-----+------- -------
| 1234 1234
| 32767 32767
(2 rows) (2 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0';
three | f1 f1
-------+------- -------
| 0 0
| 1234 1234
| 32767 32767
(3 rows) (3 rows)
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0';
three | f1 f1
-------+------- -------
| 0 0
| 1234 1234
| 32767 32767
(3 rows) (3 rows)
-- positive odds -- positive odds
SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
one | f1 f1
-----+------- -------
| 32767 32767
(1 row) (1 row)
-- any evens -- any evens
SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
three | f1 f1
-------+------- -------
| 0 0
| 1234 1234
| -1234 -1234
(3 rows) (3 rows)
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i;
ERROR: smallint out of range ERROR: smallint out of range
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i SELECT i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i
WHERE abs(f1) < 16384; WHERE abs(f1) < 16384;
five | f1 | x f1 | x
------+-------+------- -------+-------
| 0 | 0 0 | 0
| 1234 | 2468 1234 | 2468
| -1234 | -2468 -1234 | -2468
(3 rows) (3 rows)
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i;
five | f1 | x f1 | x
------+--------+-------- --------+--------
| 0 | 0 0 | 0
| 1234 | 2468 1234 | 2468
| -1234 | -2468 -1234 | -2468
| 32767 | 65534 32767 | 65534
| -32767 | -65534 -32767 | -65534
(5 rows) (5 rows)
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i;
ERROR: smallint out of range ERROR: smallint out of range
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i SELECT i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i
WHERE f1 < 32766; WHERE f1 < 32766;
five | f1 | x f1 | x
------+--------+-------- --------+--------
| 0 | 2 0 | 2
| 1234 | 1236 1234 | 1236
| -1234 | -1232 -1234 | -1232
| -32767 | -32765 -32767 | -32765
(4 rows) (4 rows)
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i;
five | f1 | x f1 | x
------+--------+-------- --------+--------
| 0 | 2 0 | 2
| 1234 | 1236 1234 | 1236
| -1234 | -1232 -1234 | -1232
| 32767 | 32769 32767 | 32769
| -32767 | -32765 -32767 | -32765
(5 rows) (5 rows)
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i;
ERROR: smallint out of range ERROR: smallint out of range
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i SELECT i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i
WHERE f1 > -32767; WHERE f1 > -32767;
five | f1 | x f1 | x
------+-------+------- -------+-------
| 0 | -2 0 | -2
| 1234 | 1232 1234 | 1232
| -1234 | -1236 -1234 | -1236
| 32767 | 32765 32767 | 32765
(4 rows) (4 rows)
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i;
five | f1 | x f1 | x
------+--------+-------- --------+--------
| 0 | -2 0 | -2
| 1234 | 1232 1234 | 1232
| -1234 | -1236 -1234 | -1236
| 32767 | 32765 32767 | 32765
| -32767 | -32769 -32767 | -32769
(5 rows) (5 rows)
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i;
five | f1 | x f1 | x
------+--------+-------- --------+--------
| 0 | 0 0 | 0
| 1234 | 617 1234 | 617
| -1234 | -617 -1234 | -617
| 32767 | 16383 32767 | 16383
| -32767 | -16383 -32767 | -16383
(5 rows) (5 rows)
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i;
five | f1 | x f1 | x
------+--------+-------- --------+--------
| 0 | 0 0 | 0
| 1234 | 617 1234 | 617
| -1234 | -617 -1234 | -617
| 32767 | 16383 32767 | 16383
| -32767 | -16383 -32767 | -16383
(5 rows) (5 rows)
-- corner cases -- corner cases

View File

@ -41,210 +41,210 @@ INSERT INTO INT4_TBL(f1) VALUES ('');
ERROR: invalid input syntax for type integer: "" ERROR: invalid input syntax for type integer: ""
LINE 1: INSERT INTO INT4_TBL(f1) VALUES (''); LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('');
^ ^
SELECT '' AS five, * FROM INT4_TBL; SELECT * FROM INT4_TBL;
five | f1 f1
------+------------- -------------
| 0 0
| 123456 123456
| -123456 -123456
| 2147483647 2147483647
| -2147483647 -2147483647
(5 rows) (5 rows)
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
four | f1 f1
------+------------- -------------
| 123456 123456
| -123456 -123456
| 2147483647 2147483647
| -2147483647 -2147483647
(4 rows) (4 rows)
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
four | f1 f1
------+------------- -------------
| 123456 123456
| -123456 -123456
| 2147483647 2147483647
| -2147483647 -2147483647
(4 rows) (4 rows)
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
one | f1 f1
-----+---- ----
| 0 0
(1 row) (1 row)
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
one | f1 f1
-----+---- ----
| 0 0
(1 row) (1 row)
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
two | f1 f1
-----+------------- -------------
| -123456 -123456
| -2147483647 -2147483647
(2 rows) (2 rows)
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
two | f1 f1
-----+------------- -------------
| -123456 -123456
| -2147483647 -2147483647
(2 rows) (2 rows)
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
three | f1 f1
-------+------------- -------------
| 0 0
| -123456 -123456
| -2147483647 -2147483647
(3 rows) (3 rows)
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
three | f1 f1
-------+------------- -------------
| 0 0
| -123456 -123456
| -2147483647 -2147483647
(3 rows) (3 rows)
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
two | f1 f1
-----+------------ ------------
| 123456 123456
| 2147483647 2147483647
(2 rows) (2 rows)
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
two | f1 f1
-----+------------ ------------
| 123456 123456
| 2147483647 2147483647
(2 rows) (2 rows)
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
three | f1 f1
-------+------------ ------------
| 0 0
| 123456 123456
| 2147483647 2147483647
(3 rows) (3 rows)
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
three | f1 f1
-------+------------ ------------
| 0 0
| 123456 123456
| 2147483647 2147483647
(3 rows) (3 rows)
-- positive odds -- positive odds
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
one | f1 f1
-----+------------ ------------
| 2147483647 2147483647
(1 row) (1 row)
-- any evens -- any evens
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
three | f1 f1
-------+--------- ---------
| 0 0
| 123456 123456
| -123456 -123456
(3 rows) (3 rows)
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
ERROR: integer out of range ERROR: integer out of range
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
WHERE abs(f1) < 1073741824; WHERE abs(f1) < 1073741824;
five | f1 | x f1 | x
------+---------+--------- ---------+---------
| 0 | 0 0 | 0
| 123456 | 246912 123456 | 246912
| -123456 | -246912 -123456 | -246912
(3 rows) (3 rows)
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
ERROR: integer out of range ERROR: integer out of range
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
WHERE abs(f1) < 1073741824; WHERE abs(f1) < 1073741824;
five | f1 | x f1 | x
------+---------+--------- ---------+---------
| 0 | 0 0 | 0
| 123456 | 246912 123456 | 246912
| -123456 | -246912 -123456 | -246912
(3 rows) (3 rows)
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
ERROR: integer out of range ERROR: integer out of range
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
WHERE f1 < 2147483646; WHERE f1 < 2147483646;
five | f1 | x f1 | x
------+-------------+------------- -------------+-------------
| 0 | 2 0 | 2
| 123456 | 123458 123456 | 123458
| -123456 | -123454 -123456 | -123454
| -2147483647 | -2147483645 -2147483647 | -2147483645
(4 rows) (4 rows)
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
ERROR: integer out of range ERROR: integer out of range
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
WHERE f1 < 2147483646; WHERE f1 < 2147483646;
five | f1 | x f1 | x
------+-------------+------------- -------------+-------------
| 0 | 2 0 | 2
| 123456 | 123458 123456 | 123458
| -123456 | -123454 -123456 | -123454
| -2147483647 | -2147483645 -2147483647 | -2147483645
(4 rows) (4 rows)
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
ERROR: integer out of range ERROR: integer out of range
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
WHERE f1 > -2147483647; WHERE f1 > -2147483647;
five | f1 | x f1 | x
------+------------+------------ ------------+------------
| 0 | -2 0 | -2
| 123456 | 123454 123456 | 123454
| -123456 | -123458 -123456 | -123458
| 2147483647 | 2147483645 2147483647 | 2147483645
(4 rows) (4 rows)
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
ERROR: integer out of range ERROR: integer out of range
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
WHERE f1 > -2147483647; WHERE f1 > -2147483647;
five | f1 | x f1 | x
------+------------+------------ ------------+------------
| 0 | -2 0 | -2
| 123456 | 123454 123456 | 123454
| -123456 | -123458 -123456 | -123458
| 2147483647 | 2147483645 2147483647 | 2147483645
(4 rows) (4 rows)
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
five | f1 | x f1 | x
------+-------------+------------- -------------+-------------
| 0 | 0 0 | 0
| 123456 | 61728 123456 | 61728
| -123456 | -61728 -123456 | -61728
| 2147483647 | 1073741823 2147483647 | 1073741823
| -2147483647 | -1073741823 -2147483647 | -1073741823
(5 rows) (5 rows)
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
five | f1 | x f1 | x
------+-------------+------------- -------------+-------------
| 0 | 0 0 | 0
| 123456 | 61728 123456 | 61728
| -123456 | -61728 -123456 | -61728
| 2147483647 | 1073741823 2147483647 | 1073741823
| -2147483647 | -1073741823 -2147483647 | -1073741823
(5 rows) (5 rows)
-- --

View File

@ -277,75 +277,75 @@ SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1;
123 | 4567890123456789 123 | 4567890123456789
(2 rows) (2 rows)
SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL; SELECT q1 AS plus, -q1 AS minus FROM INT8_TBL;
five | plus | minus plus | minus
------+------------------+------------------- ------------------+-------------------
| 123 | -123 123 | -123
| 123 | -123 123 | -123
| 4567890123456789 | -4567890123456789 4567890123456789 | -4567890123456789
| 4567890123456789 | -4567890123456789 4567890123456789 | -4567890123456789
| 4567890123456789 | -4567890123456789 4567890123456789 | -4567890123456789
(5 rows) (5 rows)
SELECT '' AS five, q1, q2, q1 + q2 AS plus FROM INT8_TBL; SELECT q1, q2, q1 + q2 AS plus FROM INT8_TBL;
five | q1 | q2 | plus q1 | q2 | plus
------+------------------+-------------------+------------------ ------------------+-------------------+------------------
| 123 | 456 | 579 123 | 456 | 579
| 123 | 4567890123456789 | 4567890123456912 123 | 4567890123456789 | 4567890123456912
| 4567890123456789 | 123 | 4567890123456912 4567890123456789 | 123 | 4567890123456912
| 4567890123456789 | 4567890123456789 | 9135780246913578 4567890123456789 | 4567890123456789 | 9135780246913578
| 4567890123456789 | -4567890123456789 | 0 4567890123456789 | -4567890123456789 | 0
(5 rows) (5 rows)
SELECT '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL; SELECT q1, q2, q1 - q2 AS minus FROM INT8_TBL;
five | q1 | q2 | minus q1 | q2 | minus
------+------------------+-------------------+------------------- ------------------+-------------------+-------------------
| 123 | 456 | -333 123 | 456 | -333
| 123 | 4567890123456789 | -4567890123456666 123 | 4567890123456789 | -4567890123456666
| 4567890123456789 | 123 | 4567890123456666 4567890123456789 | 123 | 4567890123456666
| 4567890123456789 | 4567890123456789 | 0 4567890123456789 | 4567890123456789 | 0
| 4567890123456789 | -4567890123456789 | 9135780246913578 4567890123456789 | -4567890123456789 | 9135780246913578
(5 rows) (5 rows)
SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL; SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL;
ERROR: bigint out of range ERROR: bigint out of range
SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL
WHERE q1 < 1000 or (q2 > 0 and q2 < 1000); WHERE q1 < 1000 or (q2 > 0 and q2 < 1000);
three | q1 | q2 | multiply q1 | q2 | multiply
-------+------------------+------------------+-------------------- ------------------+------------------+--------------------
| 123 | 456 | 56088 123 | 456 | 56088
| 123 | 4567890123456789 | 561850485185185047 123 | 4567890123456789 | 561850485185185047
| 4567890123456789 | 123 | 561850485185185047 4567890123456789 | 123 | 561850485185185047
(3 rows) (3 rows)
SELECT '' AS five, q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL; SELECT q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL;
five | q1 | q2 | divide | mod q1 | q2 | divide | mod
------+------------------+-------------------+----------------+----- ------------------+-------------------+----------------+-----
| 123 | 456 | 0 | 123 123 | 456 | 0 | 123
| 123 | 4567890123456789 | 0 | 123 123 | 4567890123456789 | 0 | 123
| 4567890123456789 | 123 | 37137318076884 | 57 4567890123456789 | 123 | 37137318076884 | 57
| 4567890123456789 | 4567890123456789 | 1 | 0 4567890123456789 | 4567890123456789 | 1 | 0
| 4567890123456789 | -4567890123456789 | -1 | 0 4567890123456789 | -4567890123456789 | -1 | 0
(5 rows) (5 rows)
SELECT '' AS five, q1, float8(q1) FROM INT8_TBL; SELECT q1, float8(q1) FROM INT8_TBL;
five | q1 | float8 q1 | float8
------+------------------+----------------------- ------------------+-----------------------
| 123 | 123 123 | 123
| 123 | 123 123 | 123
| 4567890123456789 | 4.567890123456789e+15 4567890123456789 | 4.567890123456789e+15
| 4567890123456789 | 4.567890123456789e+15 4567890123456789 | 4.567890123456789e+15
| 4567890123456789 | 4.567890123456789e+15 4567890123456789 | 4.567890123456789e+15
(5 rows) (5 rows)
SELECT '' AS five, q2, float8(q2) FROM INT8_TBL; SELECT q2, float8(q2) FROM INT8_TBL;
five | q2 | float8 q2 | float8
------+-------------------+------------------------ -------------------+------------------------
| 456 | 456 456 | 456
| 4567890123456789 | 4.567890123456789e+15 4567890123456789 | 4.567890123456789e+15
| 123 | 123 123 | 123
| 4567890123456789 | 4.567890123456789e+15 4567890123456789 | 4.567890123456789e+15
| -4567890123456789 | -4.567890123456789e+15 -4567890123456789 | -4.567890123456789e+15
(5 rows) (5 rows)
SELECT 37 + q1 AS plus4 FROM INT8_TBL; SELECT 37 + q1 AS plus4 FROM INT8_TBL;
@ -368,24 +368,24 @@ SELECT 37 - q1 AS minus4 FROM INT8_TBL;
-4567890123456752 -4567890123456752
(5 rows) (5 rows)
SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL; SELECT 2 * q1 AS "twice int4" FROM INT8_TBL;
five | twice int4 twice int4
------+------------------ ------------------
| 246 246
| 246 246
| 9135780246913578 9135780246913578
| 9135780246913578 9135780246913578
| 9135780246913578 9135780246913578
(5 rows) (5 rows)
SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL; SELECT q1 * 2 AS "twice int4" FROM INT8_TBL;
five | twice int4 twice int4
------+------------------ ------------------
| 246 246
| 246 246
| 9135780246913578 9135780246913578
| 9135780246913578 9135780246913578
| 9135780246913578 9135780246913578
(5 rows) (5 rows)
-- int8 op int4 -- int8 op int4
@ -456,178 +456,178 @@ SELECT max(q1), max(q2) FROM INT8_TBL;
-- TO_CHAR() -- TO_CHAR()
-- --
SELECT '' AS to_char_1, to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999') SELECT to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999')
FROM INT8_TBL; FROM INT8_TBL;
to_char_1 | to_char | to_char to_char | to_char
-----------+------------------------+------------------------ ------------------------+------------------------
| 123 | 456 123 | 456
| 123 | 4,567,890,123,456,789 123 | 4,567,890,123,456,789
| 4,567,890,123,456,789 | 123 4,567,890,123,456,789 | 123
| 4,567,890,123,456,789 | 4,567,890,123,456,789 4,567,890,123,456,789 | 4,567,890,123,456,789
| 4,567,890,123,456,789 | -4,567,890,123,456,789 4,567,890,123,456,789 | -4,567,890,123,456,789
(5 rows) (5 rows)
SELECT '' AS to_char_2, to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999') SELECT to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999')
FROM INT8_TBL; FROM INT8_TBL;
to_char_2 | to_char | to_char to_char | to_char
-----------+--------------------------------+-------------------------------- --------------------------------+--------------------------------
| 123.000,000 | 456.000,000 123.000,000 | 456.000,000
| 123.000,000 | 4,567,890,123,456,789.000,000 123.000,000 | 4,567,890,123,456,789.000,000
| 4,567,890,123,456,789.000,000 | 123.000,000 4,567,890,123,456,789.000,000 | 123.000,000
| 4,567,890,123,456,789.000,000 | 4,567,890,123,456,789.000,000 4,567,890,123,456,789.000,000 | 4,567,890,123,456,789.000,000
| 4,567,890,123,456,789.000,000 | -4,567,890,123,456,789.000,000 4,567,890,123,456,789.000,000 | -4,567,890,123,456,789.000,000
(5 rows) (5 rows)
SELECT '' AS to_char_3, to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR') SELECT to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR')
FROM INT8_TBL; FROM INT8_TBL;
to_char_3 | to_char | to_char to_char | to_char
-----------+--------------------+------------------------ --------------------+------------------------
| <123> | <456.000> <123> | <456.000>
| <123> | <4567890123456789.000> <123> | <4567890123456789.000>
| <4567890123456789> | <123.000> <4567890123456789> | <123.000>
| <4567890123456789> | <4567890123456789.000> <4567890123456789> | <4567890123456789.000>
| <4567890123456789> | 4567890123456789.000 <4567890123456789> | 4567890123456789.000
(5 rows) (5 rows)
SELECT '' AS to_char_4, to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999') SELECT to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999')
FROM INT8_TBL; FROM INT8_TBL;
to_char_4 | to_char | to_char to_char | to_char
-----------+-------------------+------------------- -------------------+-------------------
| 123- | -456 123- | -456
| 123- | -4567890123456789 123- | -4567890123456789
| 4567890123456789- | -123 4567890123456789- | -123
| 4567890123456789- | -4567890123456789 4567890123456789- | -4567890123456789
| 4567890123456789- | +4567890123456789 4567890123456789- | +4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
to_char_5 | to_char to_char
-----------+------------------- -------------------
| 456 456
| 4567890123456789 4567890123456789
| 123 123
| 4567890123456789 4567890123456789
| -4567890123456789 -4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_6, to_char(q2, 'FMS9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FMS9999999999999999') FROM INT8_TBL;
to_char_6 | to_char to_char
-----------+------------------- -------------------
| +456 +456
| +4567890123456789 +4567890123456789
| +123 +123
| +4567890123456789 +4567890123456789
| -4567890123456789 -4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_7, to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
to_char_7 | to_char to_char
-----------+-------------------- --------------------
| 456TH 456TH
| 4567890123456789TH 4567890123456789TH
| 123RD 123RD
| 4567890123456789TH 4567890123456789TH
| <4567890123456789> <4567890123456789>
(5 rows) (5 rows)
SELECT '' AS to_char_8, to_char(q2, 'SG9999999999999999th') FROM INT8_TBL; SELECT to_char(q2, 'SG9999999999999999th') FROM INT8_TBL;
to_char_8 | to_char to_char
-----------+--------------------- ---------------------
| + 456th + 456th
| +4567890123456789th +4567890123456789th
| + 123rd + 123rd
| +4567890123456789th +4567890123456789th
| -4567890123456789 -4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_9, to_char(q2, '0999999999999999') FROM INT8_TBL; SELECT to_char(q2, '0999999999999999') FROM INT8_TBL;
to_char_9 | to_char to_char
-----------+------------------- -------------------
| 0000000000000456 0000000000000456
| 4567890123456789 4567890123456789
| 0000000000000123 0000000000000123
| 4567890123456789 4567890123456789
| -4567890123456789 -4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'S0999999999999999') FROM INT8_TBL;
to_char_10 | to_char to_char
------------+------------------- -------------------
| +0000000000000456 +0000000000000456
| +4567890123456789 +4567890123456789
| +0000000000000123 +0000000000000123
| +4567890123456789 +4567890123456789
| -4567890123456789 -4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FM0999999999999999') FROM INT8_TBL;
to_char_11 | to_char to_char
------------+------------------- -------------------
| 0000000000000456 0000000000000456
| 4567890123456789 4567890123456789
| 0000000000000123 0000000000000123
| 4567890123456789 4567890123456789
| -4567890123456789 -4567890123456789
(5 rows) (5 rows)
SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
to_char_12 | to_char to_char
------------+----------------------- -----------------------
| 456.000 456.000
| 4567890123456789.000 4567890123456789.000
| 123.000 123.000
| 4567890123456789.000 4567890123456789.000
| -4567890123456789.000 -4567890123456789.000
(5 rows) (5 rows)
SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; SELECT to_char(q2, 'L9999999999999999.000') FROM INT8_TBL;
to_char_13 | to_char to_char
------------+------------------------ ------------------------
| 456.000 456.000
| 4567890123456789.000 4567890123456789.000
| 123.000 123.000
| 4567890123456789.000 4567890123456789.000
| -4567890123456789.000 -4567890123456789.000
(5 rows) (5 rows)
SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL;
to_char_14 | to_char to_char
------------+-------------------- --------------------
| 456. 456.
| 4567890123456789. 4567890123456789.
| 123. 123.
| 4567890123456789. 4567890123456789.
| -4567890123456789. -4567890123456789.
(5 rows) (5 rows)
SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL; SELECT to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL;
to_char_15 | to_char to_char
------------+------------------------------------------- -------------------------------------------
| +4 5 6 . 0 0 0 +4 5 6 . 0 0 0
| +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0 +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
| +1 2 3 . 0 0 0 +1 2 3 . 0 0 0
| +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0 +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
| -4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0 -4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
(5 rows) (5 rows)
SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; SELECT to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL;
to_char_16 | to_char to_char
------------+----------------------------------------------------------- -----------------------------------------------------------
| text 9999 "text between quote marks" 456 text 9999 "text between quote marks" 456
| 45678 text 9012 9999 345 "text between quote marks" 6789 45678 text 9012 9999 345 "text between quote marks" 6789
| text 9999 "text between quote marks" 123 text 9999 "text between quote marks" 123
| 45678 text 9012 9999 345 "text between quote marks" 6789 45678 text 9012 9999 345 "text between quote marks" 6789
| -45678 text 9012 9999 345 "text between quote marks" 6789 -45678 text 9012 9999 345 "text between quote marks" 6789
(5 rows) (5 rows)
SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL; SELECT to_char(q2, '999999SG9999999999') FROM INT8_TBL;
to_char_17 | to_char to_char
------------+------------------- -------------------
| + 456 + 456
| 456789+0123456789 456789+0123456789
| + 123 + 123
| 456789+0123456789 456789+0123456789
| 456789-0123456789 456789-0123456789
(5 rows) (5 rows)
-- check min/max values and overflow behavior -- check min/max values and overflow behavior

View File

@ -73,138 +73,138 @@ ERROR: invalid input syntax for type interval: "@ 30 eons ago"
LINE 1: INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago'); LINE 1: INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
^ ^
-- test interval operators -- test interval operators
SELECT '' AS ten, * FROM INTERVAL_TBL; SELECT * FROM INTERVAL_TBL;
ten | f1 f1
-----+----------------- -----------------
| 00:01:00 00:01:00
| 05:00:00 05:00:00
| 10 days 10 days
| 34 years 34 years
| 3 mons 3 mons
| -00:00:14 -00:00:14
| 1 day 02:03:04 1 day 02:03:04
| 6 years 6 years
| 5 mons 5 mons
| 5 mons 12:00:00 5 mons 12:00:00
(10 rows) (10 rows)
SELECT '' AS nine, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days'; WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
nine | f1 f1
------+----------------- -----------------
| 00:01:00 00:01:00
| 05:00:00 05:00:00
| 34 years 34 years
| 3 mons 3 mons
| -00:00:14 -00:00:14
| 1 day 02:03:04 1 day 02:03:04
| 6 years 6 years
| 5 mons 5 mons
| 5 mons 12:00:00 5 mons 12:00:00
(9 rows) (9 rows)
SELECT '' AS three, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours'; WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
three | f1 f1
-------+----------- -----------
| 00:01:00 00:01:00
| 05:00:00 05:00:00
| -00:00:14 -00:00:14
(3 rows) (3 rows)
SELECT '' AS three, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 < interval '@ 1 day'; WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
three | f1 f1
-------+----------- -----------
| 00:01:00 00:01:00
| 05:00:00 05:00:00
| -00:00:14 -00:00:14
(3 rows) (3 rows)
SELECT '' AS one, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 = interval '@ 34 years'; WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
one | f1 f1
-----+---------- ----------
| 34 years 34 years
(1 row) (1 row)
SELECT '' AS five, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month'; WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
five | f1 f1
------+----------------- -----------------
| 34 years 34 years
| 3 mons 3 mons
| 6 years 6 years
| 5 mons 5 mons
| 5 mons 12:00:00 5 mons 12:00:00
(5 rows) (5 rows)
SELECT '' AS nine, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago'; WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
nine | f1 f1
------+----------------- -----------------
| 00:01:00 00:01:00
| 05:00:00 05:00:00
| 10 days 10 days
| 34 years 34 years
| 3 mons 3 mons
| 1 day 02:03:04 1 day 02:03:04
| 6 years 6 years
| 5 mons 5 mons
| 5 mons 12:00:00 5 mons 12:00:00
(9 rows) (9 rows)
SELECT '' AS fortyfive, r1.*, r2.* SELECT 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 f1 | f1
-----------+-----------------+----------------- -----------------+-----------------
| 00:01:00 | -00:00:14 00:01:00 | -00:00:14
| 05:00:00 | -00:00:14 05:00:00 | -00:00:14
| 05:00:00 | 00:01:00 05:00:00 | 00:01:00
| 1 day 02:03:04 | -00:00:14 1 day 02:03:04 | -00:00:14
| 1 day 02:03:04 | 00:01:00 1 day 02:03:04 | 00:01:00
| 1 day 02:03:04 | 05:00:00 1 day 02:03:04 | 05:00:00
| 10 days | -00:00:14 10 days | -00:00:14
| 10 days | 00:01:00 10 days | 00:01:00
| 10 days | 05:00:00 10 days | 05:00:00
| 10 days | 1 day 02:03:04 10 days | 1 day 02:03:04
| 3 mons | -00:00:14 3 mons | -00:00:14
| 3 mons | 00:01:00 3 mons | 00:01:00
| 3 mons | 05:00:00 3 mons | 05:00:00
| 3 mons | 1 day 02:03:04 3 mons | 1 day 02:03:04
| 3 mons | 10 days 3 mons | 10 days
| 5 mons | -00:00:14 5 mons | -00:00:14
| 5 mons | 00:01:00 5 mons | 00:01:00
| 5 mons | 05:00:00 5 mons | 05:00:00
| 5 mons | 1 day 02:03:04 5 mons | 1 day 02:03:04
| 5 mons | 10 days 5 mons | 10 days
| 5 mons | 3 mons 5 mons | 3 mons
| 5 mons 12:00:00 | -00:00:14 5 mons 12:00:00 | -00:00:14
| 5 mons 12:00:00 | 00:01:00 5 mons 12:00:00 | 00:01:00
| 5 mons 12:00:00 | 05:00:00 5 mons 12:00:00 | 05:00:00
| 5 mons 12:00:00 | 1 day 02:03:04 5 mons 12:00:00 | 1 day 02:03:04
| 5 mons 12:00:00 | 10 days 5 mons 12:00:00 | 10 days
| 5 mons 12:00:00 | 3 mons 5 mons 12:00:00 | 3 mons
| 5 mons 12:00:00 | 5 mons 5 mons 12:00:00 | 5 mons
| 6 years | -00:00:14 6 years | -00:00:14
| 6 years | 00:01:00 6 years | 00:01:00
| 6 years | 05:00:00 6 years | 05:00:00
| 6 years | 1 day 02:03:04 6 years | 1 day 02:03:04
| 6 years | 10 days 6 years | 10 days
| 6 years | 3 mons 6 years | 3 mons
| 6 years | 5 mons 6 years | 5 mons
| 6 years | 5 mons 12:00:00 6 years | 5 mons 12:00:00
| 34 years | -00:00:14 34 years | -00:00:14
| 34 years | 00:01:00 34 years | 00:01:00
| 34 years | 05:00:00 34 years | 05:00:00
| 34 years | 1 day 02:03:04 34 years | 1 day 02:03:04
| 34 years | 10 days 34 years | 10 days
| 34 years | 3 mons 34 years | 3 mons
| 34 years | 5 mons 34 years | 5 mons
| 34 years | 5 mons 12:00:00 34 years | 5 mons 12:00:00
| 34 years | 6 years 34 years | 6 years
(45 rows) (45 rows)
-- Test intervals that are large enough to overflow 64 bits in comparisons -- Test intervals that are large enough to overflow 64 bits in comparisons
@ -342,19 +342,19 @@ FROM INTERVAL_MULDIV_TBL;
DROP TABLE INTERVAL_MULDIV_TBL; DROP TABLE INTERVAL_MULDIV_TBL;
SET DATESTYLE = 'postgres'; SET DATESTYLE = 'postgres';
SET IntervalStyle to postgres_verbose; SET IntervalStyle to postgres_verbose;
SELECT '' AS ten, * FROM INTERVAL_TBL; SELECT * FROM INTERVAL_TBL;
ten | f1 f1
-----+------------------------------- -------------------------------
| @ 1 min @ 1 min
| @ 5 hours @ 5 hours
| @ 10 days @ 10 days
| @ 34 years @ 34 years
| @ 3 mons @ 3 mons
| @ 14 secs ago @ 14 secs ago
| @ 1 day 2 hours 3 mins 4 secs @ 1 day 2 hours 3 mins 4 secs
| @ 6 years @ 6 years
| @ 5 mons @ 5 mons
| @ 5 mons 12 hours @ 5 mons 12 hours
(10 rows) (10 rows)
-- test avg(interval), which is somewhat fragile since people have been -- test avg(interval), which is somewhat fragile since people have been

File diff suppressed because it is too large Load Diff

View File

@ -26,101 +26,101 @@ INSERT INTO NAME_TBL(f1) VALUES ('343f%2a');
INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf'); INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf');
INSERT INTO NAME_TBL(f1) VALUES (''); INSERT INTO NAME_TBL(f1) VALUES ('');
INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ');
SELECT '' AS seven, * FROM NAME_TBL; SELECT * FROM NAME_TBL;
seven | f1 f1
-------+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
| asdfghjkl; asdfghjkl;
| 343f%2a 343f%2a
| d34aaasdf d34aaasdf
|
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
(7 rows) (7 rows)
SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
six | f1 f1
-----+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
| asdfghjkl; asdfghjkl;
| 343f%2a 343f%2a
| d34aaasdf d34aaasdf
|
(5 rows) (5 rows)
SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
one | f1 f1
-----+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
(2 rows) (2 rows)
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
three | f1 f1
-------+---- ----
|
(1 row) (1 row)
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
four | f1 f1
------+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
(3 rows) (3 rows)
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
three | f1 f1
-------+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
| asdfghjkl; asdfghjkl;
| 343f%2a 343f%2a
| d34aaasdf d34aaasdf
(4 rows) (4 rows)
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
four | f1 f1
------+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
| asdfghjkl; asdfghjkl;
| 343f%2a 343f%2a
| d34aaasdf d34aaasdf
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
(6 rows) (6 rows)
SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
seven | f1 f1
-------+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
| asdfghjkl; asdfghjkl;
| 343f%2a 343f%2a
| d34aaasdf d34aaasdf
|
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
(7 rows) (7 rows)
SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*';
zero | f1 f1
------+---- ----
(0 rows) (0 rows)
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]';
three | f1 f1
-------+----------------------------------------------------------------- -----------------------------------------------------------------
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
| 343f%2a 343f%2a
| d34aaasdf d34aaasdf
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
(5 rows) (5 rows)
SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*';
two | f1 f1
-----+------------ ------------
| asdfghjkl; asdfghjkl;
| d34aaasdf d34aaasdf
(2 rows) (2 rows)
DROP TABLE NAME_TBL; DROP TABLE NAME_TBL;

File diff suppressed because it is too large Load Diff

View File

@ -12,20 +12,20 @@ INSERT INTO TEMP_FLOAT (f1)
SELECT float8(f1) FROM INT4_TBL; SELECT float8(f1) FROM INT4_TBL;
INSERT INTO TEMP_FLOAT (f1) INSERT INTO TEMP_FLOAT (f1)
SELECT float8(f1) FROM INT2_TBL; SELECT float8(f1) FROM INT2_TBL;
SELECT '' AS ten, f1 FROM TEMP_FLOAT SELECT f1 FROM TEMP_FLOAT
ORDER BY f1; ORDER BY f1;
ten | f1 f1
-----+------------- -------------
| -2147483647 -2147483647
| -123456 -123456
| -32767 -32767
| -1234 -1234
| 0 0
| 0 0
| 1234 1234
| 32767 32767
| 123456 123456
| 2147483647 2147483647
(10 rows) (10 rows)
-- int4 -- int4
@ -35,19 +35,19 @@ INSERT INTO TEMP_INT4 (f1)
WHERE (f1 > -2147483647) AND (f1 < 2147483647); WHERE (f1 > -2147483647) AND (f1 < 2147483647);
INSERT INTO TEMP_INT4 (f1) INSERT INTO TEMP_INT4 (f1)
SELECT int4(f1) FROM INT2_TBL; SELECT int4(f1) FROM INT2_TBL;
SELECT '' AS nine, f1 FROM TEMP_INT4 SELECT f1 FROM TEMP_INT4
ORDER BY f1; ORDER BY f1;
nine | f1 f1
------+-------- --------
| -32767 -32767
| -1234 -1234
| -1004 -1004
| -35 -35
| 0 0
| 0 0
| 0 0
| 1234 1234
| 32767 32767
(9 rows) (9 rows)
-- int2 -- int2
@ -58,15 +58,15 @@ INSERT INTO TEMP_INT2 (f1)
INSERT INTO TEMP_INT2 (f1) INSERT INTO TEMP_INT2 (f1)
SELECT int2(f1) FROM INT4_TBL SELECT int2(f1) FROM INT4_TBL
WHERE (f1 >= -32767) AND (f1 <= 32767); WHERE (f1 >= -32767) AND (f1 <= 32767);
SELECT '' AS five, f1 FROM TEMP_INT2 SELECT f1 FROM TEMP_INT2
ORDER BY f1; ORDER BY f1;
five | f1 f1
------+------- -------
| -1004 -1004
| -35 -35
| 0 0
| 0 0
| 0 0
(5 rows) (5 rows)
-- --

View File

@ -52,71 +52,71 @@ INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
ERROR: value "-23582358720398502385" is out of range for type oid ERROR: value "-23582358720398502385" is out of range for type oid
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
^ ^
SELECT '' AS six, * FROM OID_TBL; SELECT * FROM OID_TBL;
six | f1 f1
-----+------------ ------------
| 1234 1234
| 1235 1235
| 987 987
| 4294966256 4294966256
| 99999999 99999999
| 5 5
| 10 10
| 15 15
(8 rows) (8 rows)
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234; SELECT o.* FROM OID_TBL o WHERE o.f1 = 1234;
one | f1 f1
-----+------ ------
| 1234 1234
(1 row) (1 row)
SELECT '' AS five, o.* FROM OID_TBL o WHERE o.f1 <> '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 <> '1234';
five | f1 f1
------+------------ ------------
| 1235 1235
| 987 987
| 4294966256 4294966256
| 99999999 99999999
| 5 5
| 10 10
| 15 15
(7 rows) (7 rows)
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 <= '1234';
three | f1 f1
-------+------ ------
| 1234 1234
| 987 987
| 5 5
| 10 10
| 15 15
(5 rows) (5 rows)
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 < '1234';
two | f1 f1
-----+----- -----
| 987 987
| 5 5
| 10 10
| 15 15
(4 rows) (4 rows)
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 >= '1234';
four | f1 f1
------+------------ ------------
| 1234 1234
| 1235 1235
| 4294966256 4294966256
| 99999999 99999999
(4 rows) (4 rows)
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 > '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 > '1234';
three | f1 f1
-------+------------ ------------
| 1235 1235
| 4294966256 4294966256
| 99999999 99999999
(3 rows) (3 rows)
DROP TABLE OID_TBL; DROP TABLE OID_TBL;

View File

@ -33,50 +33,50 @@ INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]');
ERROR: invalid input syntax for type path: "(1,2),(3,4)]" ERROR: invalid input syntax for type path: "(1,2),(3,4)]"
LINE 1: INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); LINE 1: INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]');
^ ^
SELECT '' AS count, f1 AS open_path FROM PATH_TBL WHERE isopen(f1); SELECT f1 AS open_path FROM PATH_TBL WHERE isopen(f1);
count | open_path open_path
-------+--------------------------- ---------------------------
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(0,0),(3,0),(4,5),(1,6)] [(0,0),(3,0),(4,5),(1,6)]
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(11,12),(13,14)] [(11,12),(13,14)]
(4 rows) (4 rows)
SELECT '' AS count, f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1); SELECT f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1);
count | closed_path closed_path
-------+------------------- -------------------
| ((1,2),(3,4)) ((1,2),(3,4))
| ((1,2),(3,4)) ((1,2),(3,4))
| ((1,2),(3,4)) ((1,2),(3,4))
| ((10,20)) ((10,20))
| ((11,12),(13,14)) ((11,12),(13,14))
(5 rows) (5 rows)
SELECT '' AS count, pclose(f1) AS closed_path FROM PATH_TBL; SELECT pclose(f1) AS closed_path FROM PATH_TBL;
count | closed_path closed_path
-------+--------------------------- ---------------------------
| ((1,2),(3,4)) ((1,2),(3,4))
| ((1,2),(3,4)) ((1,2),(3,4))
| ((0,0),(3,0),(4,5),(1,6)) ((0,0),(3,0),(4,5),(1,6))
| ((1,2),(3,4)) ((1,2),(3,4))
| ((1,2),(3,4)) ((1,2),(3,4))
| ((1,2),(3,4)) ((1,2),(3,4))
| ((10,20)) ((10,20))
| ((11,12),(13,14)) ((11,12),(13,14))
| ((11,12),(13,14)) ((11,12),(13,14))
(9 rows) (9 rows)
SELECT '' AS count, popen(f1) AS open_path FROM PATH_TBL; SELECT popen(f1) AS open_path FROM PATH_TBL;
count | open_path open_path
-------+--------------------------- ---------------------------
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(0,0),(3,0),(4,5),(1,6)] [(0,0),(3,0),(4,5),(1,6)]
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(1,2),(3,4)] [(1,2),(3,4)]
| [(10,20)] [(10,20)]
| [(11,12),(13,14)] [(11,12),(13,14)]
| [(11,12),(13,14)] [(11,12),(13,14)]
(9 rows) (9 rows)

View File

@ -35,392 +35,392 @@ INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); -- Out of range
ERROR: "1e+500" is out of range for type double precision ERROR: "1e+500" is out of range for type double precision
LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)');
^ ^
SELECT '' AS six, * FROM POINT_TBL; SELECT * FROM POINT_TBL;
six | f1 f1
-----+------------------- -------------------
| (0,0) (0,0)
| (-10,0) (-10,0)
| (-3,4) (-3,4)
| (5.1,34.5) (5.1,34.5)
| (-5,-12) (-5,-12)
| (1e-300,-1e-300) (1e-300,-1e-300)
| (1e+300,Infinity) (1e+300,Infinity)
| (Infinity,1e+300) (Infinity,1e+300)
| (NaN,NaN) (NaN,NaN)
| (10,10) (10,10)
(10 rows) (10 rows)
-- left of -- left of
SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)';
three | f1 f1
-------+---------- ----------
| (-10,0) (-10,0)
| (-3,4) (-3,4)
| (-5,-12) (-5,-12)
(3 rows) (3 rows)
-- right of -- right of
SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1; SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1;
three | f1 f1
-------+---------- ----------
| (-10,0) (-10,0)
| (-3,4) (-3,4)
| (-5,-12) (-5,-12)
(3 rows) (3 rows)
-- above -- above
SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1; SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1;
one | f1 f1
-----+---------- ----------
| (-5,-12) (-5,-12)
(1 row) (1 row)
-- below -- below
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)';
one | f1 f1
-----+---------- ----------
| (-5,-12) (-5,-12)
(1 row) (1 row)
-- equal -- equal
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
one | f1 f1
-----+------------ ------------
| (5.1,34.5) (5.1,34.5)
(1 row) (1 row)
-- point in box -- point in box
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE p.f1 <@ box '(0,0,100,100)'; WHERE p.f1 <@ box '(0,0,100,100)';
three | f1 f1
-------+------------ ------------
| (0,0) (0,0)
| (5.1,34.5) (5.1,34.5)
| (10,10) (10,10)
(3 rows) (3 rows)
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE box '(0,0,100,100)' @> p.f1; WHERE box '(0,0,100,100)' @> p.f1;
three | f1 f1
-------+------------ ------------
| (0,0) (0,0)
| (5.1,34.5) (5.1,34.5)
| (10,10) (10,10)
(3 rows) (3 rows)
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE not p.f1 <@ box '(0,0,100,100)'; WHERE not p.f1 <@ box '(0,0,100,100)';
three | f1 f1
-------+------------------- -------------------
| (-10,0) (-10,0)
| (-3,4) (-3,4)
| (-5,-12) (-5,-12)
| (1e-300,-1e-300) (1e-300,-1e-300)
| (1e+300,Infinity) (1e+300,Infinity)
| (Infinity,1e+300) (Infinity,1e+300)
| (NaN,NaN) (NaN,NaN)
(7 rows) (7 rows)
SELECT '' AS two, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]'; WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]';
two | f1 f1
-----+------------------ ------------------
| (0,0) (0,0)
| (-10,0) (-10,0)
| (1e-300,-1e-300) (1e-300,-1e-300)
(3 rows) (3 rows)
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE not box '(0,0,100,100)' @> p.f1; WHERE not box '(0,0,100,100)' @> p.f1;
three | f1 f1
-------+------------------- -------------------
| (-10,0) (-10,0)
| (-3,4) (-3,4)
| (-5,-12) (-5,-12)
| (1e-300,-1e-300) (1e-300,-1e-300)
| (1e+300,Infinity) (1e+300,Infinity)
| (Infinity,1e+300) (Infinity,1e+300)
| (NaN,NaN) (NaN,NaN)
(7 rows) (7 rows)
SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist SELECT p.f1, p.f1 <-> point '(0,0)' AS dist
FROM POINT_TBL p FROM POINT_TBL p
ORDER BY dist; ORDER BY dist;
six | f1 | dist f1 | dist
-----+-------------------+---------------------- -------------------+----------------------
| (0,0) | 0 (0,0) | 0
| (1e-300,-1e-300) | 1.4142135623731e-300 (1e-300,-1e-300) | 1.4142135623731e-300
| (-3,4) | 5 (-3,4) | 5
| (-10,0) | 10 (-10,0) | 10
| (-5,-12) | 13 (-5,-12) | 13
| (10,10) | 14.142135623731 (10,10) | 14.142135623731
| (5.1,34.5) | 34.8749193547455 (5.1,34.5) | 34.8749193547455
| (1e+300,Infinity) | Infinity (1e+300,Infinity) | Infinity
| (Infinity,1e+300) | Infinity (Infinity,1e+300) | Infinity
| (NaN,NaN) | NaN (NaN,NaN) | NaN
(10 rows) (10 rows)
SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist SELECT p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
ORDER BY dist, p1.f1[0], p2.f1[0]; ORDER BY dist, p1.f1[0], p2.f1[0];
thirtysix | point1 | point2 | dist point1 | point2 | dist
-----------+-------------------+-------------------+---------------------- -------------------+-------------------+----------------------
| (-10,0) | (-10,0) | 0 (-10,0) | (-10,0) | 0
| (-5,-12) | (-5,-12) | 0 (-5,-12) | (-5,-12) | 0
| (-3,4) | (-3,4) | 0 (-3,4) | (-3,4) | 0
| (0,0) | (0,0) | 0 (0,0) | (0,0) | 0
| (1e-300,-1e-300) | (1e-300,-1e-300) | 0 (1e-300,-1e-300) | (1e-300,-1e-300) | 0
| (5.1,34.5) | (5.1,34.5) | 0 (5.1,34.5) | (5.1,34.5) | 0
| (10,10) | (10,10) | 0 (10,10) | (10,10) | 0
| (0,0) | (1e-300,-1e-300) | 1.4142135623731e-300 (0,0) | (1e-300,-1e-300) | 1.4142135623731e-300
| (1e-300,-1e-300) | (0,0) | 1.4142135623731e-300 (1e-300,-1e-300) | (0,0) | 1.4142135623731e-300
| (-3,4) | (0,0) | 5 (-3,4) | (0,0) | 5
| (-3,4) | (1e-300,-1e-300) | 5 (-3,4) | (1e-300,-1e-300) | 5
| (0,0) | (-3,4) | 5 (0,0) | (-3,4) | 5
| (1e-300,-1e-300) | (-3,4) | 5 (1e-300,-1e-300) | (-3,4) | 5
| (-10,0) | (-3,4) | 8.06225774829855 (-10,0) | (-3,4) | 8.06225774829855
| (-3,4) | (-10,0) | 8.06225774829855 (-3,4) | (-10,0) | 8.06225774829855
| (-10,0) | (0,0) | 10 (-10,0) | (0,0) | 10
| (-10,0) | (1e-300,-1e-300) | 10 (-10,0) | (1e-300,-1e-300) | 10
| (0,0) | (-10,0) | 10 (0,0) | (-10,0) | 10
| (1e-300,-1e-300) | (-10,0) | 10 (1e-300,-1e-300) | (-10,0) | 10
| (-10,0) | (-5,-12) | 13 (-10,0) | (-5,-12) | 13
| (-5,-12) | (-10,0) | 13 (-5,-12) | (-10,0) | 13
| (-5,-12) | (0,0) | 13 (-5,-12) | (0,0) | 13
| (-5,-12) | (1e-300,-1e-300) | 13 (-5,-12) | (1e-300,-1e-300) | 13
| (0,0) | (-5,-12) | 13 (0,0) | (-5,-12) | 13
| (1e-300,-1e-300) | (-5,-12) | 13 (1e-300,-1e-300) | (-5,-12) | 13
| (0,0) | (10,10) | 14.142135623731 (0,0) | (10,10) | 14.142135623731
| (1e-300,-1e-300) | (10,10) | 14.142135623731 (1e-300,-1e-300) | (10,10) | 14.142135623731
| (10,10) | (0,0) | 14.142135623731 (10,10) | (0,0) | 14.142135623731
| (10,10) | (1e-300,-1e-300) | 14.142135623731 (10,10) | (1e-300,-1e-300) | 14.142135623731
| (-3,4) | (10,10) | 14.3178210632764 (-3,4) | (10,10) | 14.3178210632764
| (10,10) | (-3,4) | 14.3178210632764 (10,10) | (-3,4) | 14.3178210632764
| (-5,-12) | (-3,4) | 16.1245154965971 (-5,-12) | (-3,4) | 16.1245154965971
| (-3,4) | (-5,-12) | 16.1245154965971 (-3,4) | (-5,-12) | 16.1245154965971
| (-10,0) | (10,10) | 22.3606797749979 (-10,0) | (10,10) | 22.3606797749979
| (10,10) | (-10,0) | 22.3606797749979 (10,10) | (-10,0) | 22.3606797749979
| (5.1,34.5) | (10,10) | 24.9851956166046 (5.1,34.5) | (10,10) | 24.9851956166046
| (10,10) | (5.1,34.5) | 24.9851956166046 (10,10) | (5.1,34.5) | 24.9851956166046
| (-5,-12) | (10,10) | 26.6270539113887 (-5,-12) | (10,10) | 26.6270539113887
| (10,10) | (-5,-12) | 26.6270539113887 (10,10) | (-5,-12) | 26.6270539113887
| (-3,4) | (5.1,34.5) | 31.5572495632937 (-3,4) | (5.1,34.5) | 31.5572495632937
| (5.1,34.5) | (-3,4) | 31.5572495632937 (5.1,34.5) | (-3,4) | 31.5572495632937
| (0,0) | (5.1,34.5) | 34.8749193547455 (0,0) | (5.1,34.5) | 34.8749193547455
| (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455 (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455
| (5.1,34.5) | (0,0) | 34.8749193547455 (5.1,34.5) | (0,0) | 34.8749193547455
| (5.1,34.5) | (1e-300,-1e-300) | 34.8749193547455 (5.1,34.5) | (1e-300,-1e-300) | 34.8749193547455
| (-10,0) | (5.1,34.5) | 37.6597928831267 (-10,0) | (5.1,34.5) | 37.6597928831267
| (5.1,34.5) | (-10,0) | 37.6597928831267 (5.1,34.5) | (-10,0) | 37.6597928831267
| (-5,-12) | (5.1,34.5) | 47.5842410888311 (-5,-12) | (5.1,34.5) | 47.5842410888311
| (5.1,34.5) | (-5,-12) | 47.5842410888311 (5.1,34.5) | (-5,-12) | 47.5842410888311
| (-10,0) | (1e+300,Infinity) | Infinity (-10,0) | (1e+300,Infinity) | Infinity
| (-10,0) | (Infinity,1e+300) | Infinity (-10,0) | (Infinity,1e+300) | Infinity
| (-5,-12) | (1e+300,Infinity) | Infinity (-5,-12) | (1e+300,Infinity) | Infinity
| (-5,-12) | (Infinity,1e+300) | Infinity (-5,-12) | (Infinity,1e+300) | Infinity
| (-3,4) | (1e+300,Infinity) | Infinity (-3,4) | (1e+300,Infinity) | Infinity
| (-3,4) | (Infinity,1e+300) | Infinity (-3,4) | (Infinity,1e+300) | Infinity
| (0,0) | (1e+300,Infinity) | Infinity (0,0) | (1e+300,Infinity) | Infinity
| (0,0) | (Infinity,1e+300) | Infinity (0,0) | (Infinity,1e+300) | Infinity
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
| (1e-300,-1e-300) | (Infinity,1e+300) | Infinity (1e-300,-1e-300) | (Infinity,1e+300) | Infinity
| (5.1,34.5) | (1e+300,Infinity) | Infinity (5.1,34.5) | (1e+300,Infinity) | Infinity
| (5.1,34.5) | (Infinity,1e+300) | Infinity (5.1,34.5) | (Infinity,1e+300) | Infinity
| (10,10) | (1e+300,Infinity) | Infinity (10,10) | (1e+300,Infinity) | Infinity
| (10,10) | (Infinity,1e+300) | Infinity (10,10) | (Infinity,1e+300) | Infinity
| (1e+300,Infinity) | (-10,0) | Infinity (1e+300,Infinity) | (-10,0) | Infinity
| (1e+300,Infinity) | (-5,-12) | Infinity (1e+300,Infinity) | (-5,-12) | Infinity
| (1e+300,Infinity) | (-3,4) | Infinity (1e+300,Infinity) | (-3,4) | Infinity
| (1e+300,Infinity) | (0,0) | Infinity (1e+300,Infinity) | (0,0) | Infinity
| (1e+300,Infinity) | (1e-300,-1e-300) | Infinity (1e+300,Infinity) | (1e-300,-1e-300) | Infinity
| (1e+300,Infinity) | (5.1,34.5) | Infinity (1e+300,Infinity) | (5.1,34.5) | Infinity
| (1e+300,Infinity) | (10,10) | Infinity (1e+300,Infinity) | (10,10) | Infinity
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity (1e+300,Infinity) | (Infinity,1e+300) | Infinity
| (Infinity,1e+300) | (-10,0) | Infinity (Infinity,1e+300) | (-10,0) | Infinity
| (Infinity,1e+300) | (-5,-12) | Infinity (Infinity,1e+300) | (-5,-12) | Infinity
| (Infinity,1e+300) | (-3,4) | Infinity (Infinity,1e+300) | (-3,4) | Infinity
| (Infinity,1e+300) | (0,0) | Infinity (Infinity,1e+300) | (0,0) | Infinity
| (Infinity,1e+300) | (1e-300,-1e-300) | Infinity (Infinity,1e+300) | (1e-300,-1e-300) | Infinity
| (Infinity,1e+300) | (5.1,34.5) | Infinity (Infinity,1e+300) | (5.1,34.5) | Infinity
| (Infinity,1e+300) | (10,10) | Infinity (Infinity,1e+300) | (10,10) | Infinity
| (Infinity,1e+300) | (1e+300,Infinity) | Infinity (Infinity,1e+300) | (1e+300,Infinity) | Infinity
| (-10,0) | (NaN,NaN) | NaN (-10,0) | (NaN,NaN) | NaN
| (-5,-12) | (NaN,NaN) | NaN (-5,-12) | (NaN,NaN) | NaN
| (-3,4) | (NaN,NaN) | NaN (-3,4) | (NaN,NaN) | NaN
| (0,0) | (NaN,NaN) | NaN (0,0) | (NaN,NaN) | NaN
| (1e-300,-1e-300) | (NaN,NaN) | NaN (1e-300,-1e-300) | (NaN,NaN) | NaN
| (5.1,34.5) | (NaN,NaN) | NaN (5.1,34.5) | (NaN,NaN) | NaN
| (10,10) | (NaN,NaN) | NaN (10,10) | (NaN,NaN) | NaN
| (1e+300,Infinity) | (1e+300,Infinity) | NaN (1e+300,Infinity) | (1e+300,Infinity) | NaN
| (1e+300,Infinity) | (NaN,NaN) | NaN (1e+300,Infinity) | (NaN,NaN) | NaN
| (Infinity,1e+300) | (Infinity,1e+300) | NaN (Infinity,1e+300) | (Infinity,1e+300) | NaN
| (Infinity,1e+300) | (NaN,NaN) | NaN (Infinity,1e+300) | (NaN,NaN) | NaN
| (NaN,NaN) | (-10,0) | NaN (NaN,NaN) | (-10,0) | NaN
| (NaN,NaN) | (-5,-12) | NaN (NaN,NaN) | (-5,-12) | NaN
| (NaN,NaN) | (-3,4) | NaN (NaN,NaN) | (-3,4) | NaN
| (NaN,NaN) | (0,0) | NaN (NaN,NaN) | (0,0) | NaN
| (NaN,NaN) | (1e-300,-1e-300) | NaN (NaN,NaN) | (1e-300,-1e-300) | NaN
| (NaN,NaN) | (5.1,34.5) | NaN (NaN,NaN) | (5.1,34.5) | NaN
| (NaN,NaN) | (10,10) | NaN (NaN,NaN) | (10,10) | NaN
| (NaN,NaN) | (1e+300,Infinity) | NaN (NaN,NaN) | (1e+300,Infinity) | NaN
| (NaN,NaN) | (Infinity,1e+300) | NaN (NaN,NaN) | (Infinity,1e+300) | NaN
| (NaN,NaN) | (NaN,NaN) | NaN (NaN,NaN) | (NaN,NaN) | NaN
(100 rows) (100 rows)
SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 SELECT p1.f1 AS point1, p2.f1 AS point2
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3; WHERE (p1.f1 <-> p2.f1) > 3;
thirty | point1 | point2 point1 | point2
--------+-------------------+------------------- -------------------+-------------------
| (0,0) | (-10,0) (0,0) | (-10,0)
| (0,0) | (-3,4) (0,0) | (-3,4)
| (0,0) | (5.1,34.5) (0,0) | (5.1,34.5)
| (0,0) | (-5,-12) (0,0) | (-5,-12)
| (0,0) | (1e+300,Infinity) (0,0) | (1e+300,Infinity)
| (0,0) | (Infinity,1e+300) (0,0) | (Infinity,1e+300)
| (0,0) | (NaN,NaN) (0,0) | (NaN,NaN)
| (0,0) | (10,10) (0,0) | (10,10)
| (-10,0) | (0,0) (-10,0) | (0,0)
| (-10,0) | (-3,4) (-10,0) | (-3,4)
| (-10,0) | (5.1,34.5) (-10,0) | (5.1,34.5)
| (-10,0) | (-5,-12) (-10,0) | (-5,-12)
| (-10,0) | (1e-300,-1e-300) (-10,0) | (1e-300,-1e-300)
| (-10,0) | (1e+300,Infinity) (-10,0) | (1e+300,Infinity)
| (-10,0) | (Infinity,1e+300) (-10,0) | (Infinity,1e+300)
| (-10,0) | (NaN,NaN) (-10,0) | (NaN,NaN)
| (-10,0) | (10,10) (-10,0) | (10,10)
| (-3,4) | (0,0) (-3,4) | (0,0)
| (-3,4) | (-10,0) (-3,4) | (-10,0)
| (-3,4) | (5.1,34.5) (-3,4) | (5.1,34.5)
| (-3,4) | (-5,-12) (-3,4) | (-5,-12)
| (-3,4) | (1e-300,-1e-300) (-3,4) | (1e-300,-1e-300)
| (-3,4) | (1e+300,Infinity) (-3,4) | (1e+300,Infinity)
| (-3,4) | (Infinity,1e+300) (-3,4) | (Infinity,1e+300)
| (-3,4) | (NaN,NaN) (-3,4) | (NaN,NaN)
| (-3,4) | (10,10) (-3,4) | (10,10)
| (5.1,34.5) | (0,0) (5.1,34.5) | (0,0)
| (5.1,34.5) | (-10,0) (5.1,34.5) | (-10,0)
| (5.1,34.5) | (-3,4) (5.1,34.5) | (-3,4)
| (5.1,34.5) | (-5,-12) (5.1,34.5) | (-5,-12)
| (5.1,34.5) | (1e-300,-1e-300) (5.1,34.5) | (1e-300,-1e-300)
| (5.1,34.5) | (1e+300,Infinity) (5.1,34.5) | (1e+300,Infinity)
| (5.1,34.5) | (Infinity,1e+300) (5.1,34.5) | (Infinity,1e+300)
| (5.1,34.5) | (NaN,NaN) (5.1,34.5) | (NaN,NaN)
| (5.1,34.5) | (10,10) (5.1,34.5) | (10,10)
| (-5,-12) | (0,0) (-5,-12) | (0,0)
| (-5,-12) | (-10,0) (-5,-12) | (-10,0)
| (-5,-12) | (-3,4) (-5,-12) | (-3,4)
| (-5,-12) | (5.1,34.5) (-5,-12) | (5.1,34.5)
| (-5,-12) | (1e-300,-1e-300) (-5,-12) | (1e-300,-1e-300)
| (-5,-12) | (1e+300,Infinity) (-5,-12) | (1e+300,Infinity)
| (-5,-12) | (Infinity,1e+300) (-5,-12) | (Infinity,1e+300)
| (-5,-12) | (NaN,NaN) (-5,-12) | (NaN,NaN)
| (-5,-12) | (10,10) (-5,-12) | (10,10)
| (1e-300,-1e-300) | (-10,0) (1e-300,-1e-300) | (-10,0)
| (1e-300,-1e-300) | (-3,4) (1e-300,-1e-300) | (-3,4)
| (1e-300,-1e-300) | (5.1,34.5) (1e-300,-1e-300) | (5.1,34.5)
| (1e-300,-1e-300) | (-5,-12) (1e-300,-1e-300) | (-5,-12)
| (1e-300,-1e-300) | (1e+300,Infinity) (1e-300,-1e-300) | (1e+300,Infinity)
| (1e-300,-1e-300) | (Infinity,1e+300) (1e-300,-1e-300) | (Infinity,1e+300)
| (1e-300,-1e-300) | (NaN,NaN) (1e-300,-1e-300) | (NaN,NaN)
| (1e-300,-1e-300) | (10,10) (1e-300,-1e-300) | (10,10)
| (1e+300,Infinity) | (0,0) (1e+300,Infinity) | (0,0)
| (1e+300,Infinity) | (-10,0) (1e+300,Infinity) | (-10,0)
| (1e+300,Infinity) | (-3,4) (1e+300,Infinity) | (-3,4)
| (1e+300,Infinity) | (5.1,34.5) (1e+300,Infinity) | (5.1,34.5)
| (1e+300,Infinity) | (-5,-12) (1e+300,Infinity) | (-5,-12)
| (1e+300,Infinity) | (1e-300,-1e-300) (1e+300,Infinity) | (1e-300,-1e-300)
| (1e+300,Infinity) | (1e+300,Infinity) (1e+300,Infinity) | (1e+300,Infinity)
| (1e+300,Infinity) | (Infinity,1e+300) (1e+300,Infinity) | (Infinity,1e+300)
| (1e+300,Infinity) | (NaN,NaN) (1e+300,Infinity) | (NaN,NaN)
| (1e+300,Infinity) | (10,10) (1e+300,Infinity) | (10,10)
| (Infinity,1e+300) | (0,0) (Infinity,1e+300) | (0,0)
| (Infinity,1e+300) | (-10,0) (Infinity,1e+300) | (-10,0)
| (Infinity,1e+300) | (-3,4) (Infinity,1e+300) | (-3,4)
| (Infinity,1e+300) | (5.1,34.5) (Infinity,1e+300) | (5.1,34.5)
| (Infinity,1e+300) | (-5,-12) (Infinity,1e+300) | (-5,-12)
| (Infinity,1e+300) | (1e-300,-1e-300) (Infinity,1e+300) | (1e-300,-1e-300)
| (Infinity,1e+300) | (1e+300,Infinity) (Infinity,1e+300) | (1e+300,Infinity)
| (Infinity,1e+300) | (Infinity,1e+300) (Infinity,1e+300) | (Infinity,1e+300)
| (Infinity,1e+300) | (NaN,NaN) (Infinity,1e+300) | (NaN,NaN)
| (Infinity,1e+300) | (10,10) (Infinity,1e+300) | (10,10)
| (NaN,NaN) | (0,0) (NaN,NaN) | (0,0)
| (NaN,NaN) | (-10,0) (NaN,NaN) | (-10,0)
| (NaN,NaN) | (-3,4) (NaN,NaN) | (-3,4)
| (NaN,NaN) | (5.1,34.5) (NaN,NaN) | (5.1,34.5)
| (NaN,NaN) | (-5,-12) (NaN,NaN) | (-5,-12)
| (NaN,NaN) | (1e-300,-1e-300) (NaN,NaN) | (1e-300,-1e-300)
| (NaN,NaN) | (1e+300,Infinity) (NaN,NaN) | (1e+300,Infinity)
| (NaN,NaN) | (Infinity,1e+300) (NaN,NaN) | (Infinity,1e+300)
| (NaN,NaN) | (NaN,NaN) (NaN,NaN) | (NaN,NaN)
| (NaN,NaN) | (10,10) (NaN,NaN) | (10,10)
| (10,10) | (0,0) (10,10) | (0,0)
| (10,10) | (-10,0) (10,10) | (-10,0)
| (10,10) | (-3,4) (10,10) | (-3,4)
| (10,10) | (5.1,34.5) (10,10) | (5.1,34.5)
| (10,10) | (-5,-12) (10,10) | (-5,-12)
| (10,10) | (1e-300,-1e-300) (10,10) | (1e-300,-1e-300)
| (10,10) | (1e+300,Infinity) (10,10) | (1e+300,Infinity)
| (10,10) | (Infinity,1e+300) (10,10) | (Infinity,1e+300)
| (10,10) | (NaN,NaN) (10,10) | (NaN,NaN)
(91 rows) (91 rows)
-- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance SELECT p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
ORDER BY distance, p1.f1[0], p2.f1[0]; ORDER BY distance, p1.f1[0], p2.f1[0];
fifteen | point1 | point2 | distance point1 | point2 | distance
---------+-------------------+-------------------+------------------ -------------------+-------------------+------------------
| (-3,4) | (0,0) | 5 (-3,4) | (0,0) | 5
| (-3,4) | (1e-300,-1e-300) | 5 (-3,4) | (1e-300,-1e-300) | 5
| (-10,0) | (-3,4) | 8.06225774829855 (-10,0) | (-3,4) | 8.06225774829855
| (-10,0) | (0,0) | 10 (-10,0) | (0,0) | 10
| (-10,0) | (1e-300,-1e-300) | 10 (-10,0) | (1e-300,-1e-300) | 10
| (-10,0) | (-5,-12) | 13 (-10,0) | (-5,-12) | 13
| (-5,-12) | (0,0) | 13 (-5,-12) | (0,0) | 13
| (-5,-12) | (1e-300,-1e-300) | 13 (-5,-12) | (1e-300,-1e-300) | 13
| (0,0) | (10,10) | 14.142135623731 (0,0) | (10,10) | 14.142135623731
| (1e-300,-1e-300) | (10,10) | 14.142135623731 (1e-300,-1e-300) | (10,10) | 14.142135623731
| (-3,4) | (10,10) | 14.3178210632764 (-3,4) | (10,10) | 14.3178210632764
| (-5,-12) | (-3,4) | 16.1245154965971 (-5,-12) | (-3,4) | 16.1245154965971
| (-10,0) | (10,10) | 22.3606797749979 (-10,0) | (10,10) | 22.3606797749979
| (5.1,34.5) | (10,10) | 24.9851956166046 (5.1,34.5) | (10,10) | 24.9851956166046
| (-5,-12) | (10,10) | 26.6270539113887 (-5,-12) | (10,10) | 26.6270539113887
| (-3,4) | (5.1,34.5) | 31.5572495632937 (-3,4) | (5.1,34.5) | 31.5572495632937
| (0,0) | (5.1,34.5) | 34.8749193547455 (0,0) | (5.1,34.5) | 34.8749193547455
| (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455 (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455
| (-10,0) | (5.1,34.5) | 37.6597928831267 (-10,0) | (5.1,34.5) | 37.6597928831267
| (-5,-12) | (5.1,34.5) | 47.5842410888311 (-5,-12) | (5.1,34.5) | 47.5842410888311
| (-10,0) | (1e+300,Infinity) | Infinity (-10,0) | (1e+300,Infinity) | Infinity
| (-10,0) | (Infinity,1e+300) | Infinity (-10,0) | (Infinity,1e+300) | Infinity
| (-5,-12) | (1e+300,Infinity) | Infinity (-5,-12) | (1e+300,Infinity) | Infinity
| (-5,-12) | (Infinity,1e+300) | Infinity (-5,-12) | (Infinity,1e+300) | Infinity
| (-3,4) | (1e+300,Infinity) | Infinity (-3,4) | (1e+300,Infinity) | Infinity
| (-3,4) | (Infinity,1e+300) | Infinity (-3,4) | (Infinity,1e+300) | Infinity
| (0,0) | (1e+300,Infinity) | Infinity (0,0) | (1e+300,Infinity) | Infinity
| (0,0) | (Infinity,1e+300) | Infinity (0,0) | (Infinity,1e+300) | Infinity
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
| (1e-300,-1e-300) | (Infinity,1e+300) | Infinity (1e-300,-1e-300) | (Infinity,1e+300) | Infinity
| (5.1,34.5) | (1e+300,Infinity) | Infinity (5.1,34.5) | (1e+300,Infinity) | Infinity
| (5.1,34.5) | (Infinity,1e+300) | Infinity (5.1,34.5) | (Infinity,1e+300) | Infinity
| (10,10) | (1e+300,Infinity) | Infinity (10,10) | (1e+300,Infinity) | Infinity
| (10,10) | (Infinity,1e+300) | Infinity (10,10) | (Infinity,1e+300) | Infinity
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity (1e+300,Infinity) | (Infinity,1e+300) | Infinity
(35 rows) (35 rows)
-- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance SELECT p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 |>> p2.f1 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 |>> p2.f1
ORDER BY distance; ORDER BY distance;
three | point1 | point2 | distance point1 | point2 | distance
-------+-------------------+-------------------+------------------ -------------------+-------------------+------------------
| (-3,4) | (0,0) | 5 (-3,4) | (0,0) | 5
| (-3,4) | (1e-300,-1e-300) | 5 (-3,4) | (1e-300,-1e-300) | 5
| (-10,0) | (-5,-12) | 13 (-10,0) | (-5,-12) | 13
| (5.1,34.5) | (10,10) | 24.9851956166046 (5.1,34.5) | (10,10) | 24.9851956166046
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity (1e+300,Infinity) | (Infinity,1e+300) | Infinity
(5 rows) (5 rows)
-- Test that GiST indexes provide same behavior as sequential scan -- Test that GiST indexes provide same behavior as sequential scan

View File

@ -33,16 +33,16 @@ INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
ERROR: invalid input syntax for type polygon: "asdf" ERROR: invalid input syntax for type polygon: "asdf"
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('asdf'); LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
^ ^
SELECT '' AS four, * FROM POLYGON_TBL; SELECT * FROM POLYGON_TBL;
four | f1 f1
------+---------------------------- ----------------------------
| ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0))
| ((3,1),(3,3),(1,0)) ((3,1),(3,3),(1,0))
| ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8))
| ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2))
| ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(7,8),(5,6),(3,-4))
| ((0,0)) ((0,0))
| ((0,1),(0,1)) ((0,1),(0,1))
(7 rows) (7 rows)
-- --

View File

@ -86,131 +86,131 @@ INSERT INTO SUBSELECT_TBL VALUES (2, 2, 2);
INSERT INTO SUBSELECT_TBL VALUES (3, 3, 3); INSERT INTO SUBSELECT_TBL VALUES (3, 3, 3);
INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8); INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8);
INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL); INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL);
SELECT '' AS eight, * FROM SUBSELECT_TBL; SELECT * FROM SUBSELECT_TBL;
eight | f1 | f2 | f3 f1 | f2 | f3
-------+----+----+---- ----+----+----
| 1 | 2 | 3 1 | 2 | 3
| 2 | 3 | 4 2 | 3 | 4
| 3 | 4 | 5 3 | 4 | 5
| 1 | 1 | 1 1 | 1 | 1
| 2 | 2 | 2 2 | 2 | 2
| 3 | 3 | 3 3 | 3 | 3
| 6 | 7 | 8 6 | 7 | 8
| 8 | 9 | 8 | 9 |
(8 rows) (8 rows)
-- Uncorrelated subselects -- Uncorrelated subselects
SELECT '' AS two, f1 AS "Constant Select" FROM SUBSELECT_TBL SELECT f1 AS "Constant Select" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT 1); WHERE f1 IN (SELECT 1);
two | Constant Select Constant Select
-----+----------------- -----------------
| 1 1
| 1 1
(2 rows) (2 rows)
SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL SELECT f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL);
six | Uncorrelated Field Uncorrelated Field
-----+-------------------- --------------------
| 1 1
| 2 2
| 3 3
| 1 1
| 2 2
| 3 3
(6 rows) (6 rows)
SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL SELECT f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE
f2 IN (SELECT f1 FROM SUBSELECT_TBL)); f2 IN (SELECT f1 FROM SUBSELECT_TBL));
six | Uncorrelated Field Uncorrelated Field
-----+-------------------- --------------------
| 1 1
| 2 2
| 3 3
| 1 1
| 2 2
| 3 3
(6 rows) (6 rows)
SELECT '' AS three, f1, f2 SELECT f1, f2
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
WHERE f3 IS NOT NULL); WHERE f3 IS NOT NULL);
three | f1 | f2 f1 | f2
-------+----+---- ----+----
| 1 | 2 1 | 2
| 6 | 7 6 | 7
| 8 | 9 8 | 9
(3 rows) (3 rows)
-- Correlated subselects -- Correlated subselects
SELECT '' AS six, f1 AS "Correlated Field", f2 AS "Second Field" SELECT f1 AS "Correlated Field", f2 AS "Second Field"
FROM SUBSELECT_TBL upper FROM SUBSELECT_TBL upper
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f1 = upper.f1); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f1 = upper.f1);
six | Correlated Field | Second Field Correlated Field | Second Field
-----+------------------+-------------- ------------------+--------------
| 1 | 2 1 | 2
| 2 | 3 2 | 3
| 3 | 4 3 | 4
| 1 | 1 1 | 1
| 2 | 2 2 | 2
| 3 | 3 3 | 3
(6 rows) (6 rows)
SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" SELECT f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL upper FROM SUBSELECT_TBL upper
WHERE f1 IN WHERE f1 IN
(SELECT f2 FROM SUBSELECT_TBL WHERE CAST(upper.f2 AS float) = f3); (SELECT f2 FROM SUBSELECT_TBL WHERE CAST(upper.f2 AS float) = f3);
six | Correlated Field | Second Field Correlated Field | Second Field
-----+------------------+-------------- ------------------+--------------
| 2 | 4 2 | 4
| 3 | 5 3 | 5
| 1 | 1 1 | 1
| 2 | 2 2 | 2
| 3 | 3 3 | 3
(5 rows) (5 rows)
SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" SELECT f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL upper FROM SUBSELECT_TBL upper
WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL
WHERE f2 = CAST(f3 AS integer)); WHERE f2 = CAST(f3 AS integer));
six | Correlated Field | Second Field Correlated Field | Second Field
-----+------------------+-------------- ------------------+--------------
| 1 | 3 1 | 3
| 2 | 4 2 | 4
| 3 | 5 3 | 5
| 6 | 8 6 | 8
(4 rows) (4 rows)
SELECT '' AS five, f1 AS "Correlated Field" SELECT f1 AS "Correlated Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
WHERE f3 IS NOT NULL); WHERE f3 IS NOT NULL);
five | Correlated Field Correlated Field
------+------------------ ------------------
| 2 2
| 3 3
| 1 1
| 2 2
| 3 3
(5 rows) (5 rows)
-- --
-- Use some existing tables in the regression test -- Use some existing tables in the regression test
-- --
SELECT '' AS eight, ss.f1 AS "Correlated Field", ss.f3 AS "Second Field" SELECT ss.f1 AS "Correlated Field", ss.f3 AS "Second Field"
FROM SUBSELECT_TBL ss FROM SUBSELECT_TBL ss
WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL
WHERE f1 != ss.f1 AND f1 < 2147483647); WHERE f1 != ss.f1 AND f1 < 2147483647);
eight | Correlated Field | Second Field Correlated Field | Second Field
-------+------------------+-------------- ------------------+--------------
| 2 | 4 2 | 4
| 3 | 5 3 | 5
| 2 | 2 2 | 2
| 3 | 3 3 | 3
| 6 | 8 6 | 8
| 8 | 8 |
(6 rows) (6 rows)
select q1, float8(count(*)) / (select count(*) from int8_tbl) select q1, float8(count(*)) / (select count(*) from int8_tbl)

View File

@ -16,11 +16,11 @@ SELECT text 'this is a text string' = text 'this is a text strin' AS false;
CREATE TABLE TEXT_TBL (f1 text); CREATE TABLE TEXT_TBL (f1 text);
INSERT INTO TEXT_TBL VALUES ('doh!'); INSERT INTO TEXT_TBL VALUES ('doh!');
INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor'); INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor');
SELECT '' AS two, * FROM TEXT_TBL; SELECT * FROM TEXT_TBL;
two | f1 f1
-----+------------------- -------------------
| doh! doh!
| hi de ho neighbor hi de ho neighbor
(2 rows) (2 rows)
-- As of 8.3 we have removed most implicit casts to text, so that for example -- As of 8.3 we have removed most implicit casts to text, so that for example

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,79 +14,79 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('');
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd'); INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type character varying(1) ERROR: value too long for type character varying(1)
INSERT INTO VARCHAR_TBL (f1) VALUES ('c '); INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
seven | f1 f1
-------+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(7 rows) (7 rows)
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
six | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
one | f1 f1
-----+---- ----
| a a
(1 row) (1 row)
SELECT '' AS five, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
five | f1 f1
------+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
(5 rows) (5 rows)
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
six | f1 f1
-----+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
one | f1 f1
-----+---- ----
| c c
(1 row) (1 row)
SELECT '' AS two, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
two | f1 f1
-----+---- ----
| a a
| c c
(2 rows) (2 rows)
DROP TABLE VARCHAR_TBL; DROP TABLE VARCHAR_TBL;
@ -100,12 +100,12 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type character varying(4) ERROR: value too long for type character varying(4)
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd '); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
four | f1 f1
------+------ ------
| a a
| ab ab
| abcd abcd
| abcd abcd
(4 rows) (4 rows)

View File

@ -14,79 +14,79 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('');
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd'); INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type character varying(1) ERROR: value too long for type character varying(1)
INSERT INTO VARCHAR_TBL (f1) VALUES ('c '); INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
seven | f1 f1
-------+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(7 rows) (7 rows)
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
six | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
one | f1 f1
-----+---- ----
| a a
(1 row) (1 row)
SELECT '' AS five, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
five | f1 f1
------+---- ----
| 1 1
| 2 2
| 3 3
|
(4 rows) (4 rows)
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
six | f1 f1
-----+---- ----
| a a
| 1 1
| 2 2
| 3 3
|
(5 rows) (5 rows)
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
one | f1 f1
-----+---- ----
| A A
| c c
(2 rows) (2 rows)
SELECT '' AS two, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
two | f1 f1
-----+---- ----
| a a
| A A
| c c
(3 rows) (3 rows)
DROP TABLE VARCHAR_TBL; DROP TABLE VARCHAR_TBL;
@ -100,12 +100,12 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type character varying(4) ERROR: value too long for type character varying(4)
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd '); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
four | f1 f1
------+------ ------
| a a
| ab ab
| abcd abcd
| abcd abcd
(4 rows) (4 rows)

View File

@ -14,79 +14,79 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('');
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd'); INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type character varying(1) ERROR: value too long for type character varying(1)
INSERT INTO VARCHAR_TBL (f1) VALUES ('c '); INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
seven | f1 f1
-------+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(7 rows) (7 rows)
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
six | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
|
| c c
(6 rows) (6 rows)
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
one | f1 f1
-----+---- ----
| a a
(1 row) (1 row)
SELECT '' AS five, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
five | f1 f1
------+---- ----
|
(1 row) (1 rows)
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
six | f1 f1
-----+---- ----
| a a
|
(2 rows) (2 rows)
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
one | f1 f1
-----+---- ----
| A A
| 1 1
| 2 2
| 3 3
| c c
(5 rows) (5 rows)
SELECT '' AS two, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
two | f1 f1
-----+---- ----
| a a
| A A
| 1 1
| 2 2
| 3 3
| c c
(6 rows) (6 rows)
DROP TABLE VARCHAR_TBL; DROP TABLE VARCHAR_TBL;
@ -100,12 +100,12 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type character varying(4) ERROR: value too long for type character varying(4)
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd '); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
four | f1 f1
------+------ ------
| a a
| ab ab
| abcd abcd
| abcd abcd
(4 rows) (4 rows)

View File

@ -21,7 +21,7 @@ INSERT INTO DEFAULT_TBL (i, f) VALUES (2, 987.654);
INSERT INTO DEFAULT_TBL (x) VALUES ('marc'); INSERT INTO DEFAULT_TBL (x) VALUES ('marc');
INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0); INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0);
SELECT '' AS five, * FROM DEFAULT_TBL; SELECT * FROM DEFAULT_TBL;
CREATE SEQUENCE DEFAULT_SEQ; CREATE SEQUENCE DEFAULT_SEQ;
@ -33,7 +33,7 @@ INSERT INTO DEFAULTEXPR_TBL (i1) VALUES (-3);
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4); INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4);
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL); INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL);
SELECT '' AS four, * FROM DEFAULTEXPR_TBL; SELECT * FROM DEFAULTEXPR_TBL;
-- syntax errors -- syntax errors
-- test for extraneous comma -- test for extraneous comma
@ -61,7 +61,7 @@ INSERT INTO CHECK_TBL VALUES (2);
INSERT INTO CHECK_TBL VALUES (6); INSERT INTO CHECK_TBL VALUES (6);
INSERT INTO CHECK_TBL VALUES (1); INSERT INTO CHECK_TBL VALUES (1);
SELECT '' AS three, * FROM CHECK_TBL; SELECT * FROM CHECK_TBL;
CREATE SEQUENCE CHECK_SEQ; CREATE SEQUENCE CHECK_SEQ;
@ -76,7 +76,7 @@ INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2);
INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11); INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11);
INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7); INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
SELECT '' AS two, * from CHECK2_TBL; SELECT * from CHECK2_TBL;
-- --
-- Check constraints on INSERT -- Check constraints on INSERT
@ -92,7 +92,7 @@ CREATE TABLE INSERT_TBL (x INT DEFAULT nextval('insert_seq'),
INSERT INTO INSERT_TBL(x,z) VALUES (2, -2); INSERT INTO INSERT_TBL(x,z) VALUES (2, -2);
SELECT '' AS zero, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
SELECT 'one' AS one, nextval('insert_seq'); SELECT 'one' AS one, nextval('insert_seq');
@ -104,14 +104,14 @@ INSERT INTO INSERT_TBL VALUES (5, 'check failed', -5);
INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7); INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7);
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-'); INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT '' AS four, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4); INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4);
INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed'); INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed');
INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed'); INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-'); INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT '' AS six, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
SELECT 'seven' AS one, nextval('insert_seq'); SELECT 'seven' AS one, nextval('insert_seq');
@ -124,7 +124,7 @@ SELECT 'eight' AS one, currval('insert_seq');
-- was wrong: -- was wrong:
INSERT INTO INSERT_TBL VALUES (null, null, null); INSERT INTO INSERT_TBL VALUES (null, null, null);
SELECT '' AS nine, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
-- --
-- Check constraints on system columns -- Check constraints on system columns
@ -208,13 +208,13 @@ INSERT INTO tmp VALUES (5, '!check failed', null);
INSERT INTO tmp VALUES (null, 'try again', null); INSERT INTO tmp VALUES (null, 'try again', null);
INSERT INTO INSERT_TBL(y) select yd from tmp; INSERT INTO INSERT_TBL(y) select yd from tmp;
SELECT '' AS three, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again';
SELECT '' AS four, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
DROP TABLE tmp; DROP TABLE tmp;
@ -241,7 +241,7 @@ CREATE TABLE COPY_TBL (x INT, y TEXT, z INT,
COPY COPY_TBL FROM '@abs_srcdir@/data/constro.data'; COPY COPY_TBL FROM '@abs_srcdir@/data/constro.data';
SELECT '' AS two, * FROM COPY_TBL; SELECT * FROM COPY_TBL;
COPY COPY_TBL FROM '@abs_srcdir@/data/constrf.data'; COPY COPY_TBL FROM '@abs_srcdir@/data/constrf.data';
@ -260,7 +260,7 @@ INSERT INTO PRIMARY_TBL VALUES (4, 'three');
INSERT INTO PRIMARY_TBL VALUES (5, 'one'); INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six'); INSERT INTO PRIMARY_TBL (t) VALUES ('six');
SELECT '' AS four, * FROM PRIMARY_TBL; SELECT * FROM PRIMARY_TBL;
DROP TABLE PRIMARY_TBL; DROP TABLE PRIMARY_TBL;
@ -274,7 +274,7 @@ INSERT INTO PRIMARY_TBL VALUES (4, 'three');
INSERT INTO PRIMARY_TBL VALUES (5, 'one'); INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six'); INSERT INTO PRIMARY_TBL (t) VALUES ('six');
SELECT '' AS three, * FROM PRIMARY_TBL; SELECT * FROM PRIMARY_TBL;
DROP TABLE PRIMARY_TBL; DROP TABLE PRIMARY_TBL;
@ -297,7 +297,7 @@ INSERT INTO UNIQUE_TBL VALUES (6, 'six-upsert-insert') ON CONFLICT (i) DO UPDATE
-- should fail -- should fail
INSERT INTO UNIQUE_TBL VALUES (1, 'a'), (2, 'b'), (2, 'b') ON CONFLICT (i) DO UPDATE SET t = 'fails'; INSERT INTO UNIQUE_TBL VALUES (1, 'a'), (2, 'b'), (2, 'b') ON CONFLICT (i) DO UPDATE SET t = 'fails';
SELECT '' AS five, * FROM UNIQUE_TBL; SELECT * FROM UNIQUE_TBL;
DROP TABLE UNIQUE_TBL; DROP TABLE UNIQUE_TBL;
@ -311,7 +311,7 @@ INSERT INTO UNIQUE_TBL VALUES (1, 'one');
INSERT INTO UNIQUE_TBL VALUES (5, 'one'); INSERT INTO UNIQUE_TBL VALUES (5, 'one');
INSERT INTO UNIQUE_TBL (t) VALUES ('six'); INSERT INTO UNIQUE_TBL (t) VALUES ('six');
SELECT '' AS five, * FROM UNIQUE_TBL; SELECT * FROM UNIQUE_TBL;
DROP TABLE UNIQUE_TBL; DROP TABLE UNIQUE_TBL;

View File

@ -17,14 +17,14 @@ INSERT INTO DEFAULT_TBL VALUES (1, 'bruce');
INSERT INTO DEFAULT_TBL (i, f) VALUES (2, 987.654); INSERT INTO DEFAULT_TBL (i, f) VALUES (2, 987.654);
INSERT INTO DEFAULT_TBL (x) VALUES ('marc'); INSERT INTO DEFAULT_TBL (x) VALUES ('marc');
INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0); INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0);
SELECT '' AS five, * FROM DEFAULT_TBL; SELECT * FROM DEFAULT_TBL;
five | i | x | f i | x | f
------+-----+--------+--------- -----+--------+---------
| 1 | thomas | 57.0613 1 | thomas | 57.0613
| 1 | bruce | 123.456 1 | bruce | 123.456
| 2 | vadim | 987.654 2 | vadim | 987.654
| 100 | marc | 123.456 100 | marc | 123.456
| 3 | | 1 3 | | 1
(5 rows) (5 rows)
CREATE SEQUENCE DEFAULT_SEQ; CREATE SEQUENCE DEFAULT_SEQ;
@ -34,13 +34,13 @@ INSERT INTO DEFAULTEXPR_TBL VALUES (-1, -2);
INSERT INTO DEFAULTEXPR_TBL (i1) VALUES (-3); INSERT INTO DEFAULTEXPR_TBL (i1) VALUES (-3);
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4); INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4);
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL); INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL);
SELECT '' AS four, * FROM DEFAULTEXPR_TBL; SELECT * FROM DEFAULTEXPR_TBL;
four | i1 | i2 i1 | i2
------+-----+---- -----+----
| -1 | -2 -1 | -2
| -3 | 1 -3 | 1
| 102 | -4 102 | -4
| 102 | 102 |
(4 rows) (4 rows)
-- syntax errors -- syntax errors
@ -76,12 +76,12 @@ INSERT INTO CHECK_TBL VALUES (6);
INSERT INTO CHECK_TBL VALUES (1); INSERT INTO CHECK_TBL VALUES (1);
ERROR: new row for relation "check_tbl" violates check constraint "check_con" ERROR: new row for relation "check_tbl" violates check constraint "check_con"
DETAIL: Failing row contains (1). DETAIL: Failing row contains (1).
SELECT '' AS three, * FROM CHECK_TBL; SELECT * FROM CHECK_TBL;
three | x x
-------+--- ---
| 5 5
| 4 4
| 6 6
(3 rows) (3 rows)
CREATE SEQUENCE CHECK_SEQ; CREATE SEQUENCE CHECK_SEQ;
@ -102,11 +102,11 @@ INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11);
ERROR: new row for relation "check2_tbl" violates check constraint "sequence_con" ERROR: new row for relation "check2_tbl" violates check constraint "sequence_con"
DETAIL: Failing row contains (6, check failed, 11). DETAIL: Failing row contains (6, check failed, 11).
INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7); INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
SELECT '' AS two, * from CHECK2_TBL; SELECT * from CHECK2_TBL;
two | x | y | z x | y | z
-----+---+----------+---- ---+----------+----
| 4 | check ok | -2 4 | check ok | -2
| 7 | check ok | 7 7 | check ok | 7
(2 rows) (2 rows)
-- --
@ -121,9 +121,9 @@ CREATE TABLE INSERT_TBL (x INT DEFAULT nextval('insert_seq'),
INSERT INTO INSERT_TBL(x,z) VALUES (2, -2); INSERT INTO INSERT_TBL(x,z) VALUES (2, -2);
ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_con" ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_con"
DETAIL: Failing row contains (2, -NULL-, -2). DETAIL: Failing row contains (2, -NULL-, -2).
SELECT '' AS zero, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
zero | x | y | z x | y | z
------+---+---+--- ---+---+---
(0 rows) (0 rows)
SELECT 'one' AS one, nextval('insert_seq'); SELECT 'one' AS one, nextval('insert_seq');
@ -145,13 +145,13 @@ ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_
DETAIL: Failing row contains (5, check failed, -5). DETAIL: Failing row contains (5, check failed, -5).
INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7); INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7);
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-'); INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT '' AS four, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
four | x | y | z x | y | z
------+---+---------------+---- ---+---------------+----
| 3 | Y | -3 3 | Y | -3
| 7 | -NULL- | -7 7 | -NULL- | -7
| 7 | !check failed | -7 7 | !check failed | -7
| 4 | -!NULL- | -4 4 | -!NULL- | -4
(4 rows) (4 rows)
INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4); INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4);
@ -162,15 +162,15 @@ ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_
DETAIL: Failing row contains (5, check failed, -5). DETAIL: Failing row contains (5, check failed, -5).
INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed'); INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-'); INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT '' AS six, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
six | x | y | z x | y | z
-----+---+---------------+---- ---+---------------+----
| 3 | Y | -3 3 | Y | -3
| 7 | -NULL- | -7 7 | -NULL- | -7
| 7 | !check failed | -7 7 | !check failed | -7
| 4 | -!NULL- | -4 4 | -!NULL- | -4
| 5 | !check failed | -5 5 | !check failed | -5
| 6 | -!NULL- | -6 6 | -!NULL- | -6
(6 rows) (6 rows)
SELECT 'seven' AS one, nextval('insert_seq'); SELECT 'seven' AS one, nextval('insert_seq');
@ -192,16 +192,16 @@ SELECT 'eight' AS one, currval('insert_seq');
-- constraint-condition results. Postgres used to reject this, but it -- constraint-condition results. Postgres used to reject this, but it
-- was wrong: -- was wrong:
INSERT INTO INSERT_TBL VALUES (null, null, null); INSERT INTO INSERT_TBL VALUES (null, null, null);
SELECT '' AS nine, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
nine | x | y | z x | y | z
------+---+---------------+---- ---+---------------+----
| 3 | Y | -3 3 | Y | -3
| 7 | -NULL- | -7 7 | -NULL- | -7
| 7 | !check failed | -7 7 | !check failed | -7
| 4 | -!NULL- | -4 4 | -!NULL- | -4
| 5 | !check failed | -5 5 | !check failed | -5
| 6 | -!NULL- | -6 6 | -!NULL- | -6
| | | | |
(7 rows) (7 rows)
-- --
@ -296,12 +296,12 @@ INSERT INTO tmp VALUES (null, 'Y', null);
INSERT INTO tmp VALUES (5, '!check failed', null); INSERT INTO tmp VALUES (5, '!check failed', null);
INSERT INTO tmp VALUES (null, 'try again', null); INSERT INTO tmp VALUES (null, 'try again', null);
INSERT INTO INSERT_TBL(y) select yd from tmp; INSERT INTO INSERT_TBL(y) select yd from tmp;
SELECT '' AS three, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
three | x | y | z x | y | z
-------+---+---------------+---- ---+---------------+----
| 4 | Y | -4 4 | Y | -4
| 5 | !check failed | -5 5 | !check failed | -5
| 6 | try again | -6 6 | try again | -6
(3 rows) (3 rows)
INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again';
@ -309,14 +309,14 @@ INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again';
ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_con" ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_con"
DETAIL: Failing row contains (8, try again, -8). DETAIL: Failing row contains (8, try again, -8).
SELECT '' AS four, * FROM INSERT_TBL; SELECT * FROM INSERT_TBL;
four | x | y | z x | y | z
------+---+---------------+---- ---+---------------+----
| 4 | Y | -4 4 | Y | -4
| 5 | !check failed | -5 5 | !check failed | -5
| 6 | try again | -6 6 | try again | -6
| | try again | | try again |
| 7 | try again | -7 7 | try again | -7
(5 rows) (5 rows)
DROP TABLE tmp; DROP TABLE tmp;
@ -347,11 +347,11 @@ CREATE TABLE COPY_TBL (x INT, y TEXT, z INT,
CONSTRAINT COPY_CON CONSTRAINT COPY_CON
CHECK (x > 3 AND y <> 'check failed' AND x < 7 )); CHECK (x > 3 AND y <> 'check failed' AND x < 7 ));
COPY COPY_TBL FROM '@abs_srcdir@/data/constro.data'; COPY COPY_TBL FROM '@abs_srcdir@/data/constro.data';
SELECT '' AS two, * FROM COPY_TBL; SELECT * FROM COPY_TBL;
two | x | y | z x | y | z
-----+---+---------------+--- ---+---------------+---
| 4 | !check failed | 5 4 | !check failed | 5
| 6 | OK | 4 6 | OK | 4
(2 rows) (2 rows)
COPY COPY_TBL FROM '@abs_srcdir@/data/constrf.data'; COPY COPY_TBL FROM '@abs_srcdir@/data/constrf.data';
@ -379,13 +379,13 @@ INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six'); INSERT INTO PRIMARY_TBL (t) VALUES ('six');
ERROR: null value in column "i" of relation "primary_tbl" violates not-null constraint ERROR: null value in column "i" of relation "primary_tbl" violates not-null constraint
DETAIL: Failing row contains (null, six). DETAIL: Failing row contains (null, six).
SELECT '' AS four, * FROM PRIMARY_TBL; SELECT * FROM PRIMARY_TBL;
four | i | t i | t
------+---+------- ---+-------
| 1 | one 1 | one
| 2 | two 2 | two
| 4 | three 4 | three
| 5 | one 5 | one
(4 rows) (4 rows)
DROP TABLE PRIMARY_TBL; DROP TABLE PRIMARY_TBL;
@ -399,14 +399,14 @@ INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six'); INSERT INTO PRIMARY_TBL (t) VALUES ('six');
ERROR: null value in column "i" of relation "primary_tbl" violates not-null constraint ERROR: null value in column "i" of relation "primary_tbl" violates not-null constraint
DETAIL: Failing row contains (null, six). DETAIL: Failing row contains (null, six).
SELECT '' AS three, * FROM PRIMARY_TBL; SELECT * FROM PRIMARY_TBL;
three | i | t i | t
-------+---+------- ---+-------
| 1 | one 1 | one
| 2 | two 2 | two
| 1 | three 1 | three
| 4 | three 4 | three
| 5 | one 5 | one
(5 rows) (5 rows)
DROP TABLE PRIMARY_TBL; DROP TABLE PRIMARY_TBL;
@ -429,16 +429,16 @@ INSERT INTO UNIQUE_TBL VALUES (6, 'six-upsert-insert') ON CONFLICT (i) DO UPDATE
INSERT INTO UNIQUE_TBL VALUES (1, 'a'), (2, 'b'), (2, 'b') ON CONFLICT (i) DO UPDATE SET t = 'fails'; INSERT INTO UNIQUE_TBL VALUES (1, 'a'), (2, 'b'), (2, 'b') ON CONFLICT (i) DO UPDATE SET t = 'fails';
ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time
HINT: Ensure that no rows proposed for insertion within the same command have duplicate constrained values. HINT: Ensure that no rows proposed for insertion within the same command have duplicate constrained values.
SELECT '' AS five, * FROM UNIQUE_TBL; SELECT * FROM UNIQUE_TBL;
five | i | t i | t
------+---+-------------------- ---+--------------------
| 1 | one 1 | one
| 2 | two 2 | two
| 4 | four 4 | four
| | six | six
| | seven | seven
| 5 | five-upsert-update 5 | five-upsert-update
| 6 | six-upsert-insert 6 | six-upsert-insert
(7 rows) (7 rows)
DROP TABLE UNIQUE_TBL; DROP TABLE UNIQUE_TBL;
@ -452,14 +452,14 @@ ERROR: duplicate key value violates unique constraint "unique_tbl_i_t_key"
DETAIL: Key (i, t)=(1, one) already exists. DETAIL: Key (i, t)=(1, one) already exists.
INSERT INTO UNIQUE_TBL VALUES (5, 'one'); INSERT INTO UNIQUE_TBL VALUES (5, 'one');
INSERT INTO UNIQUE_TBL (t) VALUES ('six'); INSERT INTO UNIQUE_TBL (t) VALUES ('six');
SELECT '' AS five, * FROM UNIQUE_TBL; SELECT * FROM UNIQUE_TBL;
five | i | t i | t
------+---+------- ---+-------
| 1 | one 1 | one
| 2 | two 2 | two
| 1 | three 1 | three
| 5 | one 5 | one
| | six | six
(5 rows) (5 rows)
DROP TABLE UNIQUE_TBL; DROP TABLE UNIQUE_TBL;

View File

@ -101,25 +101,25 @@ INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');
-- BOOLTBL1 should be full of true's at this point -- BOOLTBL1 should be full of true's at this point
SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1; SELECT BOOLTBL1.* FROM BOOLTBL1;
SELECT '' AS t_3, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 = bool 'true'; WHERE f1 = bool 'true';
SELECT '' AS t_3, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 <> bool 'false'; WHERE f1 <> bool 'false';
SELECT '' AS zero, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE booleq(bool 'false', f1); WHERE booleq(bool 'false', f1);
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f'); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
SELECT '' AS f_1, BOOLTBL1.* SELECT BOOLTBL1.*
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 = bool 'false'; WHERE f1 = bool 'false';
@ -140,25 +140,25 @@ INSERT INTO BOOLTBL2 (f1)
VALUES (bool 'XXX'); VALUES (bool 'XXX');
-- BOOLTBL2 should be full of false's at this point -- BOOLTBL2 should be full of false's at this point
SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2; SELECT BOOLTBL2.* FROM BOOLTBL2;
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE BOOLTBL2.f1 <> BOOLTBL1.f1; WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1); WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false'; WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.* SELECT BOOLTBL1.*, BOOLTBL2.*
FROM BOOLTBL1, BOOLTBL2 FROM BOOLTBL1, BOOLTBL2
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true' WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
ORDER BY BOOLTBL1.f1, BOOLTBL2.f1; ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
@ -169,35 +169,35 @@ SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
-- - thomas 2000-01-04 -- - thomas 2000-01-04
-- --
SELECT '' AS "True", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS TRUE; WHERE f1 IS TRUE;
SELECT '' AS "Not False", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS NOT FALSE; WHERE f1 IS NOT FALSE;
SELECT '' AS "False", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS FALSE; WHERE f1 IS FALSE;
SELECT '' AS "Not True", f1 SELECT f1
FROM BOOLTBL1 FROM BOOLTBL1
WHERE f1 IS NOT TRUE; WHERE f1 IS NOT TRUE;
SELECT '' AS "True", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS TRUE; WHERE f1 IS TRUE;
SELECT '' AS "Not False", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS NOT FALSE; WHERE f1 IS NOT FALSE;
SELECT '' AS "False", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS FALSE; WHERE f1 IS FALSE;
SELECT '' AS "Not True", f1 SELECT f1
FROM BOOLTBL2 FROM BOOLTBL2
WHERE f1 IS NOT TRUE; WHERE f1 IS NOT TRUE;

View File

@ -46,86 +46,86 @@ INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4) x');
INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad'); INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
SELECT '' AS four, * FROM BOX_TBL; SELECT * FROM BOX_TBL;
SELECT '' AS four, b.*, area(b.f1) as barea SELECT b.*, area(b.f1) as barea
FROM BOX_TBL b; FROM BOX_TBL b;
-- overlap -- overlap
SELECT '' AS three, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 && box '(2.5,2.5,1.0,1.0)'; WHERE b.f1 && box '(2.5,2.5,1.0,1.0)';
-- left-or-overlap (x only) -- left-or-overlap (x only)
SELECT '' AS two, b1.* SELECT b1.*
FROM BOX_TBL b1 FROM BOX_TBL b1
WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)'; WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)';
-- right-or-overlap (x only) -- right-or-overlap (x only)
SELECT '' AS two, b1.* SELECT b1.*
FROM BOX_TBL b1 FROM BOX_TBL b1
WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)'; WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)';
-- left of -- left of
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 << box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 << box '(3.0,3.0,5.0,5.0)';
-- area <= -- area <=
SELECT '' AS four, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)';
-- area < -- area <
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 < box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 < box '(3.0,3.0,5.0,5.0)';
-- area = -- area =
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 = box '(3.0,3.0,5.0,5.0)'; WHERE b.f1 = box '(3.0,3.0,5.0,5.0)';
-- area > -- area >
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b -- zero area FROM BOX_TBL b -- zero area
WHERE b.f1 > box '(3.5,3.0,4.5,3.0)'; WHERE b.f1 > box '(3.5,3.0,4.5,3.0)';
-- area >= -- area >=
SELECT '' AS four, b.f1 SELECT b.f1
FROM BOX_TBL b -- zero area FROM BOX_TBL b -- zero area
WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)'; WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)';
-- right of -- right of
SELECT '' AS two, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1; WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1;
-- contained in -- contained in
SELECT '' AS three, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE b.f1 <@ box '(0,0,3,3)'; WHERE b.f1 <@ box '(0,0,3,3)';
-- contains -- contains
SELECT '' AS three, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE box '(0,0,3,3)' @> b.f1; WHERE box '(0,0,3,3)' @> b.f1;
-- box equality -- box equality
SELECT '' AS one, b.f1 SELECT b.f1
FROM BOX_TBL b FROM BOX_TBL b
WHERE box '(1,1,3,3)' ~= b.f1; WHERE box '(1,1,3,3)' ~= b.f1;
-- center of box, left unary operator -- center of box, left unary operator
SELECT '' AS four, @@(b1.f1) AS p SELECT @@(b1.f1) AS p
FROM BOX_TBL b1; FROM BOX_TBL b1;
-- wholly-contained -- wholly-contained
SELECT '' AS one, b1.*, b2.* SELECT b1.*, b2.*
FROM BOX_TBL b1, BOX_TBL b2 FROM BOX_TBL b1, BOX_TBL b2
WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1; WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1;
SELECT '' AS four, height(f1), width(f1) FROM BOX_TBL; SELECT height(f1), width(f1) FROM BOX_TBL;
-- --
-- Test the SP-GiST index -- Test the SP-GiST index

View File

@ -78,19 +78,19 @@ SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
-- Examples of targets involving tables -- Examples of targets involving tables
-- --
SELECT '' AS "Five", SELECT
CASE CASE
WHEN i >= 3 THEN i WHEN i >= 3 THEN i
END AS ">= 3 or Null" END AS ">= 3 or Null"
FROM CASE_TBL; FROM CASE_TBL;
SELECT '' AS "Five", SELECT
CASE WHEN i >= 3 THEN (i + i) CASE WHEN i >= 3 THEN (i + i)
ELSE i ELSE i
END AS "Simplest Math" END AS "Simplest Math"
FROM CASE_TBL; FROM CASE_TBL;
SELECT '' AS "Five", i AS "Value", SELECT i AS "Value",
CASE WHEN (i < 0) THEN 'small' CASE WHEN (i < 0) THEN 'small'
WHEN (i = 0) THEN 'zero' WHEN (i = 0) THEN 'zero'
WHEN (i = 1) THEN 'one' WHEN (i = 1) THEN 'one'
@ -99,7 +99,7 @@ SELECT '' AS "Five", i AS "Value",
END AS "Category" END AS "Category"
FROM CASE_TBL; FROM CASE_TBL;
SELECT '' AS "Five", SELECT
CASE WHEN ((i < 0) or (i < 0)) THEN 'small' CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
WHEN ((i = 0) or (i = 0)) THEN 'zero' WHEN ((i = 0) or (i = 0)) THEN 'zero'
WHEN ((i = 1) or (i = 1)) THEN 'one' WHEN ((i = 1) or (i = 1)) THEN 'one'
@ -129,11 +129,11 @@ SELECT *
FROM CASE_TBL a, CASE2_TBL b FROM CASE_TBL a, CASE2_TBL b
WHERE COALESCE(a.f, b.i, b.j) = 2; WHERE COALESCE(a.f, b.i, b.j) = 2;
SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)", SELECT NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)",
NULLIF(b.i, 4) AS "NULLIF(b.i,4)" NULLIF(b.i, 4) AS "NULLIF(b.i,4)"
FROM CASE_TBL a, CASE2_TBL b; FROM CASE_TBL a, CASE2_TBL b;
SELECT '' AS "Two", * SELECT *
FROM CASE_TBL a, CASE2_TBL b FROM CASE_TBL a, CASE2_TBL b
WHERE COALESCE(f,b.i) = 2; WHERE COALESCE(f,b.i) = 2;

View File

@ -32,29 +32,29 @@ INSERT INTO CHAR_TBL (f1) VALUES ('cd');
INSERT INTO CHAR_TBL (f1) VALUES ('c '); INSERT INTO CHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
SELECT '' AS five, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
SELECT '' AS six, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
SELECT '' AS one, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
SELECT '' AS two, c.* SELECT c.*
FROM CHAR_TBL c FROM CHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
@ -72,4 +72,4 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
INSERT INTO CHAR_TBL (f1) VALUES ('abcd '); INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM CHAR_TBL; SELECT * FROM CHAR_TBL;

View File

@ -38,20 +38,20 @@ INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)');
SELECT * FROM CIRCLE_TBL; SELECT * FROM CIRCLE_TBL;
SELECT '' AS six, center(f1) AS center SELECT center(f1) AS center
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
SELECT '' AS six, radius(f1) AS radius SELECT radius(f1) AS radius
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
SELECT '' AS six, diameter(f1) AS diameter SELECT diameter(f1) AS diameter
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
SELECT '' AS two, f1 FROM CIRCLE_TBL WHERE radius(f1) < 5; SELECT f1 FROM CIRCLE_TBL WHERE radius(f1) < 5;
SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10; SELECT f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10;
SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance SELECT c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance
FROM CIRCLE_TBL c1, CIRCLE_TBL c2 FROM CIRCLE_TBL c1, CIRCLE_TBL c2
WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0) WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
ORDER BY distance, area(c1.f1), area(c2.f1); ORDER BY distance, area(c1.f1), area(c2.f1);

View File

@ -54,45 +54,45 @@ SELECT 'nan'::float4 / 'nan'::float4;
SELECT 'nan'::float4 / '0'::float4; SELECT 'nan'::float4 / '0'::float4;
SELECT 'nan'::numeric::float4; SELECT 'nan'::numeric::float4;
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f SELECT f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
-- test divide by zero -- test divide by zero
SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f; SELECT f.f1 / '0.0' from FLOAT4_TBL f;
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
-- test the unary float4abs operator -- test the unary float4abs operator
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f; SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
UPDATE FLOAT4_TBL UPDATE FLOAT4_TBL
SET f1 = FLOAT4_TBL.f1 * '-1' SET f1 = FLOAT4_TBL.f1 * '-1'
WHERE FLOAT4_TBL.f1 > '0.0'; WHERE FLOAT4_TBL.f1 > '0.0';
SELECT '' AS five, * FROM FLOAT4_TBL; SELECT * FROM FLOAT4_TBL;
-- test edge-case coercions to integer -- test edge-case coercions to integer
SELECT '32767.4'::float4::int2; SELECT '32767.4'::float4::int2;

View File

@ -47,49 +47,49 @@ SELECT 'nan'::float8 / 'nan'::float8;
SELECT 'nan'::float8 / '0'::float8; SELECT 'nan'::float8 / '0'::float8;
SELECT 'nan'::numeric::float8; SELECT 'nan'::numeric::float8;
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3';
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3';
SELECT '' AS three, f.f1, f.f1 * '-10' AS x SELECT f.f1, f.f1 * '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS three, f.f1, f.f1 + '-10' AS x SELECT f.f1, f.f1 + '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS three, f.f1, f.f1 / '-10' AS x SELECT f.f1, f.f1 / '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS three, f.f1, f.f1 - '-10' AS x SELECT f.f1, f.f1 - '-10' AS x
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
SELECT '' AS one, f.f1 ^ '2.0' AS square_f1 SELECT f.f1 ^ '2.0' AS square_f1
FROM FLOAT8_TBL f where f.f1 = '1004.3'; FROM FLOAT8_TBL f where f.f1 = '1004.3';
-- absolute value -- absolute value
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 SELECT f.f1, @f.f1 AS abs_f1
FROM FLOAT8_TBL f; FROM FLOAT8_TBL f;
-- truncate -- truncate
SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1 SELECT f.f1, trunc(f.f1) AS trunc_f1
FROM FLOAT8_TBL f; FROM FLOAT8_TBL f;
-- round -- round
SELECT '' AS five, f.f1, round(f.f1) AS round_f1 SELECT f.f1, round(f.f1) AS round_f1
FROM FLOAT8_TBL f; FROM FLOAT8_TBL f;
-- ceil / ceiling -- ceil / ceiling
@ -110,7 +110,7 @@ SELECT sqrt(float8 '64') AS eight;
SELECT |/ float8 '64' AS eight; SELECT |/ float8 '64' AS eight;
SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1 SELECT f.f1, |/f.f1 AS sqrt_f1
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
@ -153,7 +153,7 @@ SELECT power(float8 '-inf', float8 'inf');
SELECT power(float8 '-inf', float8 '-inf'); SELECT power(float8 '-inf', float8 '-inf');
-- take exp of ln(f.f1) -- take exp of ln(f.f1)
SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1 SELECT f.f1, exp(ln(f.f1)) AS exp_ln_f1
FROM FLOAT8_TBL f FROM FLOAT8_TBL f
WHERE f.f1 > '0.0'; WHERE f.f1 > '0.0';
@ -163,30 +163,30 @@ SELECT exp('inf'::float8), exp('-inf'::float8), exp('nan'::float8);
-- cube root -- cube root
SELECT ||/ float8 '27' AS three; SELECT ||/ float8 '27' AS three;
SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f; SELECT f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
UPDATE FLOAT8_TBL UPDATE FLOAT8_TBL
SET f1 = FLOAT8_TBL.f1 * '-1' SET f1 = FLOAT8_TBL.f1 * '-1'
WHERE FLOAT8_TBL.f1 > '0.0'; WHERE FLOAT8_TBL.f1 > '0.0';
SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f; SELECT f.f1 * '1e200' from FLOAT8_TBL f;
SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f; SELECT f.f1 ^ '1e200' from FLOAT8_TBL f;
SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5; SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ; SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ; SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ;
SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f; SELECT exp(f.f1) from FLOAT8_TBL f;
SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f; SELECT f.f1 / '0.0' from FLOAT8_TBL f;
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
-- hyperbolic functions -- hyperbolic functions
-- we run these with extra_float_digits = 0 too, since different platforms -- we run these with extra_float_digits = 0 too, since different platforms
@ -244,7 +244,7 @@ INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200');
INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
SELECT '' AS five, * FROM FLOAT8_TBL; SELECT * FROM FLOAT8_TBL;
-- test edge-case coercions to integer -- test edge-case coercions to integer
SELECT '32767.4'::float8::int2; SELECT '32767.4'::float8::int2;

View File

@ -10,39 +10,39 @@ SET extra_float_digits TO -3;
-- Points -- Points
-- --
SELECT '' AS four, center(f1) AS center SELECT center(f1) AS center
FROM BOX_TBL; FROM BOX_TBL;
SELECT '' AS four, (@@ f1) AS center SELECT (@@ f1) AS center
FROM BOX_TBL; FROM BOX_TBL;
SELECT '' AS six, point(f1) AS center SELECT point(f1) AS center
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
SELECT '' AS six, (@@ f1) AS center SELECT (@@ f1) AS center
FROM CIRCLE_TBL; FROM CIRCLE_TBL;
SELECT '' AS two, (@@ f1) AS center SELECT (@@ f1) AS center
FROM POLYGON_TBL FROM POLYGON_TBL
WHERE (# f1) > 2; WHERE (# f1) > 2;
-- "is horizontal" function -- "is horizontal" function
SELECT '' AS two, p1.f1 SELECT p1.f1
FROM POINT_TBL p1 FROM POINT_TBL p1
WHERE ishorizontal(p1.f1, point '(0,0)'); WHERE ishorizontal(p1.f1, point '(0,0)');
-- "is horizontal" operator -- "is horizontal" operator
SELECT '' AS two, p1.f1 SELECT p1.f1
FROM POINT_TBL p1 FROM POINT_TBL p1
WHERE p1.f1 ?- point '(0,0)'; WHERE p1.f1 ?- point '(0,0)';
-- "is vertical" function -- "is vertical" function
SELECT '' AS one, p1.f1 SELECT p1.f1
FROM POINT_TBL p1 FROM POINT_TBL p1
WHERE isvertical(p1.f1, point '(5.1,34.5)'); WHERE isvertical(p1.f1, point '(5.1,34.5)');
-- "is vertical" operator -- "is vertical" operator
SELECT '' AS one, p1.f1 SELECT p1.f1
FROM POINT_TBL p1 FROM POINT_TBL p1
WHERE p1.f1 ?| point '(5.1,34.5)'; WHERE p1.f1 ?| point '(5.1,34.5)';
@ -153,7 +153,7 @@ SELECT l.s, b.f1, l.s ## b.f1 FROM LINE_TBL l, BOX_TBL b;
-- --
-- intersection -- intersection
SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection SELECT p.f1, l.s, l.s # p.f1 AS intersection
FROM LSEG_TBL l, POINT_TBL p; FROM LSEG_TBL l, POINT_TBL p;
-- Length -- Length
@ -232,13 +232,13 @@ SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s <@ b.f1;
-- Boxes -- Boxes
-- --
SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL; SELECT box(f1) AS box FROM CIRCLE_TBL;
-- translation -- translation
SELECT '' AS twentyfour, b.f1 + p.f1 AS translation SELECT b.f1 + p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p; FROM BOX_TBL b, POINT_TBL p;
SELECT '' AS twentyfour, b.f1 - p.f1 AS translation SELECT b.f1 - p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p; FROM BOX_TBL b, POINT_TBL p;
-- Multiply with point -- Multiply with point
@ -335,22 +335,22 @@ SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM PATH_TBL p1, PATH_TBL p2;
-- --
-- containment -- containment
SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 @> p.f1 AS contains SELECT p.f1, poly.f1, poly.f1 @> p.f1 AS contains
FROM POLYGON_TBL poly, POINT_TBL p; FROM POLYGON_TBL poly, POINT_TBL p;
SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained SELECT p.f1, poly.f1, p.f1 <@ poly.f1 AS contained
FROM POLYGON_TBL poly, POINT_TBL p; FROM POLYGON_TBL poly, POINT_TBL p;
SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon SELECT npoints(f1) AS npoints, f1 AS polygon
FROM POLYGON_TBL; FROM POLYGON_TBL;
SELECT '' AS four, polygon(f1) SELECT polygon(f1)
FROM BOX_TBL; FROM BOX_TBL;
SELECT '' AS four, polygon(f1) SELECT polygon(f1)
FROM PATH_TBL WHERE isclosed(f1); FROM PATH_TBL WHERE isclosed(f1);
SELECT '' AS four, f1 AS open_path, polygon( pclose(f1)) AS polygon SELECT f1 AS open_path, polygon( pclose(f1)) AS polygon
FROM PATH_TBL FROM PATH_TBL
WHERE isopen(f1); WHERE isopen(f1);
@ -403,17 +403,17 @@ SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2;
-- Circles -- Circles
-- --
SELECT '' AS six, circle(f1, 50.0) SELECT circle(f1, 50.0)
FROM POINT_TBL; FROM POINT_TBL;
SELECT '' AS four, circle(f1) SELECT circle(f1)
FROM BOX_TBL; FROM BOX_TBL;
SELECT '' AS two, circle(f1) SELECT circle(f1)
FROM POLYGON_TBL FROM POLYGON_TBL
WHERE (# f1) >= 3; WHERE (# f1) >= 3;
SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance SELECT c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance
FROM CIRCLE_TBL c1, POINT_TBL p1 FROM CIRCLE_TBL c1, POINT_TBL p1
WHERE (p1.f1 <-> c1.f1) > 0 WHERE (p1.f1 <-> c1.f1) > 0
ORDER BY distance, area(c1.f1), p1.f1[0]; ORDER BY distance, area(c1.f1), p1.f1[0];

View File

@ -110,8 +110,8 @@ SELECT date '1994-01-01' + time '10:00' AS "Jan_01_1994_10am";
SELECT date '1994-01-01' + timetz '11:00-5' AS "Jan_01_1994_8am"; SELECT date '1994-01-01' + timetz '11:00-5' AS "Jan_01_1994_8am";
SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am"; SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am";
SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL; SELECT d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL;
SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL; SELECT d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
SELECT timestamp with time zone '1996-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp with time zone '1996-03-01' - interval '1 second' AS "Feb 29";
SELECT timestamp with time zone '1999-03-01' - interval '1 second' AS "Feb 28"; SELECT timestamp with time zone '1999-03-01' - interval '1 second' AS "Feb 28";
@ -139,8 +139,8 @@ SELECT timestamptz(date '1994-01-01', time with time zone '11:00-8') AS "Jan_01_
SELECT timestamptz(date '1994-01-01', time with time zone '10:00-8') AS "Jan_01_1994_10am"; SELECT timestamptz(date '1994-01-01', time with time zone '10:00-8') AS "Jan_01_1994_10am";
SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am"; SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am";
SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL; SELECT d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL; SELECT d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
-- --
-- time, interval arithmetic -- time, interval arithmetic
@ -247,26 +247,26 @@ INSERT INTO TEMP_TIMESTAMP (f1)
WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997' WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997'
OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010'; OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010';
SELECT '' AS "16", f1 AS "timestamp" SELECT f1 AS "timestamp"
FROM TEMP_TIMESTAMP FROM TEMP_TIMESTAMP
ORDER BY "timestamp"; ORDER BY "timestamp";
SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS "interval", d.f1 + t.f1 AS plus SELECT d.f1 AS "timestamp", t.f1 AS "interval", d.f1 + t.f1 AS plus
FROM TEMP_TIMESTAMP d, INTERVAL_TBL t FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
ORDER BY plus, "timestamp", "interval"; ORDER BY plus, "timestamp", "interval";
SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS "interval", d.f1 - t.f1 AS minus SELECT d.f1 AS "timestamp", t.f1 AS "interval", d.f1 - t.f1 AS minus
FROM TEMP_TIMESTAMP d, INTERVAL_TBL t FROM TEMP_TIMESTAMP d, INTERVAL_TBL t
WHERE isfinite(d.f1) WHERE isfinite(d.f1)
ORDER BY minus, "timestamp", "interval"; ORDER BY minus, "timestamp", "interval";
SELECT '' AS "16", d.f1 AS "timestamp", SELECT d.f1 AS "timestamp",
timestamp with time zone '1980-01-06 00:00 GMT' AS gpstime_zero, timestamp with time zone '1980-01-06 00:00 GMT' AS gpstime_zero,
d.f1 - timestamp with time zone '1980-01-06 00:00 GMT' AS difference d.f1 - timestamp with time zone '1980-01-06 00:00 GMT' AS difference
FROM TEMP_TIMESTAMP d FROM TEMP_TIMESTAMP d
ORDER BY difference; ORDER BY difference;
SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS difference SELECT d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS difference
FROM TEMP_TIMESTAMP d1, TEMP_TIMESTAMP d2 FROM TEMP_TIMESTAMP d1, TEMP_TIMESTAMP d2
ORDER BY timestamp1, timestamp2, difference; ORDER BY timestamp1, timestamp2, difference;
@ -274,7 +274,7 @@ SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS d
-- Conversions -- Conversions
-- --
SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date SELECT f1 AS "timestamp", date(f1) AS date
FROM TEMP_TIMESTAMP FROM TEMP_TIMESTAMP
WHERE f1 <> timestamp 'now' WHERE f1 <> timestamp 'now'
ORDER BY date, "timestamp"; ORDER BY date, "timestamp";
@ -314,17 +314,17 @@ SET DateStyle TO 'US,Postgres';
SHOW DateStyle; SHOW DateStyle;
SELECT '' AS "64", d1 AS us_postgres FROM TIMESTAMP_TBL; SELECT d1 AS us_postgres FROM TIMESTAMP_TBL;
SET DateStyle TO 'US,ISO'; SET DateStyle TO 'US,ISO';
SELECT '' AS "64", d1 AS us_iso FROM TIMESTAMP_TBL; SELECT d1 AS us_iso FROM TIMESTAMP_TBL;
SET DateStyle TO 'US,SQL'; SET DateStyle TO 'US,SQL';
SHOW DateStyle; SHOW DateStyle;
SELECT '' AS "64", d1 AS us_sql FROM TIMESTAMP_TBL; SELECT d1 AS us_sql FROM TIMESTAMP_TBL;
SET DateStyle TO 'European,Postgres'; SET DateStyle TO 'European,Postgres';
@ -334,19 +334,19 @@ INSERT INTO TIMESTAMP_TBL VALUES('13/06/1957');
SELECT count(*) as one FROM TIMESTAMP_TBL WHERE d1 = 'Jun 13 1957'; SELECT count(*) as one FROM TIMESTAMP_TBL WHERE d1 = 'Jun 13 1957';
SELECT '' AS "65", d1 AS european_postgres FROM TIMESTAMP_TBL; SELECT d1 AS european_postgres FROM TIMESTAMP_TBL;
SET DateStyle TO 'European,ISO'; SET DateStyle TO 'European,ISO';
SHOW DateStyle; SHOW DateStyle;
SELECT '' AS "65", d1 AS european_iso FROM TIMESTAMP_TBL; SELECT d1 AS european_iso FROM TIMESTAMP_TBL;
SET DateStyle TO 'European,SQL'; SET DateStyle TO 'European,SQL';
SHOW DateStyle; SHOW DateStyle;
SELECT '' AS "65", d1 AS european_sql FROM TIMESTAMP_TBL; SELECT d1 AS european_sql FROM TIMESTAMP_TBL;
RESET DateStyle; RESET DateStyle;

View File

@ -29,26 +29,26 @@ INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1.2.3.4');
-- check that CIDR rejects invalid input when converting from text: -- check that CIDR rejects invalid input when converting from text:
INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), '192.168.1.226'); INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), '192.168.1.226');
INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226'); INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226');
SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL; SELECT c AS cidr, i AS inet FROM INET_TBL;
-- now test some support functions -- now test some support functions
SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL; SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL;
SELECT '' AS ten, c AS cidr, broadcast(c), SELECT c AS cidr, broadcast(c),
i AS inet, broadcast(i) FROM INET_TBL; i AS inet, broadcast(i) FROM INET_TBL;
SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)", SELECT c AS cidr, network(c) AS "network(cidr)",
i AS inet, network(i) AS "network(inet)" FROM INET_TBL; i AS inet, network(i) AS "network(inet)" FROM INET_TBL;
SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)", SELECT c AS cidr, masklen(c) AS "masklen(cidr)",
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL; i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL;
SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)", SELECT c AS cidr, masklen(c) AS "masklen(cidr)",
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL
WHERE masklen(c) <= 8; WHERE masklen(c) <= 8;
SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL SELECT c AS cidr, i AS inet FROM INET_TBL
WHERE c = i; WHERE c = i;
SELECT '' AS ten, i, c, SELECT i, c,
i < c AS lt, i <= c AS le, i = c AS eq, i < c AS lt, i <= c AS le, i = c AS eq,
i >= c AS ge, i > c AS gt, i <> c AS ne, i >= c AS ge, i > c AS gt, i <> c AS ne,
i << c AS sb, i <<= c AS sbe, i << c AS sb, i <<= c AS sbe,
@ -60,7 +60,7 @@ SELECT max(i) AS max, min(i) AS min FROM INET_TBL;
SELECT max(c) AS max, min(c) AS min FROM INET_TBL; SELECT max(c) AS max, min(c) AS min FROM INET_TBL;
-- check the conversion to/from text and set_netmask -- check the conversion to/from text and set_netmask
SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL; SELECT set_masklen(inet(text(i)), 24) FROM INET_TBL;
-- check that btree index works correctly -- check that btree index works correctly
CREATE INDEX inet_idx1 ON inet_tbl(i); CREATE INDEX inet_idx1 ON inet_tbl(i);

View File

@ -27,62 +27,62 @@ INSERT INTO INT2_TBL(f1) VALUES ('123 dt');
INSERT INTO INT2_TBL(f1) VALUES (''); INSERT INTO INT2_TBL(f1) VALUES ('');
SELECT '' AS five, * FROM INT2_TBL; SELECT * FROM INT2_TBL;
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0';
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0';
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 = int2 '0';
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 = int4 '0';
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 < int2 '0';
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 < int4 '0';
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0';
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0';
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 > int2 '0';
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 > int4 '0';
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0';
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0';
-- positive odds -- positive odds
SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
-- any evens -- any evens
SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i SELECT i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i
WHERE abs(f1) < 16384; WHERE abs(f1) < 16384;
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i SELECT i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i
WHERE f1 < 32766; WHERE f1 < 32766;
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i SELECT i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i
WHERE f1 > -32767; WHERE f1 > -32767;
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i;
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i;
-- corner cases -- corner cases
SELECT (-1::int2<<15)::text; SELECT (-1::int2<<15)::text;

View File

@ -27,71 +27,71 @@ INSERT INTO INT4_TBL(f1) VALUES ('123 5');
INSERT INTO INT4_TBL(f1) VALUES (''); INSERT INTO INT4_TBL(f1) VALUES ('');
SELECT '' AS five, * FROM INT4_TBL; SELECT * FROM INT4_TBL;
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
-- positive odds -- positive odds
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
-- any evens -- any evens
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
WHERE abs(f1) < 1073741824; WHERE abs(f1) < 1073741824;
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
WHERE abs(f1) < 1073741824; WHERE abs(f1) < 1073741824;
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
WHERE f1 < 2147483646; WHERE f1 < 2147483646;
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
WHERE f1 < 2147483646; WHERE f1 < 2147483646;
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
WHERE f1 > -2147483647; WHERE f1 > -2147483647;
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
WHERE f1 > -2147483647; WHERE f1 > -2147483647;
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
-- --
-- more complex expressions -- more complex expressions

View File

@ -62,22 +62,22 @@ SELECT * FROM INT8_TBL WHERE '123'::int2 <= q1;
SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1; SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1;
SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL; SELECT q1 AS plus, -q1 AS minus FROM INT8_TBL;
SELECT '' AS five, q1, q2, q1 + q2 AS plus FROM INT8_TBL; SELECT q1, q2, q1 + q2 AS plus FROM INT8_TBL;
SELECT '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL; SELECT q1, q2, q1 - q2 AS minus FROM INT8_TBL;
SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL; SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL;
SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL
WHERE q1 < 1000 or (q2 > 0 and q2 < 1000); WHERE q1 < 1000 or (q2 > 0 and q2 < 1000);
SELECT '' AS five, q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL; SELECT q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL;
SELECT '' AS five, q1, float8(q1) FROM INT8_TBL; SELECT q1, float8(q1) FROM INT8_TBL;
SELECT '' AS five, q2, float8(q2) FROM INT8_TBL; SELECT q2, float8(q2) FROM INT8_TBL;
SELECT 37 + q1 AS plus4 FROM INT8_TBL; SELECT 37 + q1 AS plus4 FROM INT8_TBL;
SELECT 37 - q1 AS minus4 FROM INT8_TBL; SELECT 37 - q1 AS minus4 FROM INT8_TBL;
SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL; SELECT 2 * q1 AS "twice int4" FROM INT8_TBL;
SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL; SELECT q1 * 2 AS "twice int4" FROM INT8_TBL;
-- int8 op int4 -- int8 op int4
SELECT q1 + 42::int4 AS "8plus4", q1 - 42::int4 AS "8minus4", q1 * 42::int4 AS "8mul4", q1 / 42::int4 AS "8div4" FROM INT8_TBL; SELECT q1 + 42::int4 AS "8plus4", q1 - 42::int4 AS "8minus4", q1 * 42::int4 AS "8mul4", q1 / 42::int4 AS "8div4" FROM INT8_TBL;
@ -96,31 +96,31 @@ SELECT max(q1), max(q2) FROM INT8_TBL;
-- TO_CHAR() -- TO_CHAR()
-- --
SELECT '' AS to_char_1, to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999') SELECT to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999')
FROM INT8_TBL; FROM INT8_TBL;
SELECT '' AS to_char_2, to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999') SELECT to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999')
FROM INT8_TBL; FROM INT8_TBL;
SELECT '' AS to_char_3, to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR') SELECT to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR')
FROM INT8_TBL; FROM INT8_TBL;
SELECT '' AS to_char_4, to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999') SELECT to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999')
FROM INT8_TBL; FROM INT8_TBL;
SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
SELECT '' AS to_char_6, to_char(q2, 'FMS9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FMS9999999999999999') FROM INT8_TBL;
SELECT '' AS to_char_7, to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
SELECT '' AS to_char_8, to_char(q2, 'SG9999999999999999th') FROM INT8_TBL; SELECT to_char(q2, 'SG9999999999999999th') FROM INT8_TBL;
SELECT '' AS to_char_9, to_char(q2, '0999999999999999') FROM INT8_TBL; SELECT to_char(q2, '0999999999999999') FROM INT8_TBL;
SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'S0999999999999999') FROM INT8_TBL;
SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FM0999999999999999') FROM INT8_TBL;
SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; SELECT to_char(q2, 'L9999999999999999.000') FROM INT8_TBL;
SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL;
SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL; SELECT to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL;
SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; SELECT to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL;
SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL; SELECT to_char(q2, '999999SG9999999999') FROM INT8_TBL;
-- check min/max values and overflow behavior -- check min/max values and overflow behavior

View File

@ -34,27 +34,27 @@ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
-- test interval operators -- test interval operators
SELECT '' AS ten, * FROM INTERVAL_TBL; SELECT * FROM INTERVAL_TBL;
SELECT '' AS nine, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days'; WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
SELECT '' AS three, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours'; WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
SELECT '' AS three, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 < interval '@ 1 day'; WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
SELECT '' AS one, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 = interval '@ 34 years'; WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
SELECT '' AS five, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month'; WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
SELECT '' AS nine, * FROM INTERVAL_TBL SELECT * FROM INTERVAL_TBL
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago'; WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
SELECT '' AS fortyfive, r1.*, r2.* SELECT 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;
@ -127,7 +127,7 @@ DROP TABLE INTERVAL_MULDIV_TBL;
SET DATESTYLE = 'postgres'; SET DATESTYLE = 'postgres';
SET IntervalStyle to postgres_verbose; SET IntervalStyle to postgres_verbose;
SELECT '' AS ten, * FROM INTERVAL_TBL; SELECT * FROM INTERVAL_TBL;
-- test avg(interval), which is somewhat fragile since people have been -- test avg(interval), which is somewhat fragile since people have been
-- known to change the allowed input syntax for type interval without -- known to change the allowed input syntax for type interval without

View File

@ -49,22 +49,22 @@ analyze onerow;
-- before diving into more complex join syntax. -- before diving into more complex join syntax.
-- --
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL AS tx; FROM J1_TBL AS tx;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL tx; FROM J1_TBL tx;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL AS t1 (a, b, c); FROM J1_TBL AS t1 (a, b, c);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b, c); FROM J1_TBL t1 (a, b, c);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e); FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e);
SELECT '' AS "xxx", t1.a, t2.e SELECT t1.a, t2.e
FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e) FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e)
WHERE t1.a = t2.d; WHERE t1.a = t2.d;
@ -75,26 +75,26 @@ SELECT '' AS "xxx", t1.a, t2.e
-- which degenerate into a standard unqualified inner join. -- which degenerate into a standard unqualified inner join.
-- --
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL CROSS JOIN J2_TBL; FROM J1_TBL CROSS JOIN J2_TBL;
-- ambiguous column -- ambiguous column
SELECT '' AS "xxx", i, k, t SELECT i, k, t
FROM J1_TBL CROSS JOIN J2_TBL; FROM J1_TBL CROSS JOIN J2_TBL;
-- resolve previous ambiguity by specifying the table name -- resolve previous ambiguity by specifying the table name
SELECT '' AS "xxx", t1.i, k, t SELECT t1.i, k, t
FROM J1_TBL t1 CROSS JOIN J2_TBL t2; FROM J1_TBL t1 CROSS JOIN J2_TBL t2;
SELECT '' AS "xxx", ii, tt, kk SELECT ii, tt, kk
FROM (J1_TBL CROSS JOIN J2_TBL) FROM (J1_TBL CROSS JOIN J2_TBL)
AS tx (ii, jj, tt, ii2, kk); AS tx (ii, jj, tt, ii2, kk);
SELECT '' AS "xxx", tx.ii, tx.jj, tx.kk SELECT tx.ii, tx.jj, tx.kk
FROM (J1_TBL t1 (a, b, c) CROSS JOIN J2_TBL t2 (d, e)) FROM (J1_TBL t1 (a, b, c) CROSS JOIN J2_TBL t2 (d, e))
AS tx (ii, jj, tt, ii2, kk); AS tx (ii, jj, tt, ii2, kk);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL CROSS JOIN J2_TBL a CROSS JOIN J2_TBL b; FROM J1_TBL CROSS JOIN J2_TBL a CROSS JOIN J2_TBL b;
@ -111,18 +111,18 @@ SELECT '' AS "xxx", *
-- --
-- Inner equi-join on specified column -- Inner equi-join on specified column
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL INNER JOIN J2_TBL USING (i); FROM J1_TBL INNER JOIN J2_TBL USING (i);
-- Same as above, slightly different syntax -- Same as above, slightly different syntax
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL JOIN J2_TBL USING (i); FROM J1_TBL JOIN J2_TBL USING (i);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, d) USING (a) FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, d) USING (a)
ORDER BY a, d; ORDER BY a, d;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, b) USING (b) FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, b) USING (b)
ORDER BY b, t1.a; ORDER BY b, t1.a;
@ -132,18 +132,18 @@ SELECT '' AS "xxx", *
-- Inner equi-join on all columns with the same name -- Inner equi-join on all columns with the same name
-- --
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL NATURAL JOIN J2_TBL; FROM J1_TBL NATURAL JOIN J2_TBL;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (a, d); FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (a, d);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (d, a); FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (d, a);
-- mismatch number of columns -- mismatch number of columns
-- currently, Postgres will fill in with underlying names -- currently, Postgres will fill in with underlying names
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL t1 (a, b) NATURAL JOIN J2_TBL t2 (a); FROM J1_TBL t1 (a, b) NATURAL JOIN J2_TBL t2 (a);
@ -151,10 +151,10 @@ SELECT '' AS "xxx", *
-- Inner joins (equi-joins) -- Inner joins (equi-joins)
-- --
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.i); FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.i);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.k); FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.k);
@ -162,7 +162,7 @@ SELECT '' AS "xxx", *
-- Non-equi-joins -- Non-equi-joins
-- --
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i <= J2_TBL.k); FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i <= J2_TBL.k);
@ -171,32 +171,32 @@ SELECT '' AS "xxx", *
-- Note that OUTER is a noise word -- Note that OUTER is a noise word
-- --
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i) FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i)
ORDER BY i, k, t; ORDER BY i, k, t;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL LEFT JOIN J2_TBL USING (i) FROM J1_TBL LEFT JOIN J2_TBL USING (i)
ORDER BY i, k, t; ORDER BY i, k, t;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i); FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL RIGHT JOIN J2_TBL USING (i); FROM J1_TBL RIGHT JOIN J2_TBL USING (i);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL FULL OUTER JOIN J2_TBL USING (i) FROM J1_TBL FULL OUTER JOIN J2_TBL USING (i)
ORDER BY i, k, t; ORDER BY i, k, t;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL FULL JOIN J2_TBL USING (i) FROM J1_TBL FULL JOIN J2_TBL USING (i)
ORDER BY i, k, t; ORDER BY i, k, t;
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (k = 1); FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (k = 1);
SELECT '' AS "xxx", * SELECT *
FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (i = 1); FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (i = 1);
-- --

View File

@ -29,27 +29,27 @@ INSERT INTO NAME_TBL(f1) VALUES ('');
INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ');
SELECT '' AS seven, * FROM NAME_TBL; SELECT * FROM NAME_TBL;
SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*';
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]';
SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*';
DROP TABLE NAME_TBL; DROP TABLE NAME_TBL;

View File

@ -899,37 +899,37 @@ FROM generate_series(0, 110, 10) x;
-- --
-- TO_CHAR() -- TO_CHAR()
-- --
SELECT '' AS to_char_1, to_char(val, '9G999G999G999G999G999') SELECT to_char(val, '9G999G999G999G999G999')
FROM num_data; FROM num_data;
SELECT '' AS to_char_2, to_char(val, '9G999G999G999G999G999D999G999G999G999G999') SELECT to_char(val, '9G999G999G999G999G999D999G999G999G999G999')
FROM num_data; FROM num_data;
SELECT '' AS to_char_3, to_char(val, '9999999999999999.999999999999999PR') SELECT to_char(val, '9999999999999999.999999999999999PR')
FROM num_data; FROM num_data;
SELECT '' AS to_char_4, to_char(val, '9999999999999999.999999999999999S') SELECT to_char(val, '9999999999999999.999999999999999S')
FROM num_data; FROM num_data;
SELECT '' AS to_char_5, to_char(val, 'MI9999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'MI9999999999999999.999999999999999') FROM num_data;
SELECT '' AS to_char_6, to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data;
SELECT '' AS to_char_7, to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data; SELECT to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data;
SELECT '' AS to_char_8, to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data; SELECT to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data;
SELECT '' AS to_char_9, to_char(val, '0999999999999999.999999999999999') FROM num_data; SELECT to_char(val, '0999999999999999.999999999999999') FROM num_data;
SELECT '' AS to_char_10, to_char(val, 'S0999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'S0999999999999999.999999999999999') FROM num_data;
SELECT '' AS to_char_11, to_char(val, 'FM0999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FM0999999999999999.999999999999999') FROM num_data;
SELECT '' AS to_char_12, to_char(val, 'FM9999999999999999.099999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.099999999999999') FROM num_data;
SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999990999.990999999999999') FROM num_data;
SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999') FROM num_data; SELECT to_char(val, 'FM0999999999999999.999909999999999') FROM num_data;
SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999') FROM num_data; SELECT to_char(val, 'FM9999999990999999.099999999999999') FROM num_data;
SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999') FROM num_data; SELECT to_char(val, 'L9999999999999999.099999999999999') FROM num_data;
SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.99999999999999') FROM num_data;
SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; SELECT to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data;
SELECT '' AS to_char_19, to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; SELECT to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data;
SELECT '' AS to_char_20, to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; SELECT to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data;
SELECT '' AS to_char_21, to_char(val, '999999SG9999999999') FROM num_data; SELECT to_char(val, '999999SG9999999999') FROM num_data;
SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.999999999999999') FROM num_data;
SELECT '' AS to_char_23, to_char(val, '9.999EEEE') FROM num_data; SELECT to_char(val, '9.999EEEE') FROM num_data;
WITH v(val) AS WITH v(val) AS
(VALUES('0'::numeric),('-4.2'),('4.2e9'),('1.2e-5'),('inf'),('-inf'),('nan')) (VALUES('0'::numeric),('-4.2'),('4.2e9'),('1.2e-5'),('inf'),('-inf'),('nan'))
@ -955,47 +955,47 @@ SELECT val,
to_char(val::float4, 'MI99.99') as float4 to_char(val::float4, 'MI99.99') as float4
FROM v; FROM v;
SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9'); SELECT to_char('100'::numeric, 'FM999.9');
SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.'); SELECT to_char('100'::numeric, 'FM999.');
SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999'); SELECT to_char('100'::numeric, 'FM999');
-- Check parsing of literal text in a format string -- Check parsing of literal text in a format string
SELECT '' AS to_char_27, to_char('100'::numeric, 'foo999'); SELECT to_char('100'::numeric, 'foo999');
SELECT '' AS to_char_28, to_char('100'::numeric, 'f\oo999'); SELECT to_char('100'::numeric, 'f\oo999');
SELECT '' AS to_char_29, to_char('100'::numeric, 'f\\oo999'); SELECT to_char('100'::numeric, 'f\\oo999');
SELECT '' AS to_char_30, to_char('100'::numeric, 'f\"oo999'); SELECT to_char('100'::numeric, 'f\"oo999');
SELECT '' AS to_char_31, to_char('100'::numeric, 'f\\"oo999'); SELECT to_char('100'::numeric, 'f\\"oo999');
SELECT '' AS to_char_32, to_char('100'::numeric, 'f"ool"999'); SELECT to_char('100'::numeric, 'f"ool"999');
SELECT '' AS to_char_33, to_char('100'::numeric, 'f"\ool"999'); SELECT to_char('100'::numeric, 'f"\ool"999');
SELECT '' AS to_char_34, to_char('100'::numeric, 'f"\\ool"999'); SELECT to_char('100'::numeric, 'f"\\ool"999');
SELECT '' AS to_char_35, to_char('100'::numeric, 'f"ool\"999'); SELECT to_char('100'::numeric, 'f"ool\"999');
SELECT '' AS to_char_36, to_char('100'::numeric, 'f"ool\\"999'); SELECT to_char('100'::numeric, 'f"ool\\"999');
-- TO_NUMBER() -- TO_NUMBER()
-- --
SET lc_numeric = 'C'; SET lc_numeric = 'C';
SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); SELECT to_number('-34,338,492', '99G999G999');
SELECT '' AS to_number_2, to_number('-34,338,492.654,878', '99G999G999D999G999'); SELECT to_number('-34,338,492.654,878', '99G999G999D999G999');
SELECT '' AS to_number_3, to_number('<564646.654564>', '999999.999999PR'); SELECT to_number('<564646.654564>', '999999.999999PR');
SELECT '' AS to_number_4, to_number('0.00001-', '9.999999S'); SELECT to_number('0.00001-', '9.999999S');
SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999S'); SELECT to_number('5.01-', 'FM9.999999S');
SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999MI'); SELECT to_number('5.01-', 'FM9.999999MI');
SELECT '' AS to_number_7, to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9'); SELECT to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9');
SELECT '' AS to_number_8, to_number('.01', 'FM9.99'); SELECT to_number('.01', 'FM9.99');
SELECT '' AS to_number_9, to_number('.0', '99999999.99999999'); SELECT to_number('.0', '99999999.99999999');
SELECT '' AS to_number_10, to_number('0', '99.99'); SELECT to_number('0', '99.99');
SELECT '' AS to_number_11, to_number('.-01', 'S99.99'); SELECT to_number('.-01', 'S99.99');
SELECT '' AS to_number_12, to_number('.01-', '99.99S'); SELECT to_number('.01-', '99.99S');
SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S'); SELECT to_number(' . 0 1-', ' 9 9 . 9 9 S');
SELECT '' AS to_number_14, to_number('34,50','999,99'); SELECT to_number('34,50','999,99');
SELECT '' AS to_number_15, to_number('123,000','999G'); SELECT to_number('123,000','999G');
SELECT '' AS to_number_16, to_number('123456','999G999'); SELECT to_number('123456','999G999');
SELECT '' AS to_number_17, to_number('$1234.56','L9,999.99'); SELECT to_number('$1234.56','L9,999.99');
SELECT '' AS to_number_18, to_number('$1234.56','L99,999.99'); SELECT to_number('$1234.56','L99,999.99');
SELECT '' AS to_number_19, to_number('$1,234.56','L99,999.99'); SELECT to_number('$1,234.56','L99,999.99');
SELECT '' AS to_number_20, to_number('1234.56','L99,999.99'); SELECT to_number('1234.56','L99,999.99');
SELECT '' AS to_number_21, to_number('1,234.56','L99,999.99'); SELECT to_number('1,234.56','L99,999.99');
SELECT '' AS to_number_22, to_number('42nd', '99th'); SELECT to_number('42nd', '99th');
RESET lc_numeric; RESET lc_numeric;
-- --

View File

@ -17,7 +17,7 @@ INSERT INTO TEMP_FLOAT (f1)
INSERT INTO TEMP_FLOAT (f1) INSERT INTO TEMP_FLOAT (f1)
SELECT float8(f1) FROM INT2_TBL; SELECT float8(f1) FROM INT2_TBL;
SELECT '' AS ten, f1 FROM TEMP_FLOAT SELECT f1 FROM TEMP_FLOAT
ORDER BY f1; ORDER BY f1;
-- int4 -- int4
@ -31,7 +31,7 @@ INSERT INTO TEMP_INT4 (f1)
INSERT INTO TEMP_INT4 (f1) INSERT INTO TEMP_INT4 (f1)
SELECT int4(f1) FROM INT2_TBL; SELECT int4(f1) FROM INT2_TBL;
SELECT '' AS nine, f1 FROM TEMP_INT4 SELECT f1 FROM TEMP_INT4
ORDER BY f1; ORDER BY f1;
-- int2 -- int2
@ -46,7 +46,7 @@ INSERT INTO TEMP_INT2 (f1)
SELECT int2(f1) FROM INT4_TBL SELECT int2(f1) FROM INT4_TBL
WHERE (f1 >= -32767) AND (f1 <= 32767); WHERE (f1 >= -32767) AND (f1 <= 32767);
SELECT '' AS five, f1 FROM TEMP_INT2 SELECT f1 FROM TEMP_INT2
ORDER BY f1; ORDER BY f1;
-- --

View File

@ -26,18 +26,18 @@ INSERT INTO OID_TBL(f1) VALUES (' - 500');
INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935'); INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
SELECT '' AS six, * FROM OID_TBL; SELECT * FROM OID_TBL;
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234; SELECT o.* FROM OID_TBL o WHERE o.f1 = 1234;
SELECT '' AS five, o.* FROM OID_TBL o WHERE o.f1 <> '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 <> '1234';
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 <= '1234';
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 < '1234';
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 >= '1234';
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 > '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 > '1234';
DROP TABLE OID_TBL; DROP TABLE OID_TBL;

View File

@ -35,10 +35,10 @@ INSERT INTO PATH_TBL VALUES ('(1,2,3,4');
INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]');
SELECT '' AS count, f1 AS open_path FROM PATH_TBL WHERE isopen(f1); SELECT f1 AS open_path FROM PATH_TBL WHERE isopen(f1);
SELECT '' AS count, f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1); SELECT f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1);
SELECT '' AS count, pclose(f1) AS closed_path FROM PATH_TBL; SELECT pclose(f1) AS closed_path FROM PATH_TBL;
SELECT '' AS count, popen(f1) AS open_path FROM PATH_TBL; SELECT popen(f1) AS open_path FROM PATH_TBL;

View File

@ -39,59 +39,59 @@ INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0');
INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); -- Out of range INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); -- Out of range
SELECT '' AS six, * FROM POINT_TBL; SELECT * FROM POINT_TBL;
-- left of -- left of
SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)';
-- right of -- right of
SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1; SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1;
-- above -- above
SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1; SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1;
-- below -- below
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)';
-- equal -- equal
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
-- point in box -- point in box
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE p.f1 <@ box '(0,0,100,100)'; WHERE p.f1 <@ box '(0,0,100,100)';
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE box '(0,0,100,100)' @> p.f1; WHERE box '(0,0,100,100)' @> p.f1;
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE not p.f1 <@ box '(0,0,100,100)'; WHERE not p.f1 <@ box '(0,0,100,100)';
SELECT '' AS two, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]'; WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]';
SELECT '' AS three, p.* FROM POINT_TBL p SELECT p.* FROM POINT_TBL p
WHERE not box '(0,0,100,100)' @> p.f1; WHERE not box '(0,0,100,100)' @> p.f1;
SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist SELECT p.f1, p.f1 <-> point '(0,0)' AS dist
FROM POINT_TBL p FROM POINT_TBL p
ORDER BY dist; ORDER BY dist;
SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist SELECT p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
ORDER BY dist, p1.f1[0], p2.f1[0]; ORDER BY dist, p1.f1[0], p2.f1[0];
SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 SELECT p1.f1 AS point1, p2.f1 AS point2
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3; WHERE (p1.f1 <-> p2.f1) > 3;
-- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance SELECT p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
ORDER BY distance, p1.f1[0], p2.f1[0]; ORDER BY distance, p1.f1[0], p2.f1[0];
-- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance SELECT p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 |>> p2.f1 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 |>> p2.f1
ORDER BY distance; ORDER BY distance;

View File

@ -32,7 +32,7 @@ INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
INSERT INTO POLYGON_TBL(f1) VALUES ('asdf'); INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
SELECT '' AS four, * FROM POLYGON_TBL; SELECT * FROM POLYGON_TBL;
-- --
-- Test the SP-GiST index -- Test the SP-GiST index

View File

@ -40,42 +40,42 @@ INSERT INTO SUBSELECT_TBL VALUES (3, 3, 3);
INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8); INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8);
INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL); INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL);
SELECT '' AS eight, * FROM SUBSELECT_TBL; SELECT * FROM SUBSELECT_TBL;
-- Uncorrelated subselects -- Uncorrelated subselects
SELECT '' AS two, f1 AS "Constant Select" FROM SUBSELECT_TBL SELECT f1 AS "Constant Select" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT 1); WHERE f1 IN (SELECT 1);
SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL SELECT f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL);
SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL SELECT f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE
f2 IN (SELECT f1 FROM SUBSELECT_TBL)); f2 IN (SELECT f1 FROM SUBSELECT_TBL));
SELECT '' AS three, f1, f2 SELECT f1, f2
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
WHERE f3 IS NOT NULL); WHERE f3 IS NOT NULL);
-- Correlated subselects -- Correlated subselects
SELECT '' AS six, f1 AS "Correlated Field", f2 AS "Second Field" SELECT f1 AS "Correlated Field", f2 AS "Second Field"
FROM SUBSELECT_TBL upper FROM SUBSELECT_TBL upper
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f1 = upper.f1); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f1 = upper.f1);
SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" SELECT f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL upper FROM SUBSELECT_TBL upper
WHERE f1 IN WHERE f1 IN
(SELECT f2 FROM SUBSELECT_TBL WHERE CAST(upper.f2 AS float) = f3); (SELECT f2 FROM SUBSELECT_TBL WHERE CAST(upper.f2 AS float) = f3);
SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" SELECT f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL upper FROM SUBSELECT_TBL upper
WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL
WHERE f2 = CAST(f3 AS integer)); WHERE f2 = CAST(f3 AS integer));
SELECT '' AS five, f1 AS "Correlated Field" SELECT f1 AS "Correlated Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
WHERE f3 IS NOT NULL); WHERE f3 IS NOT NULL);
@ -84,7 +84,7 @@ SELECT '' AS five, f1 AS "Correlated Field"
-- Use some existing tables in the regression test -- Use some existing tables in the regression test
-- --
SELECT '' AS eight, ss.f1 AS "Correlated Field", ss.f3 AS "Second Field" SELECT ss.f1 AS "Correlated Field", ss.f3 AS "Second Field"
FROM SUBSELECT_TBL ss FROM SUBSELECT_TBL ss
WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL
WHERE f1 != ss.f1 AND f1 < 2147483647); WHERE f1 != ss.f1 AND f1 < 2147483647);

View File

@ -11,7 +11,7 @@ CREATE TABLE TEXT_TBL (f1 text);
INSERT INTO TEXT_TBL VALUES ('doh!'); INSERT INTO TEXT_TBL VALUES ('doh!');
INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor'); INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor');
SELECT '' AS two, * FROM TEXT_TBL; SELECT * FROM TEXT_TBL;
-- As of 8.3 we have removed most implicit casts to text, so that for example -- As of 8.3 we have removed most implicit casts to text, so that for example
-- this no longer works: -- this no longer works:

View File

@ -135,7 +135,7 @@ INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2001');
INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097');
INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
SELECT '' AS "64", d1 FROM TIMESTAMP_TBL; SELECT d1 FROM TIMESTAMP_TBL;
-- Check behavior at the lower boundary of the timestamp range -- Check behavior at the lower boundary of the timestamp range
SELECT '4714-11-24 00:00:00 BC'::timestamp; SELECT '4714-11-24 00:00:00 BC'::timestamp;
@ -143,31 +143,31 @@ SELECT '4714-11-23 23:59:59 BC'::timestamp; -- out of range
-- The upper boundary differs between integer and float timestamps, so no check -- The upper boundary differs between integer and float timestamps, so no check
-- Demonstrate functions and operators -- Demonstrate functions and operators
SELECT '' AS "48", d1 FROM TIMESTAMP_TBL SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 > timestamp without time zone '1997-01-02'; WHERE d1 > timestamp without time zone '1997-01-02';
SELECT '' AS "15", d1 FROM TIMESTAMP_TBL SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 < timestamp without time zone '1997-01-02'; WHERE d1 < timestamp without time zone '1997-01-02';
SELECT '' AS one, d1 FROM TIMESTAMP_TBL SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 = timestamp without time zone '1997-01-02'; WHERE d1 = timestamp without time zone '1997-01-02';
SELECT '' AS "63", d1 FROM TIMESTAMP_TBL SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 != timestamp without time zone '1997-01-02'; WHERE d1 != timestamp without time zone '1997-01-02';
SELECT '' AS "16", d1 FROM TIMESTAMP_TBL SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 <= timestamp without time zone '1997-01-02'; WHERE d1 <= timestamp without time zone '1997-01-02';
SELECT '' AS "49", d1 FROM TIMESTAMP_TBL SELECT d1 FROM TIMESTAMP_TBL
WHERE d1 >= timestamp without time zone '1997-01-02'; WHERE d1 >= timestamp without time zone '1997-01-02';
SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff SELECT d1 - timestamp without time zone '1997-01-02' AS diff
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01'; FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc; SELECT date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc;
-- Test casting within a BETWEEN qualifier -- Test casting within a BETWEEN qualifier
SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff SELECT d1 - timestamp without time zone '1997-01-02' AS diff
FROM TIMESTAMP_TBL FROM TIMESTAMP_TBL
WHERE d1 BETWEEN timestamp without time zone '1902-01-01' WHERE d1 BETWEEN timestamp without time zone '1902-01-01'
AND timestamp without time zone '2038-01-01'; AND timestamp without time zone '2038-01-01';
@ -198,40 +198,40 @@ SELECT d1 as "timestamp",
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
-- TO_CHAR() -- TO_CHAR()
SELECT '' AS to_char_1, to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_2, to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM') SELECT to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_3, to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J') SELECT to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_4, to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ') SELECT to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') SELECT to_char(d1, 'HH HH12 HH24 MI SS SSSS')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') SELECT to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') SELECT to_char(d1, 'HH24--text--MI--text--SS')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth') SELECT to_char(d1, 'YYYYTH YYYYth Jth')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm') SELECT to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_10, to_char(d1, 'IYYY IYY IY I IW IDDD ID') SELECT to_char(d1, 'IYYY IYY IY I IW IDDD ID')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_11, to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID') SELECT to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID')
FROM TIMESTAMP_TBL; FROM TIMESTAMP_TBL;
SELECT '' AS to_char_12, to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US') SELECT to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US')
FROM (VALUES FROM (VALUES
('2018-11-02 12:34:56'::timestamp), ('2018-11-02 12:34:56'::timestamp),
('2018-11-02 12:34:56.78'), ('2018-11-02 12:34:56.78'),

View File

@ -156,7 +156,7 @@ SELECT 'Wed Jul 11 10:51:14 GMT+4 2001'::timestamptz;
SELECT 'Wed Jul 11 10:51:14 PST-03:00 2001'::timestamptz; SELECT 'Wed Jul 11 10:51:14 PST-03:00 2001'::timestamptz;
SELECT 'Wed Jul 11 10:51:14 PST+03:00 2001'::timestamptz; SELECT 'Wed Jul 11 10:51:14 PST+03:00 2001'::timestamptz;
SELECT '' AS "64", d1 FROM TIMESTAMPTZ_TBL; SELECT d1 FROM TIMESTAMPTZ_TBL;
-- Check behavior at the lower boundary of the timestamp range -- Check behavior at the lower boundary of the timestamp range
SELECT '4714-11-24 00:00:00+00 BC'::timestamptz; SELECT '4714-11-24 00:00:00+00 BC'::timestamptz;
@ -166,35 +166,35 @@ SELECT '4714-11-23 23:59:59+00 BC'::timestamptz; -- out of range
-- The upper boundary differs between integer and float timestamps, so no check -- The upper boundary differs between integer and float timestamps, so no check
-- Demonstrate functions and operators -- Demonstrate functions and operators
SELECT '' AS "48", d1 FROM TIMESTAMPTZ_TBL SELECT d1 FROM TIMESTAMPTZ_TBL
WHERE d1 > timestamp with time zone '1997-01-02'; WHERE d1 > timestamp with time zone '1997-01-02';
SELECT '' AS "15", d1 FROM TIMESTAMPTZ_TBL SELECT d1 FROM TIMESTAMPTZ_TBL
WHERE d1 < timestamp with time zone '1997-01-02'; WHERE d1 < timestamp with time zone '1997-01-02';
SELECT '' AS one, d1 FROM TIMESTAMPTZ_TBL SELECT d1 FROM TIMESTAMPTZ_TBL
WHERE d1 = timestamp with time zone '1997-01-02'; WHERE d1 = timestamp with time zone '1997-01-02';
SELECT '' AS "63", d1 FROM TIMESTAMPTZ_TBL SELECT d1 FROM TIMESTAMPTZ_TBL
WHERE d1 != timestamp with time zone '1997-01-02'; WHERE d1 != timestamp with time zone '1997-01-02';
SELECT '' AS "16", d1 FROM TIMESTAMPTZ_TBL SELECT d1 FROM TIMESTAMPTZ_TBL
WHERE d1 <= timestamp with time zone '1997-01-02'; WHERE d1 <= timestamp with time zone '1997-01-02';
SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL SELECT d1 FROM TIMESTAMPTZ_TBL
WHERE d1 >= timestamp with time zone '1997-01-02'; WHERE d1 >= timestamp with time zone '1997-01-02';
SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff SELECT d1 - timestamp with time zone '1997-01-02' AS diff
FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01'; FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp with time zone '2004-02-29 15:44:17.71393' ) AS week_trunc; SELECT date_trunc( 'week', timestamp with time zone '2004-02-29 15:44:17.71393' ) AS week_trunc;
SELECT '' AS date_trunc_at_tz, date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'Australia/Sydney') as sydney_trunc; -- zone name SELECT date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'Australia/Sydney') as sydney_trunc; -- zone name
SELECT '' AS date_trunc_at_tz, date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'GMT') as gmt_trunc; -- fixed-offset abbreviation SELECT date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'GMT') as gmt_trunc; -- fixed-offset abbreviation
SELECT '' AS date_trunc_at_tz, date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'VET') as vet_trunc; -- variable-offset abbreviation SELECT date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'VET') as vet_trunc; -- variable-offset abbreviation
-- Test casting within a BETWEEN qualifier -- Test casting within a BETWEEN qualifier
SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff SELECT d1 - timestamp with time zone '1997-01-02' AS diff
FROM TIMESTAMPTZ_TBL FROM TIMESTAMPTZ_TBL
WHERE d1 BETWEEN timestamp with time zone '1902-01-01' AND timestamp with time zone '2038-01-01'; WHERE d1 BETWEEN timestamp with time zone '1902-01-01' AND timestamp with time zone '2038-01-01';
@ -230,40 +230,40 @@ SELECT d1 as timestamptz,
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
-- TO_CHAR() -- TO_CHAR()
SELECT '' AS to_char_1, to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_2, to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM') SELECT to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_3, to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J') SELECT to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_4, to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ') SELECT to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') SELECT to_char(d1, 'HH HH12 HH24 MI SS SSSS')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') SELECT to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') SELECT to_char(d1, 'HH24--text--MI--text--SS')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth') SELECT to_char(d1, 'YYYYTH YYYYth Jth')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm') SELECT to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_10, to_char(d1, 'IYYY IYY IY I IW IDDD ID') SELECT to_char(d1, 'IYYY IYY IY I IW IDDD ID')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_11, to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID') SELECT to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID')
FROM TIMESTAMPTZ_TBL; FROM TIMESTAMPTZ_TBL;
SELECT '' AS to_char_12, to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US') SELECT to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US')
FROM (VALUES FROM (VALUES
('2018-11-02 12:34:56'::timestamptz), ('2018-11-02 12:34:56'::timestamptz),
('2018-11-02 12:34:56.78'), ('2018-11-02 12:34:56.78'),

View File

@ -23,29 +23,29 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
INSERT INTO VARCHAR_TBL (f1) VALUES ('c '); INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <> 'a'; WHERE c.f1 <> 'a';
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 = 'a'; WHERE c.f1 = 'a';
SELECT '' AS five, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 < 'a'; WHERE c.f1 < 'a';
SELECT '' AS six, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 <= 'a'; WHERE c.f1 <= 'a';
SELECT '' AS one, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 > 'a'; WHERE c.f1 > 'a';
SELECT '' AS two, c.* SELECT c.*
FROM VARCHAR_TBL c FROM VARCHAR_TBL c
WHERE c.f1 >= 'a'; WHERE c.f1 >= 'a';
@ -63,4 +63,4 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd '); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM VARCHAR_TBL; SELECT * FROM VARCHAR_TBL;