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:
parent
b3817f5f77
commit
c06d6aa4c3
|
@ -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');
|
||||
-- BOOLTBL1 should be full of true's at this point
|
||||
SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1;
|
||||
t_3 | f1
|
||||
-----+----
|
||||
| t
|
||||
| t
|
||||
| t
|
||||
SELECT BOOLTBL1.* FROM BOOLTBL1;
|
||||
f1
|
||||
----
|
||||
t
|
||||
t
|
||||
t
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS t_3, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 = bool 'true';
|
||||
t_3 | f1
|
||||
-----+----
|
||||
| t
|
||||
| t
|
||||
| t
|
||||
f1
|
||||
----
|
||||
t
|
||||
t
|
||||
t
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS t_3, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 <> bool 'false';
|
||||
t_3 | f1
|
||||
-----+----
|
||||
| t
|
||||
| t
|
||||
| t
|
||||
f1
|
||||
----
|
||||
t
|
||||
t
|
||||
t
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS zero, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE booleq(bool 'false', f1);
|
||||
zero | f1
|
||||
------+----
|
||||
f1
|
||||
----
|
||||
(0 rows)
|
||||
|
||||
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
|
||||
SELECT '' AS f_1, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 = bool 'false';
|
||||
f_1 | f1
|
||||
-----+----
|
||||
| f
|
||||
f1
|
||||
----
|
||||
f
|
||||
(1 row)
|
||||
|
||||
CREATE TABLE BOOLTBL2 (f1 bool);
|
||||
|
@ -283,86 +283,86 @@ ERROR: invalid input syntax for type boolean: "XXX"
|
|||
LINE 2: VALUES (bool 'XXX');
|
||||
^
|
||||
-- BOOLTBL2 should be full of false's at this point
|
||||
SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2;
|
||||
f_4 | f1
|
||||
-----+----
|
||||
| f
|
||||
| f
|
||||
| f
|
||||
| f
|
||||
SELECT BOOLTBL2.* FROM BOOLTBL2;
|
||||
f1
|
||||
----
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
|
||||
tf_12 | 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
|
||||
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
|
||||
(12 rows)
|
||||
|
||||
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
|
||||
tf_12 | 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
|
||||
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
|
||||
(12 rows)
|
||||
|
||||
SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
|
||||
ff_4 | f1 | f1
|
||||
------+----+----
|
||||
| f | f
|
||||
| f | f
|
||||
| f | f
|
||||
| f | f
|
||||
f1 | f1
|
||||
----+----
|
||||
f | f
|
||||
f | f
|
||||
f | f
|
||||
f | f
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
|
||||
ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
|
||||
tf_12_ff_4 | f1 | f1
|
||||
------------+----+----
|
||||
| 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
|
||||
f1 | f1
|
||||
----+----
|
||||
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
|
||||
(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
|
||||
-- - thomas 2000-01-04
|
||||
--
|
||||
SELECT '' AS "True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS TRUE;
|
||||
True | f1
|
||||
------+----
|
||||
| t
|
||||
| t
|
||||
| t
|
||||
f1
|
||||
----
|
||||
t
|
||||
t
|
||||
t
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS "Not False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS NOT FALSE;
|
||||
Not False | f1
|
||||
-----------+----
|
||||
| t
|
||||
| t
|
||||
| t
|
||||
f1
|
||||
----
|
||||
t
|
||||
t
|
||||
t
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS "False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS FALSE;
|
||||
False | f1
|
||||
-------+----
|
||||
| f
|
||||
f1
|
||||
----
|
||||
f
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS "Not True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS NOT TRUE;
|
||||
Not True | f1
|
||||
----------+----
|
||||
| f
|
||||
f1
|
||||
----
|
||||
f
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS "True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS TRUE;
|
||||
True | f1
|
||||
------+----
|
||||
f1
|
||||
----
|
||||
(0 rows)
|
||||
|
||||
SELECT '' AS "Not False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS NOT FALSE;
|
||||
Not False | f1
|
||||
-----------+----
|
||||
f1
|
||||
----
|
||||
(0 rows)
|
||||
|
||||
SELECT '' AS "False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS FALSE;
|
||||
False | f1
|
||||
-------+----
|
||||
| f
|
||||
| f
|
||||
| f
|
||||
| f
|
||||
f1
|
||||
----
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS "Not True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS NOT TRUE;
|
||||
Not True | f1
|
||||
----------+----
|
||||
| f
|
||||
| f
|
||||
| f
|
||||
| f
|
||||
f1
|
||||
----
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
(4 rows)
|
||||
|
||||
--
|
||||
|
|
|
@ -44,197 +44,197 @@ INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
|
|||
ERROR: invalid input syntax for type box: "asdfasdf(ad"
|
||||
LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
|
||||
^
|
||||
SELECT '' AS four, * FROM BOX_TBL;
|
||||
four | f1
|
||||
------+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (-2,2),(-8,-10)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
| (3,3),(3,3)
|
||||
SELECT * FROM BOX_TBL;
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(-2,2),(-8,-10)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3,3),(3,3)
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS four, b.*, area(b.f1) as barea
|
||||
SELECT b.*, area(b.f1) as barea
|
||||
FROM BOX_TBL b;
|
||||
four | f1 | barea
|
||||
------+---------------------+-------
|
||||
| (2,2),(0,0) | 4
|
||||
| (3,3),(1,1) | 4
|
||||
| (-2,2),(-8,-10) | 72
|
||||
| (2.5,3.5),(2.5,2.5) | 0
|
||||
| (3,3),(3,3) | 0
|
||||
f1 | barea
|
||||
---------------------+-------
|
||||
(2,2),(0,0) | 4
|
||||
(3,3),(1,1) | 4
|
||||
(-2,2),(-8,-10) | 72
|
||||
(2.5,3.5),(2.5,2.5) | 0
|
||||
(3,3),(3,3) | 0
|
||||
(5 rows)
|
||||
|
||||
-- overlap
|
||||
SELECT '' AS three, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 && box '(2.5,2.5,1.0,1.0)';
|
||||
three | f1
|
||||
-------+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3 rows)
|
||||
|
||||
-- left-or-overlap (x only)
|
||||
SELECT '' AS two, b1.*
|
||||
SELECT b1.*
|
||||
FROM BOX_TBL b1
|
||||
WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)';
|
||||
two | f1
|
||||
-----+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (-2,2),(-8,-10)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(-2,2),(-8,-10)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3 rows)
|
||||
|
||||
-- right-or-overlap (x only)
|
||||
SELECT '' AS two, b1.*
|
||||
SELECT b1.*
|
||||
FROM BOX_TBL b1
|
||||
WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)';
|
||||
two | f1
|
||||
-----+---------------------
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
| (3,3),(3,3)
|
||||
f1
|
||||
---------------------
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3,3),(3,3)
|
||||
(2 rows)
|
||||
|
||||
-- left of
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 << box '(3.0,3.0,5.0,5.0)';
|
||||
two | f1
|
||||
-----+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (-2,2),(-8,-10)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(-2,2),(-8,-10)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3 rows)
|
||||
|
||||
-- area <=
|
||||
SELECT '' AS four, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)';
|
||||
four | f1
|
||||
------+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
| (3,3),(3,3)
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3,3),(3,3)
|
||||
(4 rows)
|
||||
|
||||
-- area <
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 < box '(3.0,3.0,5.0,5.0)';
|
||||
two | f1
|
||||
-----+---------------------
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
| (3,3),(3,3)
|
||||
f1
|
||||
---------------------
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3,3),(3,3)
|
||||
(2 rows)
|
||||
|
||||
-- area =
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 = box '(3.0,3.0,5.0,5.0)';
|
||||
two | f1
|
||||
-----+-------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
f1
|
||||
-------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(2 rows)
|
||||
|
||||
-- area >
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b -- zero area
|
||||
WHERE b.f1 > box '(3.5,3.0,4.5,3.0)';
|
||||
two | f1
|
||||
-----+-----------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (-2,2),(-8,-10)
|
||||
f1
|
||||
-----------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(-2,2),(-8,-10)
|
||||
(3 rows)
|
||||
|
||||
-- area >=
|
||||
SELECT '' AS four, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b -- zero area
|
||||
WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)';
|
||||
four | f1
|
||||
------+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (-2,2),(-8,-10)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
| (3,3),(3,3)
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(-2,2),(-8,-10)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3,3),(3,3)
|
||||
(5 rows)
|
||||
|
||||
-- right of
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1;
|
||||
two | f1
|
||||
-----+---------------------
|
||||
| (2,2),(0,0)
|
||||
| (-2,2),(-8,-10)
|
||||
| (2.5,3.5),(2.5,2.5)
|
||||
f1
|
||||
---------------------
|
||||
(2,2),(0,0)
|
||||
(-2,2),(-8,-10)
|
||||
(2.5,3.5),(2.5,2.5)
|
||||
(3 rows)
|
||||
|
||||
-- contained in
|
||||
SELECT '' AS three, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 <@ box '(0,0,3,3)';
|
||||
three | f1
|
||||
-------+-------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (3,3),(3,3)
|
||||
f1
|
||||
-------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(3,3),(3,3)
|
||||
(3 rows)
|
||||
|
||||
-- contains
|
||||
SELECT '' AS three, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE box '(0,0,3,3)' @> b.f1;
|
||||
three | f1
|
||||
-------+-------------
|
||||
| (2,2),(0,0)
|
||||
| (3,3),(1,1)
|
||||
| (3,3),(3,3)
|
||||
f1
|
||||
-------------
|
||||
(2,2),(0,0)
|
||||
(3,3),(1,1)
|
||||
(3,3),(3,3)
|
||||
(3 rows)
|
||||
|
||||
-- box equality
|
||||
SELECT '' AS one, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE box '(1,1,3,3)' ~= b.f1;
|
||||
one | f1
|
||||
-----+-------------
|
||||
| (3,3),(1,1)
|
||||
f1
|
||||
-------------
|
||||
(3,3),(1,1)
|
||||
(1 row)
|
||||
|
||||
-- center of box, left unary operator
|
||||
SELECT '' AS four, @@(b1.f1) AS p
|
||||
SELECT @@(b1.f1) AS p
|
||||
FROM BOX_TBL b1;
|
||||
four | p
|
||||
------+---------
|
||||
| (1,1)
|
||||
| (2,2)
|
||||
| (-5,-4)
|
||||
| (2.5,3)
|
||||
| (3,3)
|
||||
p
|
||||
---------
|
||||
(1,1)
|
||||
(2,2)
|
||||
(-5,-4)
|
||||
(2.5,3)
|
||||
(3,3)
|
||||
(5 rows)
|
||||
|
||||
-- wholly-contained
|
||||
SELECT '' AS one, b1.*, b2.*
|
||||
SELECT b1.*, b2.*
|
||||
FROM BOX_TBL b1, BOX_TBL b2
|
||||
WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1;
|
||||
one | f1 | f1
|
||||
-----+-------------+-------------
|
||||
| (3,3),(1,1) | (3,3),(3,3)
|
||||
f1 | f1
|
||||
-------------+-------------
|
||||
(3,3),(1,1) | (3,3),(3,3)
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS four, height(f1), width(f1) FROM BOX_TBL;
|
||||
four | height | width
|
||||
------+--------+-------
|
||||
| 2 | 2
|
||||
| 2 | 2
|
||||
| 12 | 6
|
||||
| 1 | 0
|
||||
| 0 | 0
|
||||
SELECT height(f1), width(f1) FROM BOX_TBL;
|
||||
height | width
|
||||
--------+-------
|
||||
2 | 2
|
||||
2 | 2
|
||||
12 | 6
|
||||
1 | 0
|
||||
0 | 0
|
||||
(5 rows)
|
||||
|
||||
--
|
||||
|
|
|
@ -107,33 +107,33 @@ SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
|
|||
--
|
||||
-- Examples of targets involving tables
|
||||
--
|
||||
SELECT '' AS "Five",
|
||||
SELECT
|
||||
CASE
|
||||
WHEN i >= 3 THEN i
|
||||
END AS ">= 3 or Null"
|
||||
FROM CASE_TBL;
|
||||
Five | >= 3 or Null
|
||||
------+--------------
|
||||
|
|
||||
|
|
||||
| 3
|
||||
| 4
|
||||
>= 3 or Null
|
||||
--------------
|
||||
|
||||
|
||||
3
|
||||
4
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS "Five",
|
||||
SELECT
|
||||
CASE WHEN i >= 3 THEN (i + i)
|
||||
ELSE i
|
||||
END AS "Simplest Math"
|
||||
FROM CASE_TBL;
|
||||
Five | Simplest Math
|
||||
------+---------------
|
||||
| 1
|
||||
| 2
|
||||
| 6
|
||||
| 8
|
||||
Simplest Math
|
||||
---------------
|
||||
1
|
||||
2
|
||||
6
|
||||
8
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS "Five", i AS "Value",
|
||||
SELECT i AS "Value",
|
||||
CASE WHEN (i < 0) THEN 'small'
|
||||
WHEN (i = 0) THEN 'zero'
|
||||
WHEN (i = 1) THEN 'one'
|
||||
|
@ -141,15 +141,15 @@ SELECT '' AS "Five", i AS "Value",
|
|||
ELSE 'big'
|
||||
END AS "Category"
|
||||
FROM CASE_TBL;
|
||||
Five | Value | Category
|
||||
------+-------+----------
|
||||
| 1 | one
|
||||
| 2 | two
|
||||
| 3 | big
|
||||
| 4 | big
|
||||
Value | Category
|
||||
-------+----------
|
||||
1 | one
|
||||
2 | two
|
||||
3 | big
|
||||
4 | big
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS "Five",
|
||||
SELECT
|
||||
CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
|
||||
WHEN ((i = 0) or (i = 0)) THEN 'zero'
|
||||
WHEN ((i = 1) or (i = 1)) THEN 'one'
|
||||
|
@ -157,12 +157,12 @@ SELECT '' AS "Five",
|
|||
ELSE 'big'
|
||||
END AS "Category"
|
||||
FROM CASE_TBL;
|
||||
Five | Category
|
||||
------+----------
|
||||
| one
|
||||
| two
|
||||
| big
|
||||
| big
|
||||
Category
|
||||
----------
|
||||
one
|
||||
two
|
||||
big
|
||||
big
|
||||
(4 rows)
|
||||
|
||||
--
|
||||
|
@ -223,44 +223,44 @@ SELECT *
|
|||
4 | | 2 | -4
|
||||
(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)"
|
||||
FROM CASE_TBL a, CASE2_TBL b;
|
||||
five | NULLIF(a.i,b.i) | NULLIF(b.i,4)
|
||||
------+-----------------+---------------
|
||||
| | 1
|
||||
| 2 | 1
|
||||
| 3 | 1
|
||||
| 4 | 1
|
||||
| 1 | 2
|
||||
| | 2
|
||||
| 3 | 2
|
||||
| 4 | 2
|
||||
| 1 | 3
|
||||
| 2 | 3
|
||||
| | 3
|
||||
| 4 | 3
|
||||
| 1 | 2
|
||||
| | 2
|
||||
| 3 | 2
|
||||
| 4 | 2
|
||||
| | 1
|
||||
| 2 | 1
|
||||
| 3 | 1
|
||||
| 4 | 1
|
||||
| 1 |
|
||||
| 2 |
|
||||
| 3 |
|
||||
| 4 |
|
||||
NULLIF(a.i,b.i) | NULLIF(b.i,4)
|
||||
-----------------+---------------
|
||||
| 1
|
||||
2 | 1
|
||||
3 | 1
|
||||
4 | 1
|
||||
1 | 2
|
||||
| 2
|
||||
3 | 2
|
||||
4 | 2
|
||||
1 | 3
|
||||
2 | 3
|
||||
| 3
|
||||
4 | 3
|
||||
1 | 2
|
||||
| 2
|
||||
3 | 2
|
||||
4 | 2
|
||||
| 1
|
||||
2 | 1
|
||||
3 | 1
|
||||
4 | 1
|
||||
1 |
|
||||
2 |
|
||||
3 |
|
||||
4 |
|
||||
(24 rows)
|
||||
|
||||
SELECT '' AS "Two", *
|
||||
SELECT *
|
||||
FROM CASE_TBL a, CASE2_TBL b
|
||||
WHERE COALESCE(f,b.i) = 2;
|
||||
Two | i | f | i | j
|
||||
-----+---+---+---+----
|
||||
| 4 | | 2 | -2
|
||||
| 4 | | 2 | -4
|
||||
i | f | i | j
|
||||
---+---+---+----
|
||||
4 | | 2 | -2
|
||||
4 | | 2 | -4
|
||||
(2 rows)
|
||||
|
||||
--
|
||||
|
|
|
@ -25,79 +25,79 @@ INSERT INTO CHAR_TBL (f1) VALUES ('');
|
|||
INSERT INTO CHAR_TBL (f1) VALUES ('cd');
|
||||
ERROR: value too long for type character(1)
|
||||
INSERT INTO CHAR_TBL (f1) VALUES ('c ');
|
||||
SELECT '' AS seven, * FROM CHAR_TBL;
|
||||
seven | f1
|
||||
-------+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
SELECT * FROM CHAR_TBL;
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <> 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| a
|
||||
f1
|
||||
----
|
||||
a
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
five | f1
|
||||
------+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| c
|
||||
f1
|
||||
----
|
||||
c
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 >= 'a';
|
||||
two | f1
|
||||
-----+----
|
||||
| a
|
||||
| c
|
||||
f1
|
||||
----
|
||||
a
|
||||
c
|
||||
(2 rows)
|
||||
|
||||
DROP TABLE CHAR_TBL;
|
||||
|
@ -111,12 +111,12 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
|
|||
INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
|
||||
ERROR: value too long for type character(4)
|
||||
INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
|
||||
SELECT '' AS four, * FROM CHAR_TBL;
|
||||
four | f1
|
||||
------+------
|
||||
| a
|
||||
| ab
|
||||
| abcd
|
||||
| abcd
|
||||
SELECT * FROM CHAR_TBL;
|
||||
f1
|
||||
------
|
||||
a
|
||||
ab
|
||||
abcd
|
||||
abcd
|
||||
(4 rows)
|
||||
|
||||
|
|
|
@ -25,79 +25,79 @@ INSERT INTO CHAR_TBL (f1) VALUES ('');
|
|||
INSERT INTO CHAR_TBL (f1) VALUES ('cd');
|
||||
ERROR: value too long for type character(1)
|
||||
INSERT INTO CHAR_TBL (f1) VALUES ('c ');
|
||||
SELECT '' AS seven, * FROM CHAR_TBL;
|
||||
seven | f1
|
||||
-------+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
SELECT * FROM CHAR_TBL;
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <> 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| a
|
||||
f1
|
||||
----
|
||||
a
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
five | f1
|
||||
------+----
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| a
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| A
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
c
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 >= 'a';
|
||||
two | f1
|
||||
-----+----
|
||||
| a
|
||||
| A
|
||||
| c
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
c
|
||||
(3 rows)
|
||||
|
||||
DROP TABLE CHAR_TBL;
|
||||
|
@ -111,12 +111,12 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
|
|||
INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
|
||||
ERROR: value too long for type character(4)
|
||||
INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
|
||||
SELECT '' AS four, * FROM CHAR_TBL;
|
||||
four | f1
|
||||
------+------
|
||||
| a
|
||||
| ab
|
||||
| abcd
|
||||
| abcd
|
||||
SELECT * FROM CHAR_TBL;
|
||||
f1
|
||||
------
|
||||
a
|
||||
ab
|
||||
abcd
|
||||
abcd
|
||||
(4 rows)
|
||||
|
||||
|
|
|
@ -25,79 +25,79 @@ INSERT INTO CHAR_TBL (f1) VALUES ('');
|
|||
INSERT INTO CHAR_TBL (f1) VALUES ('cd');
|
||||
ERROR: value too long for type character(1)
|
||||
INSERT INTO CHAR_TBL (f1) VALUES ('c ');
|
||||
SELECT '' AS seven, * FROM CHAR_TBL;
|
||||
seven | f1
|
||||
-------+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
SELECT * FROM CHAR_TBL;
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <> 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| a
|
||||
f1
|
||||
----
|
||||
a
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
five | f1
|
||||
------+----
|
||||
|
|
||||
f1
|
||||
----
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| a
|
||||
|
|
||||
f1
|
||||
----
|
||||
a
|
||||
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
c
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 >= 'a';
|
||||
two | f1
|
||||
-----+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| c
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
DROP TABLE CHAR_TBL;
|
||||
|
@ -111,12 +111,12 @@ INSERT INTO CHAR_TBL (f1) VALUES ('abcd');
|
|||
INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
|
||||
ERROR: value too long for type character(4)
|
||||
INSERT INTO CHAR_TBL (f1) VALUES ('abcd ');
|
||||
SELECT '' AS four, * FROM CHAR_TBL;
|
||||
four | f1
|
||||
------+------
|
||||
| a
|
||||
| ab
|
||||
| abcd
|
||||
| abcd
|
||||
SELECT * FROM CHAR_TBL;
|
||||
f1
|
||||
------
|
||||
a
|
||||
ab
|
||||
abcd
|
||||
abcd
|
||||
(4 rows)
|
||||
|
||||
|
|
|
@ -47,79 +47,79 @@ SELECT * FROM CIRCLE_TBL;
|
|||
<(3,5),NaN>
|
||||
(8 rows)
|
||||
|
||||
SELECT '' AS six, center(f1) AS center
|
||||
SELECT center(f1) AS center
|
||||
FROM CIRCLE_TBL;
|
||||
six | center
|
||||
-----+-----------
|
||||
| (5,1)
|
||||
| (1,2)
|
||||
| (1,3)
|
||||
| (1,2)
|
||||
| (100,200)
|
||||
| (100,1)
|
||||
| (3,5)
|
||||
| (3,5)
|
||||
center
|
||||
-----------
|
||||
(5,1)
|
||||
(1,2)
|
||||
(1,3)
|
||||
(1,2)
|
||||
(100,200)
|
||||
(100,1)
|
||||
(3,5)
|
||||
(3,5)
|
||||
(8 rows)
|
||||
|
||||
SELECT '' AS six, radius(f1) AS radius
|
||||
SELECT radius(f1) AS radius
|
||||
FROM CIRCLE_TBL;
|
||||
six | radius
|
||||
-----+--------
|
||||
| 3
|
||||
| 100
|
||||
| 5
|
||||
| 3
|
||||
| 10
|
||||
| 115
|
||||
| 0
|
||||
| NaN
|
||||
radius
|
||||
--------
|
||||
3
|
||||
100
|
||||
5
|
||||
3
|
||||
10
|
||||
115
|
||||
0
|
||||
NaN
|
||||
(8 rows)
|
||||
|
||||
SELECT '' AS six, diameter(f1) AS diameter
|
||||
SELECT diameter(f1) AS diameter
|
||||
FROM CIRCLE_TBL;
|
||||
six | diameter
|
||||
-----+----------
|
||||
| 6
|
||||
| 200
|
||||
| 10
|
||||
| 6
|
||||
| 20
|
||||
| 230
|
||||
| 0
|
||||
| NaN
|
||||
diameter
|
||||
----------
|
||||
6
|
||||
200
|
||||
10
|
||||
6
|
||||
20
|
||||
230
|
||||
0
|
||||
NaN
|
||||
(8 rows)
|
||||
|
||||
SELECT '' AS two, f1 FROM CIRCLE_TBL WHERE radius(f1) < 5;
|
||||
two | f1
|
||||
-----+-----------
|
||||
| <(5,1),3>
|
||||
| <(1,2),3>
|
||||
| <(3,5),0>
|
||||
SELECT f1 FROM CIRCLE_TBL WHERE radius(f1) < 5;
|
||||
f1
|
||||
-----------
|
||||
<(5,1),3>
|
||||
<(1,2),3>
|
||||
<(3,5),0>
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10;
|
||||
four | f1
|
||||
------+----------------
|
||||
| <(1,2),100>
|
||||
| <(1,3),5>
|
||||
| <(100,200),10>
|
||||
| <(100,1),115>
|
||||
| <(3,5),NaN>
|
||||
SELECT f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10;
|
||||
f1
|
||||
----------------
|
||||
<(1,2),100>
|
||||
<(1,3),5>
|
||||
<(100,200),10>
|
||||
<(100,1),115>
|
||||
<(3,5),NaN>
|
||||
(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
|
||||
WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
|
||||
ORDER BY distance, area(c1.f1), area(c2.f1);
|
||||
five | one | two | distance
|
||||
------+----------------+----------------+------------------
|
||||
| <(3,5),0> | <(1,2),3> | 0.60555127546399
|
||||
| <(3,5),0> | <(5,1),3> | 1.4721359549996
|
||||
| <(100,200),10> | <(100,1),115> | 74
|
||||
| <(100,200),10> | <(1,2),100> | 111.37072977248
|
||||
| <(1,3),5> | <(100,200),10> | 205.4767561445
|
||||
| <(5,1),3> | <(100,200),10> | 207.51303816328
|
||||
| <(3,5),0> | <(100,200),10> | 207.79348015953
|
||||
| <(1,2),3> | <(100,200),10> | 208.37072977248
|
||||
one | two | distance
|
||||
----------------+----------------+------------------
|
||||
<(3,5),0> | <(1,2),3> | 0.60555127546399
|
||||
<(3,5),0> | <(5,1),3> | 1.4721359549996
|
||||
<(100,200),10> | <(100,1),115> | 74
|
||||
<(100,200),10> | <(1,2),100> | 111.37072977248
|
||||
<(1,3),5> | <(100,200),10> | 205.4767561445
|
||||
<(5,1),3> | <(100,200),10> | 207.51303816328
|
||||
<(3,5),0> | <(100,200),10> | 207.79348015953
|
||||
<(1,2),3> | <(100,200),10> | 208.37072977248
|
||||
(8 rows)
|
||||
|
||||
|
|
|
@ -161,136 +161,136 @@ SELECT 'nan'::numeric::float4;
|
|||
NaN
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
five | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e+20
|
||||
| 1.2345679e-20
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e+20
|
||||
1.2345679e-20
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
|
||||
four | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345679e+20
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
-34.84
|
||||
1.2345679e+20
|
||||
1.2345679e-20
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
|
||||
one | f1
|
||||
-----+--------
|
||||
| 1004.3
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
|
||||
f1
|
||||
--------
|
||||
1004.3
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
|
||||
three | f1
|
||||
-------+---------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
|
||||
three | f1
|
||||
-------+---------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
|
||||
four | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
|
||||
four | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+----------------
|
||||
| 1004.3 | -10043
|
||||
| 1.2345679e+20 | -1.2345678e+21
|
||||
| 1.2345679e-20 | -1.2345678e-19
|
||||
f1 | x
|
||||
---------------+----------------
|
||||
1004.3 | -10043
|
||||
1.2345679e+20 | -1.2345678e+21
|
||||
1.2345679e-20 | -1.2345678e-19
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+---------------
|
||||
| 1004.3 | 994.3
|
||||
| 1.2345679e+20 | 1.2345679e+20
|
||||
| 1.2345679e-20 | -10
|
||||
f1 | x
|
||||
---------------+---------------
|
||||
1004.3 | 994.3
|
||||
1.2345679e+20 | 1.2345679e+20
|
||||
1.2345679e-20 | -10
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+----------------
|
||||
| 1004.3 | -100.43
|
||||
| 1.2345679e+20 | -1.2345679e+19
|
||||
| 1.2345679e-20 | -1.2345679e-21
|
||||
f1 | x
|
||||
---------------+----------------
|
||||
1004.3 | -100.43
|
||||
1.2345679e+20 | -1.2345679e+19
|
||||
1.2345679e-20 | -1.2345679e-21
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+---------------
|
||||
| 1004.3 | 1014.3
|
||||
| 1.2345679e+20 | 1.2345679e+20
|
||||
| 1.2345679e-20 | 10
|
||||
f1 | x
|
||||
---------------+---------------
|
||||
1004.3 | 1014.3
|
||||
1.2345679e+20 | 1.2345679e+20
|
||||
1.2345679e-20 | 10
|
||||
(3 rows)
|
||||
|
||||
-- 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
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
five | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e+20
|
||||
| 1.2345679e-20
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e+20
|
||||
1.2345679e-20
|
||||
(5 rows)
|
||||
|
||||
-- test the unary float4abs operator
|
||||
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
|
||||
five | f1 | abs_f1
|
||||
------+---------------+---------------
|
||||
| 0 | 0
|
||||
| 1004.3 | 1004.3
|
||||
| -34.84 | 34.84
|
||||
| 1.2345679e+20 | 1.2345679e+20
|
||||
| 1.2345679e-20 | 1.2345679e-20
|
||||
SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
|
||||
f1 | abs_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)
|
||||
|
||||
UPDATE FLOAT4_TBL
|
||||
SET f1 = FLOAT4_TBL.f1 * '-1'
|
||||
WHERE FLOAT4_TBL.f1 > '0.0';
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
five | f1
|
||||
------+----------------
|
||||
| 0
|
||||
| -34.84
|
||||
| -1004.3
|
||||
| -1.2345679e+20
|
||||
| -1.2345679e-20
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
f1
|
||||
----------------
|
||||
0
|
||||
-34.84
|
||||
-1004.3
|
||||
-1.2345679e+20
|
||||
-1.2345679e-20
|
||||
(5 rows)
|
||||
|
||||
-- test edge-case coercions to integer
|
||||
|
|
|
@ -161,136 +161,136 @@ SELECT 'nan'::numeric::float4;
|
|||
NaN
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
five | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e+20
|
||||
| 1.2345679e-20
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e+20
|
||||
1.2345679e-20
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
|
||||
four | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345679e+20
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
-34.84
|
||||
1.2345679e+20
|
||||
1.2345679e-20
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
|
||||
one | f1
|
||||
-----+--------
|
||||
| 1004.3
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
|
||||
f1
|
||||
--------
|
||||
1004.3
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
|
||||
three | f1
|
||||
-------+---------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
|
||||
three | f1
|
||||
-------+---------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
|
||||
four | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
|
||||
four | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e-20
|
||||
SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e-20
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+----------------
|
||||
| 1004.3 | -10043
|
||||
| 1.2345679e+20 | -1.2345678e+21
|
||||
| 1.2345679e-20 | -1.2345678e-19
|
||||
f1 | x
|
||||
---------------+----------------
|
||||
1004.3 | -10043
|
||||
1.2345679e+20 | -1.2345678e+21
|
||||
1.2345679e-20 | -1.2345678e-19
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+---------------
|
||||
| 1004.3 | 994.3
|
||||
| 1.2345679e+20 | 1.2345679e+20
|
||||
| 1.2345679e-20 | -10
|
||||
f1 | x
|
||||
---------------+---------------
|
||||
1004.3 | 994.3
|
||||
1.2345679e+20 | 1.2345679e+20
|
||||
1.2345679e-20 | -10
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+----------------
|
||||
| 1004.3 | -100.43
|
||||
| 1.2345679e+20 | -1.2345679e+19
|
||||
| 1.2345679e-20 | -1.2345679e-21
|
||||
f1 | x
|
||||
---------------+----------------
|
||||
1004.3 | -100.43
|
||||
1.2345679e+20 | -1.2345679e+19
|
||||
1.2345679e-20 | -1.2345679e-21
|
||||
(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';
|
||||
three | f1 | x
|
||||
-------+---------------+---------------
|
||||
| 1004.3 | 1014.3
|
||||
| 1.2345679e+20 | 1.2345679e+20
|
||||
| 1.2345679e-20 | 10
|
||||
f1 | x
|
||||
---------------+---------------
|
||||
1004.3 | 1014.3
|
||||
1.2345679e+20 | 1.2345679e+20
|
||||
1.2345679e-20 | 10
|
||||
(3 rows)
|
||||
|
||||
-- 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
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
five | f1
|
||||
------+---------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345679e+20
|
||||
| 1.2345679e-20
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
f1
|
||||
---------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345679e+20
|
||||
1.2345679e-20
|
||||
(5 rows)
|
||||
|
||||
-- test the unary float4abs operator
|
||||
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
|
||||
five | f1 | abs_f1
|
||||
------+---------------+---------------
|
||||
| 0 | 0
|
||||
| 1004.3 | 1004.3
|
||||
| -34.84 | 34.84
|
||||
| 1.2345679e+20 | 1.2345679e+20
|
||||
| 1.2345679e-20 | 1.2345679e-20
|
||||
SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
|
||||
f1 | abs_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)
|
||||
|
||||
UPDATE FLOAT4_TBL
|
||||
SET f1 = FLOAT4_TBL.f1 * '-1'
|
||||
WHERE FLOAT4_TBL.f1 > '0.0';
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
five | f1
|
||||
------+----------------
|
||||
| 0
|
||||
| -34.84
|
||||
| -1004.3
|
||||
| -1.2345679e+20
|
||||
| -1.2345679e-20
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
f1
|
||||
----------------
|
||||
0
|
||||
-34.84
|
||||
-1004.3
|
||||
-1.2345679e+20
|
||||
-1.2345679e-20
|
||||
(5 rows)
|
||||
|
||||
-- test edge-case coercions to integer
|
||||
|
|
|
@ -144,146 +144,146 @@ SELECT 'nan'::numeric::float8;
|
|||
NaN
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, * FROM FLOAT8_TBL;
|
||||
five | f1
|
||||
------+----------------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345678901234e+200
|
||||
| 1.2345678901234e-200
|
||||
SELECT * FROM FLOAT8_TBL;
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345678901234e+200
|
||||
1.2345678901234e-200
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
|
||||
four | f1
|
||||
------+----------------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345678901234e+200
|
||||
| 1.2345678901234e-200
|
||||
SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
-34.84
|
||||
1.2345678901234e+200
|
||||
1.2345678901234e-200
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
|
||||
one | f1
|
||||
-----+--------
|
||||
| 1004.3
|
||||
SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
|
||||
f1
|
||||
--------
|
||||
1004.3
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
|
||||
three | f1
|
||||
-------+----------------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345678901234e-200
|
||||
SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
-34.84
|
||||
1.2345678901234e-200
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3';
|
||||
three | f1
|
||||
-------+----------------------
|
||||
| 0
|
||||
| -34.84
|
||||
| 1.2345678901234e-200
|
||||
SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3';
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
-34.84
|
||||
1.2345678901234e-200
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
|
||||
four | f1
|
||||
------+----------------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345678901234e-200
|
||||
SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345678901234e-200
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3';
|
||||
four | f1
|
||||
------+----------------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345678901234e-200
|
||||
SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3';
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345678901234e-200
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 * '-10' AS x
|
||||
SELECT f.f1, f.f1 * '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
three | f1 | x
|
||||
-------+----------------------+-----------------------
|
||||
| 1004.3 | -10043
|
||||
| 1.2345678901234e+200 | -1.2345678901234e+201
|
||||
| 1.2345678901234e-200 | -1.2345678901234e-199
|
||||
f1 | x
|
||||
----------------------+-----------------------
|
||||
1004.3 | -10043
|
||||
1.2345678901234e+200 | -1.2345678901234e+201
|
||||
1.2345678901234e-200 | -1.2345678901234e-199
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 + '-10' AS x
|
||||
SELECT f.f1, f.f1 + '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
three | f1 | x
|
||||
-------+----------------------+----------------------
|
||||
| 1004.3 | 994.3
|
||||
| 1.2345678901234e+200 | 1.2345678901234e+200
|
||||
| 1.2345678901234e-200 | -10
|
||||
f1 | x
|
||||
----------------------+----------------------
|
||||
1004.3 | 994.3
|
||||
1.2345678901234e+200 | 1.2345678901234e+200
|
||||
1.2345678901234e-200 | -10
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 / '-10' AS x
|
||||
SELECT f.f1, f.f1 / '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
three | f1 | x
|
||||
-------+----------------------+-----------------------
|
||||
| 1004.3 | -100.42999999999999
|
||||
| 1.2345678901234e+200 | -1.2345678901234e+199
|
||||
| 1.2345678901234e-200 | -1.2345678901234e-201
|
||||
f1 | x
|
||||
----------------------+-----------------------
|
||||
1004.3 | -100.42999999999999
|
||||
1.2345678901234e+200 | -1.2345678901234e+199
|
||||
1.2345678901234e-200 | -1.2345678901234e-201
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 - '-10' AS x
|
||||
SELECT f.f1, f.f1 - '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
three | f1 | x
|
||||
-------+----------------------+----------------------
|
||||
| 1004.3 | 1014.3
|
||||
| 1.2345678901234e+200 | 1.2345678901234e+200
|
||||
| 1.2345678901234e-200 | 10
|
||||
f1 | x
|
||||
----------------------+----------------------
|
||||
1004.3 | 1014.3
|
||||
1.2345678901234e+200 | 1.2345678901234e+200
|
||||
1.2345678901234e-200 | 10
|
||||
(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';
|
||||
one | square_f1
|
||||
-----+--------------------
|
||||
| 1008618.4899999999
|
||||
square_f1
|
||||
--------------------
|
||||
1008618.4899999999
|
||||
(1 row)
|
||||
|
||||
-- absolute value
|
||||
SELECT '' AS five, f.f1, @f.f1 AS abs_f1
|
||||
SELECT f.f1, @f.f1 AS abs_f1
|
||||
FROM FLOAT8_TBL f;
|
||||
five | f1 | abs_f1
|
||||
------+----------------------+----------------------
|
||||
| 0 | 0
|
||||
| 1004.3 | 1004.3
|
||||
| -34.84 | 34.84
|
||||
| 1.2345678901234e+200 | 1.2345678901234e+200
|
||||
| 1.2345678901234e-200 | 1.2345678901234e-200
|
||||
f1 | abs_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)
|
||||
|
||||
-- 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;
|
||||
five | f1 | trunc_f1
|
||||
------+----------------------+----------------------
|
||||
| 0 | 0
|
||||
| 1004.3 | 1004
|
||||
| -34.84 | -34
|
||||
| 1.2345678901234e+200 | 1.2345678901234e+200
|
||||
| 1.2345678901234e-200 | 0
|
||||
f1 | trunc_f1
|
||||
----------------------+----------------------
|
||||
0 | 0
|
||||
1004.3 | 1004
|
||||
-34.84 | -34
|
||||
1.2345678901234e+200 | 1.2345678901234e+200
|
||||
1.2345678901234e-200 | 0
|
||||
(5 rows)
|
||||
|
||||
-- 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;
|
||||
five | f1 | round_f1
|
||||
------+----------------------+----------------------
|
||||
| 0 | 0
|
||||
| 1004.3 | 1004
|
||||
| -34.84 | -35
|
||||
| 1.2345678901234e+200 | 1.2345678901234e+200
|
||||
| 1.2345678901234e-200 | 0
|
||||
f1 | round_f1
|
||||
----------------------+----------------------
|
||||
0 | 0
|
||||
1004.3 | 1004
|
||||
-34.84 | -35
|
||||
1.2345678901234e+200 | 1.2345678901234e+200
|
||||
1.2345678901234e-200 | 0
|
||||
(5 rows)
|
||||
|
||||
-- ceil / ceiling
|
||||
|
@ -344,14 +344,14 @@ SELECT |/ float8 '64' AS eight;
|
|||
8
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
|
||||
SELECT f.f1, |/f.f1 AS sqrt_f1
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
three | f1 | sqrt_f1
|
||||
-------+----------------------+-----------------------
|
||||
| 1004.3 | 31.6906926399535
|
||||
| 1.2345678901234e+200 | 1.11111110611109e+100
|
||||
| 1.2345678901234e-200 | 1.11111110611109e-100
|
||||
f1 | sqrt_f1
|
||||
----------------------+-----------------------
|
||||
1004.3 | 31.6906926399535
|
||||
1.2345678901234e+200 | 1.11111110611109e+100
|
||||
1.2345678901234e-200 | 1.11111110611109e-100
|
||||
(3 rows)
|
||||
|
||||
-- power
|
||||
|
@ -554,14 +554,14 @@ SELECT power(float8 '-inf', float8 '-inf');
|
|||
(1 row)
|
||||
|
||||
-- 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
|
||||
WHERE f.f1 > '0.0';
|
||||
three | f1 | exp_ln_f1
|
||||
-------+----------------------+-----------------------
|
||||
| 1004.3 | 1004.3
|
||||
| 1.2345678901234e+200 | 1.23456789012338e+200
|
||||
| 1.2345678901234e-200 | 1.23456789012339e-200
|
||||
f1 | exp_ln_f1
|
||||
----------------------+-----------------------
|
||||
1004.3 | 1004.3
|
||||
1.2345678901234e+200 | 1.23456789012338e+200
|
||||
1.2345678901234e-200 | 1.23456789012339e-200
|
||||
(3 rows)
|
||||
|
||||
-- check edge cases for exp
|
||||
|
@ -578,32 +578,32 @@ SELECT ||/ float8 '27' AS three;
|
|||
3
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
|
||||
five | f1 | cbrt_f1
|
||||
------+----------------------+----------------------
|
||||
| 0 | 0
|
||||
| 1004.3 | 10.014312837827
|
||||
| -34.84 | -3.26607421344208
|
||||
| 1.2345678901234e+200 | 4.97933859234765e+66
|
||||
| 1.2345678901234e-200 | 2.3112042409018e-67
|
||||
SELECT f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
|
||||
f1 | cbrt_f1
|
||||
----------------------+----------------------
|
||||
0 | 0
|
||||
1004.3 | 10.014312837827
|
||||
-34.84 | -3.26607421344208
|
||||
1.2345678901234e+200 | 4.97933859234765e+66
|
||||
1.2345678901234e-200 | 2.3112042409018e-67
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, * FROM FLOAT8_TBL;
|
||||
five | f1
|
||||
------+----------------------
|
||||
| 0
|
||||
| 1004.3
|
||||
| -34.84
|
||||
| 1.2345678901234e+200
|
||||
| 1.2345678901234e-200
|
||||
SELECT * FROM FLOAT8_TBL;
|
||||
f1
|
||||
----------------------
|
||||
0
|
||||
1004.3
|
||||
-34.84
|
||||
1.2345678901234e+200
|
||||
1.2345678901234e-200
|
||||
(5 rows)
|
||||
|
||||
UPDATE FLOAT8_TBL
|
||||
SET f1 = FLOAT8_TBL.f1 * '-1'
|
||||
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
|
||||
SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
|
||||
SELECT f.f1 ^ '1e200' from FLOAT8_TBL f;
|
||||
ERROR: value out of range: overflow
|
||||
SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
|
||||
?column?
|
||||
|
@ -611,22 +611,22 @@ SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
|
|||
2
|
||||
(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
|
||||
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
|
||||
SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f;
|
||||
SELECT exp(f.f1) from FLOAT8_TBL f;
|
||||
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
|
||||
SELECT '' AS five, * FROM FLOAT8_TBL;
|
||||
five | f1
|
||||
------+-----------------------
|
||||
| 0
|
||||
| -34.84
|
||||
| -1004.3
|
||||
| -1.2345678901234e+200
|
||||
| -1.2345678901234e-200
|
||||
SELECT * FROM FLOAT8_TBL;
|
||||
f1
|
||||
-----------------------
|
||||
0
|
||||
-34.84
|
||||
-1004.3
|
||||
-1.2345678901234e+200
|
||||
-1.2345678901234e-200
|
||||
(5 rows)
|
||||
|
||||
-- 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 ('-1.2345678901234e+200');
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
|
||||
SELECT '' AS five, * FROM FLOAT8_TBL;
|
||||
five | f1
|
||||
------+-----------------------
|
||||
| 0
|
||||
| -34.84
|
||||
| -1004.3
|
||||
| -1.2345678901234e+200
|
||||
| -1.2345678901234e-200
|
||||
SELECT * FROM FLOAT8_TBL;
|
||||
f1
|
||||
-----------------------
|
||||
0
|
||||
-34.84
|
||||
-1004.3
|
||||
-1.2345678901234e+200
|
||||
-1.2345678901234e-200
|
||||
(5 rows)
|
||||
|
||||
-- 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
|
@ -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...
|
||||
^
|
||||
DETAIL: Value has bits set to right of mask.
|
||||
SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL;
|
||||
ten | cidr | inet
|
||||
-----+--------------------+------------------
|
||||
| 192.168.1.0/24 | 192.168.1.226/24
|
||||
| 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/25
|
||||
| 192.168.1.0/24 | 192.168.1.255/24
|
||||
| 192.168.1.0/24 | 192.168.1.255/25
|
||||
| 10.0.0.0/8 | 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.0/24 | 10.1.2.3/24
|
||||
| 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 | 11.1.2.3/8
|
||||
| 10.0.0.0/8 | 9.1.2.3/8
|
||||
| 10:23::f1/128 | 10:23::f1/64
|
||||
| 10:23::8000/113 | 10:23::ffff
|
||||
| ::ffff:1.2.3.4/128 | ::4.3.2.1/24
|
||||
SELECT c AS cidr, i AS inet FROM INET_TBL;
|
||||
cidr | inet
|
||||
--------------------+------------------
|
||||
192.168.1.0/24 | 192.168.1.226/24
|
||||
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/25
|
||||
192.168.1.0/24 | 192.168.1.255/24
|
||||
192.168.1.0/24 | 192.168.1.255/25
|
||||
10.0.0.0/8 | 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.0/24 | 10.1.2.3/24
|
||||
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 | 11.1.2.3/8
|
||||
10.0.0.0/8 | 9.1.2.3/8
|
||||
10:23::f1/128 | 10:23::f1/64
|
||||
10:23::8000/113 | 10:23::ffff
|
||||
::ffff:1.2.3.4/128 | ::4.3.2.1/24
|
||||
(17 rows)
|
||||
|
||||
-- now test some support functions
|
||||
SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL;
|
||||
ten | inet | host | text | family
|
||||
-----+------------------+---------------+------------------+--------
|
||||
| 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.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.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
|
||||
| 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/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/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
|
||||
| 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::ffff | 10:23::ffff | 10:23::ffff/128 | 6
|
||||
| ::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6
|
||||
SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL;
|
||||
inet | host | text | family
|
||||
------------------+---------------+------------------+--------
|
||||
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.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.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
|
||||
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/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/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
|
||||
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::ffff | 10:23::ffff | 10:23::ffff/128 | 6
|
||||
::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6
|
||||
(17 rows)
|
||||
|
||||
SELECT '' AS ten, c AS cidr, broadcast(c),
|
||||
SELECT c AS cidr, broadcast(c),
|
||||
i AS inet, broadcast(i) FROM INET_TBL;
|
||||
ten | 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/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/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/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/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.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.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 | 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::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
|
||||
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/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/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/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/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.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.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 | 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::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
|
||||
(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;
|
||||
ten | 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/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/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/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/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.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.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 | 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::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
|
||||
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/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/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/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/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.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.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 | 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::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
|
||||
(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;
|
||||
ten | cidr | masklen(cidr) | inet | masklen(inet)
|
||||
-----+--------------------+---------------+------------------+---------------
|
||||
| 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/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.255/24 | 24
|
||||
| 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/32 | 32 | 10.1.2.3/8 | 8
|
||||
| 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.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 | 11.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::8000/113 | 113 | 10:23::ffff | 128
|
||||
| ::ffff:1.2.3.4/128 | 128 | ::4.3.2.1/24 | 24
|
||||
cidr | masklen(cidr) | inet | masklen(inet)
|
||||
--------------------+---------------+------------------+---------------
|
||||
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/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.255/24 | 24
|
||||
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/32 | 32 | 10.1.2.3/8 | 8
|
||||
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.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 | 11.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::8000/113 | 113 | 10:23::ffff | 128
|
||||
::ffff:1.2.3.4/128 | 128 | ::4.3.2.1/24 | 24
|
||||
(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
|
||||
WHERE masklen(c) <= 8;
|
||||
four | 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 | 11.1.2.3/8 | 8
|
||||
| 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
|
||||
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 | 11.1.2.3/8 | 8
|
||||
10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
|
||||
(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;
|
||||
six | cidr | inet
|
||||
-----+----------------+----------------
|
||||
| 192.168.1.0/24 | 192.168.1.0/24
|
||||
| 10.1.2.3/32 | 10.1.2.3
|
||||
cidr | inet
|
||||
----------------+----------------
|
||||
192.168.1.0/24 | 192.168.1.0/24
|
||||
10.1.2.3/32 | 10.1.2.3
|
||||
(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 ge, i > c AS gt, i <> c AS ne,
|
||||
i << c AS sb, i <<= c AS sbe,
|
||||
i >> c AS sup, i >>= c AS spe,
|
||||
i && c AS ovr
|
||||
FROM INET_TBL;
|
||||
ten | 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 | 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/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/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/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/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/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
|
||||
| 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::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
|
||||
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 | 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/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/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/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/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/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
|
||||
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::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
|
||||
(17 rows)
|
||||
|
||||
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)
|
||||
|
||||
-- check the conversion to/from text and set_netmask
|
||||
SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL;
|
||||
ten | set_masklen
|
||||
-----+------------------
|
||||
| 192.168.1.226/24
|
||||
| 192.168.1.226/24
|
||||
| 192.168.1.0/24
|
||||
| 192.168.1.0/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
|
||||
| 11.1.2.3/24
|
||||
| 9.1.2.3/24
|
||||
| 10:23::f1/24
|
||||
| 10:23::ffff/24
|
||||
| ::4.3.2.1/24
|
||||
SELECT set_masklen(inet(text(i)), 24) FROM INET_TBL;
|
||||
set_masklen
|
||||
------------------
|
||||
192.168.1.226/24
|
||||
192.168.1.226/24
|
||||
192.168.1.0/24
|
||||
192.168.1.0/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
|
||||
11.1.2.3/24
|
||||
9.1.2.3/24
|
||||
10:23::f1/24
|
||||
10:23::ffff/24
|
||||
::4.3.2.1/24
|
||||
(17 rows)
|
||||
|
||||
-- check that btree index works correctly
|
||||
|
|
|
@ -41,205 +41,205 @@ INSERT INTO INT2_TBL(f1) VALUES ('');
|
|||
ERROR: invalid input syntax for type smallint: ""
|
||||
LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('');
|
||||
^
|
||||
SELECT '' AS five, * FROM INT2_TBL;
|
||||
five | f1
|
||||
------+--------
|
||||
| 0
|
||||
| 1234
|
||||
| -1234
|
||||
| 32767
|
||||
| -32767
|
||||
SELECT * FROM INT2_TBL;
|
||||
f1
|
||||
--------
|
||||
0
|
||||
1234
|
||||
-1234
|
||||
32767
|
||||
-32767
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0';
|
||||
four | f1
|
||||
------+--------
|
||||
| 1234
|
||||
| -1234
|
||||
| 32767
|
||||
| -32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0';
|
||||
f1
|
||||
--------
|
||||
1234
|
||||
-1234
|
||||
32767
|
||||
-32767
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0';
|
||||
four | f1
|
||||
------+--------
|
||||
| 1234
|
||||
| -1234
|
||||
| 32767
|
||||
| -32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0';
|
||||
f1
|
||||
--------
|
||||
1234
|
||||
-1234
|
||||
32767
|
||||
-32767
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int2 '0';
|
||||
one | f1
|
||||
-----+----
|
||||
| 0
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 = int2 '0';
|
||||
f1
|
||||
----
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int4 '0';
|
||||
one | f1
|
||||
-----+----
|
||||
| 0
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 = int4 '0';
|
||||
f1
|
||||
----
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int2 '0';
|
||||
two | f1
|
||||
-----+--------
|
||||
| -1234
|
||||
| -32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 < int2 '0';
|
||||
f1
|
||||
--------
|
||||
-1234
|
||||
-32767
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int4 '0';
|
||||
two | f1
|
||||
-----+--------
|
||||
| -1234
|
||||
| -32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 < int4 '0';
|
||||
f1
|
||||
--------
|
||||
-1234
|
||||
-32767
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0';
|
||||
three | f1
|
||||
-------+--------
|
||||
| 0
|
||||
| -1234
|
||||
| -32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0';
|
||||
f1
|
||||
--------
|
||||
0
|
||||
-1234
|
||||
-32767
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0';
|
||||
three | f1
|
||||
-------+--------
|
||||
| 0
|
||||
| -1234
|
||||
| -32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0';
|
||||
f1
|
||||
--------
|
||||
0
|
||||
-1234
|
||||
-32767
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int2 '0';
|
||||
two | f1
|
||||
-----+-------
|
||||
| 1234
|
||||
| 32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 > int2 '0';
|
||||
f1
|
||||
-------
|
||||
1234
|
||||
32767
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int4 '0';
|
||||
two | f1
|
||||
-----+-------
|
||||
| 1234
|
||||
| 32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 > int4 '0';
|
||||
f1
|
||||
-------
|
||||
1234
|
||||
32767
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0';
|
||||
three | f1
|
||||
-------+-------
|
||||
| 0
|
||||
| 1234
|
||||
| 32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0';
|
||||
f1
|
||||
-------
|
||||
0
|
||||
1234
|
||||
32767
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0';
|
||||
three | f1
|
||||
-------+-------
|
||||
| 0
|
||||
| 1234
|
||||
| 32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0';
|
||||
f1
|
||||
-------
|
||||
0
|
||||
1234
|
||||
32767
|
||||
(3 rows)
|
||||
|
||||
-- positive odds
|
||||
SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
|
||||
one | f1
|
||||
-----+-------
|
||||
| 32767
|
||||
SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
|
||||
f1
|
||||
-------
|
||||
32767
|
||||
(1 row)
|
||||
|
||||
-- any evens
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
|
||||
three | f1
|
||||
-------+-------
|
||||
| 0
|
||||
| 1234
|
||||
| -1234
|
||||
SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
|
||||
f1
|
||||
-------
|
||||
0
|
||||
1234
|
||||
-1234
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+-------+-------
|
||||
| 0 | 0
|
||||
| 1234 | 2468
|
||||
| -1234 | -2468
|
||||
f1 | x
|
||||
-------+-------
|
||||
0 | 0
|
||||
1234 | 2468
|
||||
-1234 | -2468
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i;
|
||||
five | f1 | x
|
||||
------+--------+--------
|
||||
| 0 | 0
|
||||
| 1234 | 2468
|
||||
| -1234 | -2468
|
||||
| 32767 | 65534
|
||||
| -32767 | -65534
|
||||
SELECT i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i;
|
||||
f1 | x
|
||||
--------+--------
|
||||
0 | 0
|
||||
1234 | 2468
|
||||
-1234 | -2468
|
||||
32767 | 65534
|
||||
-32767 | -65534
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+--------+--------
|
||||
| 0 | 2
|
||||
| 1234 | 1236
|
||||
| -1234 | -1232
|
||||
| -32767 | -32765
|
||||
f1 | x
|
||||
--------+--------
|
||||
0 | 2
|
||||
1234 | 1236
|
||||
-1234 | -1232
|
||||
-32767 | -32765
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i;
|
||||
five | f1 | x
|
||||
------+--------+--------
|
||||
| 0 | 2
|
||||
| 1234 | 1236
|
||||
| -1234 | -1232
|
||||
| 32767 | 32769
|
||||
| -32767 | -32765
|
||||
SELECT i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i;
|
||||
f1 | x
|
||||
--------+--------
|
||||
0 | 2
|
||||
1234 | 1236
|
||||
-1234 | -1232
|
||||
32767 | 32769
|
||||
-32767 | -32765
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+-------+-------
|
||||
| 0 | -2
|
||||
| 1234 | 1232
|
||||
| -1234 | -1236
|
||||
| 32767 | 32765
|
||||
f1 | x
|
||||
-------+-------
|
||||
0 | -2
|
||||
1234 | 1232
|
||||
-1234 | -1236
|
||||
32767 | 32765
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i;
|
||||
five | f1 | x
|
||||
------+--------+--------
|
||||
| 0 | -2
|
||||
| 1234 | 1232
|
||||
| -1234 | -1236
|
||||
| 32767 | 32765
|
||||
| -32767 | -32769
|
||||
SELECT i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i;
|
||||
f1 | x
|
||||
--------+--------
|
||||
0 | -2
|
||||
1234 | 1232
|
||||
-1234 | -1236
|
||||
32767 | 32765
|
||||
-32767 | -32769
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i;
|
||||
five | f1 | x
|
||||
------+--------+--------
|
||||
| 0 | 0
|
||||
| 1234 | 617
|
||||
| -1234 | -617
|
||||
| 32767 | 16383
|
||||
| -32767 | -16383
|
||||
SELECT i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i;
|
||||
f1 | x
|
||||
--------+--------
|
||||
0 | 0
|
||||
1234 | 617
|
||||
-1234 | -617
|
||||
32767 | 16383
|
||||
-32767 | -16383
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i;
|
||||
five | f1 | x
|
||||
------+--------+--------
|
||||
| 0 | 0
|
||||
| 1234 | 617
|
||||
| -1234 | -617
|
||||
| 32767 | 16383
|
||||
| -32767 | -16383
|
||||
SELECT i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i;
|
||||
f1 | x
|
||||
--------+--------
|
||||
0 | 0
|
||||
1234 | 617
|
||||
-1234 | -617
|
||||
32767 | 16383
|
||||
-32767 | -16383
|
||||
(5 rows)
|
||||
|
||||
-- corner cases
|
||||
|
|
|
@ -41,210 +41,210 @@ INSERT INTO INT4_TBL(f1) VALUES ('');
|
|||
ERROR: invalid input syntax for type integer: ""
|
||||
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('');
|
||||
^
|
||||
SELECT '' AS five, * FROM INT4_TBL;
|
||||
five | f1
|
||||
------+-------------
|
||||
| 0
|
||||
| 123456
|
||||
| -123456
|
||||
| 2147483647
|
||||
| -2147483647
|
||||
SELECT * FROM INT4_TBL;
|
||||
f1
|
||||
-------------
|
||||
0
|
||||
123456
|
||||
-123456
|
||||
2147483647
|
||||
-2147483647
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
|
||||
four | f1
|
||||
------+-------------
|
||||
| 123456
|
||||
| -123456
|
||||
| 2147483647
|
||||
| -2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
|
||||
f1
|
||||
-------------
|
||||
123456
|
||||
-123456
|
||||
2147483647
|
||||
-2147483647
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
|
||||
four | f1
|
||||
------+-------------
|
||||
| 123456
|
||||
| -123456
|
||||
| 2147483647
|
||||
| -2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
|
||||
f1
|
||||
-------------
|
||||
123456
|
||||
-123456
|
||||
2147483647
|
||||
-2147483647
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
|
||||
one | f1
|
||||
-----+----
|
||||
| 0
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
|
||||
f1
|
||||
----
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
|
||||
one | f1
|
||||
-----+----
|
||||
| 0
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
|
||||
f1
|
||||
----
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
|
||||
two | f1
|
||||
-----+-------------
|
||||
| -123456
|
||||
| -2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
|
||||
f1
|
||||
-------------
|
||||
-123456
|
||||
-2147483647
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
|
||||
two | f1
|
||||
-----+-------------
|
||||
| -123456
|
||||
| -2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
|
||||
f1
|
||||
-------------
|
||||
-123456
|
||||
-2147483647
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
|
||||
three | f1
|
||||
-------+-------------
|
||||
| 0
|
||||
| -123456
|
||||
| -2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
|
||||
f1
|
||||
-------------
|
||||
0
|
||||
-123456
|
||||
-2147483647
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
|
||||
three | f1
|
||||
-------+-------------
|
||||
| 0
|
||||
| -123456
|
||||
| -2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
|
||||
f1
|
||||
-------------
|
||||
0
|
||||
-123456
|
||||
-2147483647
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
|
||||
two | f1
|
||||
-----+------------
|
||||
| 123456
|
||||
| 2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
|
||||
f1
|
||||
------------
|
||||
123456
|
||||
2147483647
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
|
||||
two | f1
|
||||
-----+------------
|
||||
| 123456
|
||||
| 2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
|
||||
f1
|
||||
------------
|
||||
123456
|
||||
2147483647
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
|
||||
three | f1
|
||||
-------+------------
|
||||
| 0
|
||||
| 123456
|
||||
| 2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
|
||||
f1
|
||||
------------
|
||||
0
|
||||
123456
|
||||
2147483647
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
|
||||
three | f1
|
||||
-------+------------
|
||||
| 0
|
||||
| 123456
|
||||
| 2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
|
||||
f1
|
||||
------------
|
||||
0
|
||||
123456
|
||||
2147483647
|
||||
(3 rows)
|
||||
|
||||
-- positive odds
|
||||
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
|
||||
one | f1
|
||||
-----+------------
|
||||
| 2147483647
|
||||
SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
|
||||
f1
|
||||
------------
|
||||
2147483647
|
||||
(1 row)
|
||||
|
||||
-- any evens
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
|
||||
three | f1
|
||||
-------+---------
|
||||
| 0
|
||||
| 123456
|
||||
| -123456
|
||||
SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
|
||||
f1
|
||||
---------
|
||||
0
|
||||
123456
|
||||
-123456
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+---------+---------
|
||||
| 0 | 0
|
||||
| 123456 | 246912
|
||||
| -123456 | -246912
|
||||
f1 | x
|
||||
---------+---------
|
||||
0 | 0
|
||||
123456 | 246912
|
||||
-123456 | -246912
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+---------+---------
|
||||
| 0 | 0
|
||||
| 123456 | 246912
|
||||
| -123456 | -246912
|
||||
f1 | x
|
||||
---------+---------
|
||||
0 | 0
|
||||
123456 | 246912
|
||||
-123456 | -246912
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+-------------+-------------
|
||||
| 0 | 2
|
||||
| 123456 | 123458
|
||||
| -123456 | -123454
|
||||
| -2147483647 | -2147483645
|
||||
f1 | x
|
||||
-------------+-------------
|
||||
0 | 2
|
||||
123456 | 123458
|
||||
-123456 | -123454
|
||||
-2147483647 | -2147483645
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+-------------+-------------
|
||||
| 0 | 2
|
||||
| 123456 | 123458
|
||||
| -123456 | -123454
|
||||
| -2147483647 | -2147483645
|
||||
f1 | x
|
||||
-------------+-------------
|
||||
0 | 2
|
||||
123456 | 123458
|
||||
-123456 | -123454
|
||||
-2147483647 | -2147483645
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+------------+------------
|
||||
| 0 | -2
|
||||
| 123456 | 123454
|
||||
| -123456 | -123458
|
||||
| 2147483647 | 2147483645
|
||||
f1 | x
|
||||
------------+------------
|
||||
0 | -2
|
||||
123456 | 123454
|
||||
-123456 | -123458
|
||||
2147483647 | 2147483645
|
||||
(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
|
||||
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;
|
||||
five | f1 | x
|
||||
------+------------+------------
|
||||
| 0 | -2
|
||||
| 123456 | 123454
|
||||
| -123456 | -123458
|
||||
| 2147483647 | 2147483645
|
||||
f1 | x
|
||||
------------+------------
|
||||
0 | -2
|
||||
123456 | 123454
|
||||
-123456 | -123458
|
||||
2147483647 | 2147483645
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
|
||||
five | f1 | x
|
||||
------+-------------+-------------
|
||||
| 0 | 0
|
||||
| 123456 | 61728
|
||||
| -123456 | -61728
|
||||
| 2147483647 | 1073741823
|
||||
| -2147483647 | -1073741823
|
||||
SELECT i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
|
||||
f1 | x
|
||||
-------------+-------------
|
||||
0 | 0
|
||||
123456 | 61728
|
||||
-123456 | -61728
|
||||
2147483647 | 1073741823
|
||||
-2147483647 | -1073741823
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
|
||||
five | f1 | x
|
||||
------+-------------+-------------
|
||||
| 0 | 0
|
||||
| 123456 | 61728
|
||||
| -123456 | -61728
|
||||
| 2147483647 | 1073741823
|
||||
| -2147483647 | -1073741823
|
||||
SELECT i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
|
||||
f1 | x
|
||||
-------------+-------------
|
||||
0 | 0
|
||||
123456 | 61728
|
||||
-123456 | -61728
|
||||
2147483647 | 1073741823
|
||||
-2147483647 | -1073741823
|
||||
(5 rows)
|
||||
|
||||
--
|
||||
|
|
|
@ -277,75 +277,75 @@ SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1;
|
|||
123 | 4567890123456789
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL;
|
||||
five | plus | minus
|
||||
------+------------------+-------------------
|
||||
| 123 | -123
|
||||
| 123 | -123
|
||||
| 4567890123456789 | -4567890123456789
|
||||
| 4567890123456789 | -4567890123456789
|
||||
| 4567890123456789 | -4567890123456789
|
||||
SELECT q1 AS plus, -q1 AS minus FROM INT8_TBL;
|
||||
plus | minus
|
||||
------------------+-------------------
|
||||
123 | -123
|
||||
123 | -123
|
||||
4567890123456789 | -4567890123456789
|
||||
4567890123456789 | -4567890123456789
|
||||
4567890123456789 | -4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, q1, q2, q1 + q2 AS plus FROM INT8_TBL;
|
||||
five | q1 | q2 | plus
|
||||
------+------------------+-------------------+------------------
|
||||
| 123 | 456 | 579
|
||||
| 123 | 4567890123456789 | 4567890123456912
|
||||
| 4567890123456789 | 123 | 4567890123456912
|
||||
| 4567890123456789 | 4567890123456789 | 9135780246913578
|
||||
| 4567890123456789 | -4567890123456789 | 0
|
||||
SELECT q1, q2, q1 + q2 AS plus FROM INT8_TBL;
|
||||
q1 | q2 | plus
|
||||
------------------+-------------------+------------------
|
||||
123 | 456 | 579
|
||||
123 | 4567890123456789 | 4567890123456912
|
||||
4567890123456789 | 123 | 4567890123456912
|
||||
4567890123456789 | 4567890123456789 | 9135780246913578
|
||||
4567890123456789 | -4567890123456789 | 0
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL;
|
||||
five | q1 | q2 | minus
|
||||
------+------------------+-------------------+-------------------
|
||||
| 123 | 456 | -333
|
||||
| 123 | 4567890123456789 | -4567890123456666
|
||||
| 4567890123456789 | 123 | 4567890123456666
|
||||
| 4567890123456789 | 4567890123456789 | 0
|
||||
| 4567890123456789 | -4567890123456789 | 9135780246913578
|
||||
SELECT q1, q2, q1 - q2 AS minus FROM INT8_TBL;
|
||||
q1 | q2 | minus
|
||||
------------------+-------------------+-------------------
|
||||
123 | 456 | -333
|
||||
123 | 4567890123456789 | -4567890123456666
|
||||
4567890123456789 | 123 | 4567890123456666
|
||||
4567890123456789 | 4567890123456789 | 0
|
||||
4567890123456789 | -4567890123456789 | 9135780246913578
|
||||
(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
|
||||
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);
|
||||
three | q1 | q2 | multiply
|
||||
-------+------------------+------------------+--------------------
|
||||
| 123 | 456 | 56088
|
||||
| 123 | 4567890123456789 | 561850485185185047
|
||||
| 4567890123456789 | 123 | 561850485185185047
|
||||
q1 | q2 | multiply
|
||||
------------------+------------------+--------------------
|
||||
123 | 456 | 56088
|
||||
123 | 4567890123456789 | 561850485185185047
|
||||
4567890123456789 | 123 | 561850485185185047
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS five, q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL;
|
||||
five | q1 | q2 | divide | mod
|
||||
------+------------------+-------------------+----------------+-----
|
||||
| 123 | 456 | 0 | 123
|
||||
| 123 | 4567890123456789 | 0 | 123
|
||||
| 4567890123456789 | 123 | 37137318076884 | 57
|
||||
| 4567890123456789 | 4567890123456789 | 1 | 0
|
||||
| 4567890123456789 | -4567890123456789 | -1 | 0
|
||||
SELECT q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL;
|
||||
q1 | q2 | divide | mod
|
||||
------------------+-------------------+----------------+-----
|
||||
123 | 456 | 0 | 123
|
||||
123 | 4567890123456789 | 0 | 123
|
||||
4567890123456789 | 123 | 37137318076884 | 57
|
||||
4567890123456789 | 4567890123456789 | 1 | 0
|
||||
4567890123456789 | -4567890123456789 | -1 | 0
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, q1, float8(q1) FROM INT8_TBL;
|
||||
five | q1 | float8
|
||||
------+------------------+-----------------------
|
||||
| 123 | 123
|
||||
| 123 | 123
|
||||
| 4567890123456789 | 4.567890123456789e+15
|
||||
| 4567890123456789 | 4.567890123456789e+15
|
||||
| 4567890123456789 | 4.567890123456789e+15
|
||||
SELECT q1, float8(q1) FROM INT8_TBL;
|
||||
q1 | float8
|
||||
------------------+-----------------------
|
||||
123 | 123
|
||||
123 | 123
|
||||
4567890123456789 | 4.567890123456789e+15
|
||||
4567890123456789 | 4.567890123456789e+15
|
||||
4567890123456789 | 4.567890123456789e+15
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, q2, float8(q2) FROM INT8_TBL;
|
||||
five | q2 | float8
|
||||
------+-------------------+------------------------
|
||||
| 456 | 456
|
||||
| 4567890123456789 | 4.567890123456789e+15
|
||||
| 123 | 123
|
||||
| 4567890123456789 | 4.567890123456789e+15
|
||||
| -4567890123456789 | -4.567890123456789e+15
|
||||
SELECT q2, float8(q2) FROM INT8_TBL;
|
||||
q2 | float8
|
||||
-------------------+------------------------
|
||||
456 | 456
|
||||
4567890123456789 | 4.567890123456789e+15
|
||||
123 | 123
|
||||
4567890123456789 | 4.567890123456789e+15
|
||||
-4567890123456789 | -4.567890123456789e+15
|
||||
(5 rows)
|
||||
|
||||
SELECT 37 + q1 AS plus4 FROM INT8_TBL;
|
||||
|
@ -368,24 +368,24 @@ SELECT 37 - q1 AS minus4 FROM INT8_TBL;
|
|||
-4567890123456752
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL;
|
||||
five | twice int4
|
||||
------+------------------
|
||||
| 246
|
||||
| 246
|
||||
| 9135780246913578
|
||||
| 9135780246913578
|
||||
| 9135780246913578
|
||||
SELECT 2 * q1 AS "twice int4" FROM INT8_TBL;
|
||||
twice int4
|
||||
------------------
|
||||
246
|
||||
246
|
||||
9135780246913578
|
||||
9135780246913578
|
||||
9135780246913578
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL;
|
||||
five | twice int4
|
||||
------+------------------
|
||||
| 246
|
||||
| 246
|
||||
| 9135780246913578
|
||||
| 9135780246913578
|
||||
| 9135780246913578
|
||||
SELECT q1 * 2 AS "twice int4" FROM INT8_TBL;
|
||||
twice int4
|
||||
------------------
|
||||
246
|
||||
246
|
||||
9135780246913578
|
||||
9135780246913578
|
||||
9135780246913578
|
||||
(5 rows)
|
||||
|
||||
-- int8 op int4
|
||||
|
@ -456,178 +456,178 @@ SELECT max(q1), max(q2) FROM INT8_TBL;
|
|||
|
||||
-- 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;
|
||||
to_char_1 | to_char | to_char
|
||||
-----------+------------------------+------------------------
|
||||
| 123 | 456
|
||||
| 123 | 4,567,890,123,456,789
|
||||
| 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
|
||||
to_char | to_char
|
||||
------------------------+------------------------
|
||||
123 | 456
|
||||
123 | 4,567,890,123,456,789
|
||||
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
|
||||
(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;
|
||||
to_char_2 | to_char | to_char
|
||||
-----------+--------------------------------+--------------------------------
|
||||
| 123.000,000 | 456.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 | 4,567,890,123,456,789.000,000
|
||||
| 4,567,890,123,456,789.000,000 | -4,567,890,123,456,789.000,000
|
||||
to_char | to_char
|
||||
--------------------------------+--------------------------------
|
||||
123.000,000 | 456.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 | 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)
|
||||
|
||||
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;
|
||||
to_char_3 | to_char | to_char
|
||||
-----------+--------------------+------------------------
|
||||
| <123> | <456.000>
|
||||
| <123> | <4567890123456789.000>
|
||||
| <4567890123456789> | <123.000>
|
||||
| <4567890123456789> | <4567890123456789.000>
|
||||
| <4567890123456789> | 4567890123456789.000
|
||||
to_char | to_char
|
||||
--------------------+------------------------
|
||||
<123> | <456.000>
|
||||
<123> | <4567890123456789.000>
|
||||
<4567890123456789> | <123.000>
|
||||
<4567890123456789> | <4567890123456789.000>
|
||||
<4567890123456789> | 4567890123456789.000
|
||||
(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;
|
||||
to_char_4 | to_char | to_char
|
||||
-----------+-------------------+-------------------
|
||||
| 123- | -456
|
||||
| 123- | -4567890123456789
|
||||
| 4567890123456789- | -123
|
||||
| 4567890123456789- | -4567890123456789
|
||||
| 4567890123456789- | +4567890123456789
|
||||
to_char | to_char
|
||||
-------------------+-------------------
|
||||
123- | -456
|
||||
123- | -4567890123456789
|
||||
4567890123456789- | -123
|
||||
4567890123456789- | -4567890123456789
|
||||
4567890123456789- | +4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
|
||||
to_char_5 | to_char
|
||||
-----------+-------------------
|
||||
| 456
|
||||
| 4567890123456789
|
||||
| 123
|
||||
| 4567890123456789
|
||||
| -4567890123456789
|
||||
SELECT to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
|
||||
to_char
|
||||
-------------------
|
||||
456
|
||||
4567890123456789
|
||||
123
|
||||
4567890123456789
|
||||
-4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_6, to_char(q2, 'FMS9999999999999999') FROM INT8_TBL;
|
||||
to_char_6 | to_char
|
||||
-----------+-------------------
|
||||
| +456
|
||||
| +4567890123456789
|
||||
| +123
|
||||
| +4567890123456789
|
||||
| -4567890123456789
|
||||
SELECT to_char(q2, 'FMS9999999999999999') FROM INT8_TBL;
|
||||
to_char
|
||||
-------------------
|
||||
+456
|
||||
+4567890123456789
|
||||
+123
|
||||
+4567890123456789
|
||||
-4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_7, to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
|
||||
to_char_7 | to_char
|
||||
-----------+--------------------
|
||||
| 456TH
|
||||
| 4567890123456789TH
|
||||
| 123RD
|
||||
| 4567890123456789TH
|
||||
| <4567890123456789>
|
||||
SELECT to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
|
||||
to_char
|
||||
--------------------
|
||||
456TH
|
||||
4567890123456789TH
|
||||
123RD
|
||||
4567890123456789TH
|
||||
<4567890123456789>
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_8, to_char(q2, 'SG9999999999999999th') FROM INT8_TBL;
|
||||
to_char_8 | to_char
|
||||
-----------+---------------------
|
||||
| + 456th
|
||||
| +4567890123456789th
|
||||
| + 123rd
|
||||
| +4567890123456789th
|
||||
| -4567890123456789
|
||||
SELECT to_char(q2, 'SG9999999999999999th') FROM INT8_TBL;
|
||||
to_char
|
||||
---------------------
|
||||
+ 456th
|
||||
+4567890123456789th
|
||||
+ 123rd
|
||||
+4567890123456789th
|
||||
-4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_9, to_char(q2, '0999999999999999') FROM INT8_TBL;
|
||||
to_char_9 | to_char
|
||||
-----------+-------------------
|
||||
| 0000000000000456
|
||||
| 4567890123456789
|
||||
| 0000000000000123
|
||||
| 4567890123456789
|
||||
| -4567890123456789
|
||||
SELECT to_char(q2, '0999999999999999') FROM INT8_TBL;
|
||||
to_char
|
||||
-------------------
|
||||
0000000000000456
|
||||
4567890123456789
|
||||
0000000000000123
|
||||
4567890123456789
|
||||
-4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL;
|
||||
to_char_10 | to_char
|
||||
------------+-------------------
|
||||
| +0000000000000456
|
||||
| +4567890123456789
|
||||
| +0000000000000123
|
||||
| +4567890123456789
|
||||
| -4567890123456789
|
||||
SELECT to_char(q2, 'S0999999999999999') FROM INT8_TBL;
|
||||
to_char
|
||||
-------------------
|
||||
+0000000000000456
|
||||
+4567890123456789
|
||||
+0000000000000123
|
||||
+4567890123456789
|
||||
-4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL;
|
||||
to_char_11 | to_char
|
||||
------------+-------------------
|
||||
| 0000000000000456
|
||||
| 4567890123456789
|
||||
| 0000000000000123
|
||||
| 4567890123456789
|
||||
| -4567890123456789
|
||||
SELECT to_char(q2, 'FM0999999999999999') FROM INT8_TBL;
|
||||
to_char
|
||||
-------------------
|
||||
0000000000000456
|
||||
4567890123456789
|
||||
0000000000000123
|
||||
4567890123456789
|
||||
-4567890123456789
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
|
||||
to_char_12 | to_char
|
||||
------------+-----------------------
|
||||
| 456.000
|
||||
| 4567890123456789.000
|
||||
| 123.000
|
||||
| 4567890123456789.000
|
||||
| -4567890123456789.000
|
||||
SELECT to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
|
||||
to_char
|
||||
-----------------------
|
||||
456.000
|
||||
4567890123456789.000
|
||||
123.000
|
||||
4567890123456789.000
|
||||
-4567890123456789.000
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL;
|
||||
to_char_13 | to_char
|
||||
------------+------------------------
|
||||
| 456.000
|
||||
| 4567890123456789.000
|
||||
| 123.000
|
||||
| 4567890123456789.000
|
||||
| -4567890123456789.000
|
||||
SELECT to_char(q2, 'L9999999999999999.000') FROM INT8_TBL;
|
||||
to_char
|
||||
------------------------
|
||||
456.000
|
||||
4567890123456789.000
|
||||
123.000
|
||||
4567890123456789.000
|
||||
-4567890123456789.000
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL;
|
||||
to_char_14 | to_char
|
||||
------------+--------------------
|
||||
| 456.
|
||||
| 4567890123456789.
|
||||
| 123.
|
||||
| 4567890123456789.
|
||||
| -4567890123456789.
|
||||
SELECT to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL;
|
||||
to_char
|
||||
--------------------
|
||||
456.
|
||||
4567890123456789.
|
||||
123.
|
||||
4567890123456789.
|
||||
-4567890123456789.
|
||||
(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;
|
||||
to_char_15 | to_char
|
||||
------------+-------------------------------------------
|
||||
| +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
|
||||
| +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
|
||||
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
|
||||
-------------------------------------------
|
||||
+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
|
||||
+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
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL;
|
||||
to_char_16 | to_char
|
||||
------------+-----------------------------------------------------------
|
||||
| text 9999 "text between quote marks" 456
|
||||
| 45678 text 9012 9999 345 "text between quote marks" 6789
|
||||
| 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
|
||||
SELECT to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL;
|
||||
to_char
|
||||
-----------------------------------------------------------
|
||||
text 9999 "text between quote marks" 456
|
||||
45678 text 9012 9999 345 "text between quote marks" 6789
|
||||
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
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL;
|
||||
to_char_17 | to_char
|
||||
------------+-------------------
|
||||
| + 456
|
||||
| 456789+0123456789
|
||||
| + 123
|
||||
| 456789+0123456789
|
||||
| 456789-0123456789
|
||||
SELECT to_char(q2, '999999SG9999999999') FROM INT8_TBL;
|
||||
to_char
|
||||
-------------------
|
||||
+ 456
|
||||
456789+0123456789
|
||||
+ 123
|
||||
456789+0123456789
|
||||
456789-0123456789
|
||||
(5 rows)
|
||||
|
||||
-- check min/max values and overflow behavior
|
||||
|
|
|
@ -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');
|
||||
^
|
||||
-- test interval operators
|
||||
SELECT '' AS ten, * FROM INTERVAL_TBL;
|
||||
ten | f1
|
||||
-----+-----------------
|
||||
| 00:01:00
|
||||
| 05:00:00
|
||||
| 10 days
|
||||
| 34 years
|
||||
| 3 mons
|
||||
| -00:00:14
|
||||
| 1 day 02:03:04
|
||||
| 6 years
|
||||
| 5 mons
|
||||
| 5 mons 12:00:00
|
||||
SELECT * FROM INTERVAL_TBL;
|
||||
f1
|
||||
-----------------
|
||||
00:01:00
|
||||
05:00:00
|
||||
10 days
|
||||
34 years
|
||||
3 mons
|
||||
-00:00:14
|
||||
1 day 02:03:04
|
||||
6 years
|
||||
5 mons
|
||||
5 mons 12:00:00
|
||||
(10 rows)
|
||||
|
||||
SELECT '' AS nine, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
|
||||
nine | f1
|
||||
------+-----------------
|
||||
| 00:01:00
|
||||
| 05:00:00
|
||||
| 34 years
|
||||
| 3 mons
|
||||
| -00:00:14
|
||||
| 1 day 02:03:04
|
||||
| 6 years
|
||||
| 5 mons
|
||||
| 5 mons 12:00:00
|
||||
f1
|
||||
-----------------
|
||||
00:01:00
|
||||
05:00:00
|
||||
34 years
|
||||
3 mons
|
||||
-00:00:14
|
||||
1 day 02:03:04
|
||||
6 years
|
||||
5 mons
|
||||
5 mons 12:00:00
|
||||
(9 rows)
|
||||
|
||||
SELECT '' AS three, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
|
||||
three | f1
|
||||
-------+-----------
|
||||
| 00:01:00
|
||||
| 05:00:00
|
||||
| -00:00:14
|
||||
f1
|
||||
-----------
|
||||
00:01:00
|
||||
05:00:00
|
||||
-00:00:14
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
|
||||
three | f1
|
||||
-------+-----------
|
||||
| 00:01:00
|
||||
| 05:00:00
|
||||
| -00:00:14
|
||||
f1
|
||||
-----------
|
||||
00:01:00
|
||||
05:00:00
|
||||
-00:00:14
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS one, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
|
||||
one | f1
|
||||
-----+----------
|
||||
| 34 years
|
||||
f1
|
||||
----------
|
||||
34 years
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
|
||||
five | f1
|
||||
------+-----------------
|
||||
| 34 years
|
||||
| 3 mons
|
||||
| 6 years
|
||||
| 5 mons
|
||||
| 5 mons 12:00:00
|
||||
f1
|
||||
-----------------
|
||||
34 years
|
||||
3 mons
|
||||
6 years
|
||||
5 mons
|
||||
5 mons 12:00:00
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS nine, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
|
||||
nine | f1
|
||||
------+-----------------
|
||||
| 00:01:00
|
||||
| 05:00:00
|
||||
| 10 days
|
||||
| 34 years
|
||||
| 3 mons
|
||||
| 1 day 02:03:04
|
||||
| 6 years
|
||||
| 5 mons
|
||||
| 5 mons 12:00:00
|
||||
f1
|
||||
-----------------
|
||||
00:01:00
|
||||
05:00:00
|
||||
10 days
|
||||
34 years
|
||||
3 mons
|
||||
1 day 02:03:04
|
||||
6 years
|
||||
5 mons
|
||||
5 mons 12:00:00
|
||||
(9 rows)
|
||||
|
||||
SELECT '' AS fortyfive, r1.*, r2.*
|
||||
SELECT r1.*, r2.*
|
||||
FROM INTERVAL_TBL r1, INTERVAL_TBL r2
|
||||
WHERE r1.f1 > r2.f1
|
||||
ORDER BY r1.f1, r2.f1;
|
||||
fortyfive | f1 | f1
|
||||
-----------+-----------------+-----------------
|
||||
| 00:01:00 | -00:00:14
|
||||
| 05:00:00 | -00:00:14
|
||||
| 05:00:00 | 00:01:00
|
||||
| 1 day 02:03:04 | -00:00:14
|
||||
| 1 day 02:03:04 | 00:01:00
|
||||
| 1 day 02:03:04 | 05:00:00
|
||||
| 10 days | -00:00:14
|
||||
| 10 days | 00:01:00
|
||||
| 10 days | 05:00:00
|
||||
| 10 days | 1 day 02:03:04
|
||||
| 3 mons | -00:00:14
|
||||
| 3 mons | 00:01:00
|
||||
| 3 mons | 05:00:00
|
||||
| 3 mons | 1 day 02:03:04
|
||||
| 3 mons | 10 days
|
||||
| 5 mons | -00:00:14
|
||||
| 5 mons | 00:01:00
|
||||
| 5 mons | 05:00:00
|
||||
| 5 mons | 1 day 02:03:04
|
||||
| 5 mons | 10 days
|
||||
| 5 mons | 3 mons
|
||||
| 5 mons 12:00:00 | -00:00:14
|
||||
| 5 mons 12:00:00 | 00:01:00
|
||||
| 5 mons 12:00:00 | 05:00:00
|
||||
| 5 mons 12:00:00 | 1 day 02:03:04
|
||||
| 5 mons 12:00:00 | 10 days
|
||||
| 5 mons 12:00:00 | 3 mons
|
||||
| 5 mons 12:00:00 | 5 mons
|
||||
| 6 years | -00:00:14
|
||||
| 6 years | 00:01:00
|
||||
| 6 years | 05:00:00
|
||||
| 6 years | 1 day 02:03:04
|
||||
| 6 years | 10 days
|
||||
| 6 years | 3 mons
|
||||
| 6 years | 5 mons
|
||||
| 6 years | 5 mons 12:00:00
|
||||
| 34 years | -00:00:14
|
||||
| 34 years | 00:01:00
|
||||
| 34 years | 05:00:00
|
||||
| 34 years | 1 day 02:03:04
|
||||
| 34 years | 10 days
|
||||
| 34 years | 3 mons
|
||||
| 34 years | 5 mons
|
||||
| 34 years | 5 mons 12:00:00
|
||||
| 34 years | 6 years
|
||||
f1 | f1
|
||||
-----------------+-----------------
|
||||
00:01:00 | -00:00:14
|
||||
05:00:00 | -00:00:14
|
||||
05:00:00 | 00:01:00
|
||||
1 day 02:03:04 | -00:00:14
|
||||
1 day 02:03:04 | 00:01:00
|
||||
1 day 02:03:04 | 05:00:00
|
||||
10 days | -00:00:14
|
||||
10 days | 00:01:00
|
||||
10 days | 05:00:00
|
||||
10 days | 1 day 02:03:04
|
||||
3 mons | -00:00:14
|
||||
3 mons | 00:01:00
|
||||
3 mons | 05:00:00
|
||||
3 mons | 1 day 02:03:04
|
||||
3 mons | 10 days
|
||||
5 mons | -00:00:14
|
||||
5 mons | 00:01:00
|
||||
5 mons | 05:00:00
|
||||
5 mons | 1 day 02:03:04
|
||||
5 mons | 10 days
|
||||
5 mons | 3 mons
|
||||
5 mons 12:00:00 | -00:00:14
|
||||
5 mons 12:00:00 | 00:01:00
|
||||
5 mons 12:00:00 | 05:00:00
|
||||
5 mons 12:00:00 | 1 day 02:03:04
|
||||
5 mons 12:00:00 | 10 days
|
||||
5 mons 12:00:00 | 3 mons
|
||||
5 mons 12:00:00 | 5 mons
|
||||
6 years | -00:00:14
|
||||
6 years | 00:01:00
|
||||
6 years | 05:00:00
|
||||
6 years | 1 day 02:03:04
|
||||
6 years | 10 days
|
||||
6 years | 3 mons
|
||||
6 years | 5 mons
|
||||
6 years | 5 mons 12:00:00
|
||||
34 years | -00:00:14
|
||||
34 years | 00:01:00
|
||||
34 years | 05:00:00
|
||||
34 years | 1 day 02:03:04
|
||||
34 years | 10 days
|
||||
34 years | 3 mons
|
||||
34 years | 5 mons
|
||||
34 years | 5 mons 12:00:00
|
||||
34 years | 6 years
|
||||
(45 rows)
|
||||
|
||||
-- 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;
|
||||
SET DATESTYLE = 'postgres';
|
||||
SET IntervalStyle to postgres_verbose;
|
||||
SELECT '' AS ten, * FROM INTERVAL_TBL;
|
||||
ten | f1
|
||||
-----+-------------------------------
|
||||
| @ 1 min
|
||||
| @ 5 hours
|
||||
| @ 10 days
|
||||
| @ 34 years
|
||||
| @ 3 mons
|
||||
| @ 14 secs ago
|
||||
| @ 1 day 2 hours 3 mins 4 secs
|
||||
| @ 6 years
|
||||
| @ 5 mons
|
||||
| @ 5 mons 12 hours
|
||||
SELECT * FROM INTERVAL_TBL;
|
||||
f1
|
||||
-------------------------------
|
||||
@ 1 min
|
||||
@ 5 hours
|
||||
@ 10 days
|
||||
@ 34 years
|
||||
@ 3 mons
|
||||
@ 14 secs ago
|
||||
@ 1 day 2 hours 3 mins 4 secs
|
||||
@ 6 years
|
||||
@ 5 mons
|
||||
@ 5 mons 12 hours
|
||||
(10 rows)
|
||||
|
||||
-- test avg(interval), which is somewhat fragile since people have been
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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 ('');
|
||||
INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ');
|
||||
SELECT '' AS seven, * FROM NAME_TBL;
|
||||
seven | f1
|
||||
-------+-----------------------------------------------------------------
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
| asdfghjkl;
|
||||
| 343f%2a
|
||||
| d34aaasdf
|
||||
|
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
SELECT * FROM NAME_TBL;
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
asdfghjkl;
|
||||
343f%2a
|
||||
d34aaasdf
|
||||
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
six | f1
|
||||
-----+-----------------------------------------------------------------
|
||||
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
| asdfghjkl;
|
||||
| 343f%2a
|
||||
| d34aaasdf
|
||||
|
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
asdfghjkl;
|
||||
343f%2a
|
||||
d34aaasdf
|
||||
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
one | f1
|
||||
-----+-----------------------------------------------------------------
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
three | f1
|
||||
-------+----
|
||||
|
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
f1
|
||||
----
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
four | f1
|
||||
------+-----------------------------------------------------------------
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
|
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
three | f1
|
||||
-------+-----------------------------------------------------------------
|
||||
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
| asdfghjkl;
|
||||
| 343f%2a
|
||||
| d34aaasdf
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
asdfghjkl;
|
||||
343f%2a
|
||||
d34aaasdf
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
four | f1
|
||||
------+-----------------------------------------------------------------
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
| asdfghjkl;
|
||||
| 343f%2a
|
||||
| d34aaasdf
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
asdfghjkl;
|
||||
343f%2a
|
||||
d34aaasdf
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
|
||||
seven | f1
|
||||
-------+-----------------------------------------------------------------
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
| asdfghjkl;
|
||||
| 343f%2a
|
||||
| d34aaasdf
|
||||
|
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
asdfghjkl;
|
||||
343f%2a
|
||||
d34aaasdf
|
||||
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*';
|
||||
zero | f1
|
||||
------+----
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*';
|
||||
f1
|
||||
----
|
||||
(0 rows)
|
||||
|
||||
SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]';
|
||||
three | f1
|
||||
-------+-----------------------------------------------------------------
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
| 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
| 343f%2a
|
||||
| d34aaasdf
|
||||
| 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]';
|
||||
f1
|
||||
-----------------------------------------------------------------
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq
|
||||
343f%2a
|
||||
d34aaasdf
|
||||
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*';
|
||||
two | f1
|
||||
-----+------------
|
||||
| asdfghjkl;
|
||||
| d34aaasdf
|
||||
SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*';
|
||||
f1
|
||||
------------
|
||||
asdfghjkl;
|
||||
d34aaasdf
|
||||
(2 rows)
|
||||
|
||||
DROP TABLE NAME_TBL;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -12,20 +12,20 @@ INSERT INTO TEMP_FLOAT (f1)
|
|||
SELECT float8(f1) FROM INT4_TBL;
|
||||
INSERT INTO TEMP_FLOAT (f1)
|
||||
SELECT float8(f1) FROM INT2_TBL;
|
||||
SELECT '' AS ten, f1 FROM TEMP_FLOAT
|
||||
SELECT f1 FROM TEMP_FLOAT
|
||||
ORDER BY f1;
|
||||
ten | f1
|
||||
-----+-------------
|
||||
| -2147483647
|
||||
| -123456
|
||||
| -32767
|
||||
| -1234
|
||||
| 0
|
||||
| 0
|
||||
| 1234
|
||||
| 32767
|
||||
| 123456
|
||||
| 2147483647
|
||||
f1
|
||||
-------------
|
||||
-2147483647
|
||||
-123456
|
||||
-32767
|
||||
-1234
|
||||
0
|
||||
0
|
||||
1234
|
||||
32767
|
||||
123456
|
||||
2147483647
|
||||
(10 rows)
|
||||
|
||||
-- int4
|
||||
|
@ -35,19 +35,19 @@ INSERT INTO TEMP_INT4 (f1)
|
|||
WHERE (f1 > -2147483647) AND (f1 < 2147483647);
|
||||
INSERT INTO TEMP_INT4 (f1)
|
||||
SELECT int4(f1) FROM INT2_TBL;
|
||||
SELECT '' AS nine, f1 FROM TEMP_INT4
|
||||
SELECT f1 FROM TEMP_INT4
|
||||
ORDER BY f1;
|
||||
nine | f1
|
||||
------+--------
|
||||
| -32767
|
||||
| -1234
|
||||
| -1004
|
||||
| -35
|
||||
| 0
|
||||
| 0
|
||||
| 0
|
||||
| 1234
|
||||
| 32767
|
||||
f1
|
||||
--------
|
||||
-32767
|
||||
-1234
|
||||
-1004
|
||||
-35
|
||||
0
|
||||
0
|
||||
0
|
||||
1234
|
||||
32767
|
||||
(9 rows)
|
||||
|
||||
-- int2
|
||||
|
@ -58,15 +58,15 @@ INSERT INTO TEMP_INT2 (f1)
|
|||
INSERT INTO TEMP_INT2 (f1)
|
||||
SELECT int2(f1) FROM INT4_TBL
|
||||
WHERE (f1 >= -32767) AND (f1 <= 32767);
|
||||
SELECT '' AS five, f1 FROM TEMP_INT2
|
||||
SELECT f1 FROM TEMP_INT2
|
||||
ORDER BY f1;
|
||||
five | f1
|
||||
------+-------
|
||||
| -1004
|
||||
| -35
|
||||
| 0
|
||||
| 0
|
||||
| 0
|
||||
f1
|
||||
-------
|
||||
-1004
|
||||
-35
|
||||
0
|
||||
0
|
||||
0
|
||||
(5 rows)
|
||||
|
||||
--
|
||||
|
|
|
@ -52,71 +52,71 @@ INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
|
|||
ERROR: value "-23582358720398502385" is out of range for type oid
|
||||
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
|
||||
^
|
||||
SELECT '' AS six, * FROM OID_TBL;
|
||||
six | f1
|
||||
-----+------------
|
||||
| 1234
|
||||
| 1235
|
||||
| 987
|
||||
| 4294966256
|
||||
| 99999999
|
||||
| 5
|
||||
| 10
|
||||
| 15
|
||||
SELECT * FROM OID_TBL;
|
||||
f1
|
||||
------------
|
||||
1234
|
||||
1235
|
||||
987
|
||||
4294966256
|
||||
99999999
|
||||
5
|
||||
10
|
||||
15
|
||||
(8 rows)
|
||||
|
||||
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234;
|
||||
one | f1
|
||||
-----+------
|
||||
| 1234
|
||||
SELECT o.* FROM OID_TBL o WHERE o.f1 = 1234;
|
||||
f1
|
||||
------
|
||||
1234
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, o.* FROM OID_TBL o WHERE o.f1 <> '1234';
|
||||
five | f1
|
||||
------+------------
|
||||
| 1235
|
||||
| 987
|
||||
| 4294966256
|
||||
| 99999999
|
||||
| 5
|
||||
| 10
|
||||
| 15
|
||||
SELECT o.* FROM OID_TBL o WHERE o.f1 <> '1234';
|
||||
f1
|
||||
------------
|
||||
1235
|
||||
987
|
||||
4294966256
|
||||
99999999
|
||||
5
|
||||
10
|
||||
15
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234';
|
||||
three | f1
|
||||
-------+------
|
||||
| 1234
|
||||
| 987
|
||||
| 5
|
||||
| 10
|
||||
| 15
|
||||
SELECT o.* FROM OID_TBL o WHERE o.f1 <= '1234';
|
||||
f1
|
||||
------
|
||||
1234
|
||||
987
|
||||
5
|
||||
10
|
||||
15
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234';
|
||||
two | f1
|
||||
-----+-----
|
||||
| 987
|
||||
| 5
|
||||
| 10
|
||||
| 15
|
||||
SELECT o.* FROM OID_TBL o WHERE o.f1 < '1234';
|
||||
f1
|
||||
-----
|
||||
987
|
||||
5
|
||||
10
|
||||
15
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234';
|
||||
four | f1
|
||||
------+------------
|
||||
| 1234
|
||||
| 1235
|
||||
| 4294966256
|
||||
| 99999999
|
||||
SELECT o.* FROM OID_TBL o WHERE o.f1 >= '1234';
|
||||
f1
|
||||
------------
|
||||
1234
|
||||
1235
|
||||
4294966256
|
||||
99999999
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 > '1234';
|
||||
three | f1
|
||||
-------+------------
|
||||
| 1235
|
||||
| 4294966256
|
||||
| 99999999
|
||||
SELECT o.* FROM OID_TBL o WHERE o.f1 > '1234';
|
||||
f1
|
||||
------------
|
||||
1235
|
||||
4294966256
|
||||
99999999
|
||||
(3 rows)
|
||||
|
||||
DROP TABLE OID_TBL;
|
||||
|
|
|
@ -33,50 +33,50 @@ INSERT INTO PATH_TBL VALUES ('(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)]');
|
||||
^
|
||||
SELECT '' AS count, f1 AS open_path FROM PATH_TBL WHERE isopen(f1);
|
||||
count | open_path
|
||||
-------+---------------------------
|
||||
| [(1,2),(3,4)]
|
||||
| [(0,0),(3,0),(4,5),(1,6)]
|
||||
| [(1,2),(3,4)]
|
||||
| [(11,12),(13,14)]
|
||||
SELECT f1 AS open_path FROM PATH_TBL WHERE isopen(f1);
|
||||
open_path
|
||||
---------------------------
|
||||
[(1,2),(3,4)]
|
||||
[(0,0),(3,0),(4,5),(1,6)]
|
||||
[(1,2),(3,4)]
|
||||
[(11,12),(13,14)]
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS count, f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1);
|
||||
count | closed_path
|
||||
-------+-------------------
|
||||
| ((1,2),(3,4))
|
||||
| ((1,2),(3,4))
|
||||
| ((1,2),(3,4))
|
||||
| ((10,20))
|
||||
| ((11,12),(13,14))
|
||||
SELECT f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1);
|
||||
closed_path
|
||||
-------------------
|
||||
((1,2),(3,4))
|
||||
((1,2),(3,4))
|
||||
((1,2),(3,4))
|
||||
((10,20))
|
||||
((11,12),(13,14))
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS count, pclose(f1) AS closed_path FROM PATH_TBL;
|
||||
count | closed_path
|
||||
-------+---------------------------
|
||||
| ((1,2),(3,4))
|
||||
| ((1,2),(3,4))
|
||||
| ((0,0),(3,0),(4,5),(1,6))
|
||||
| ((1,2),(3,4))
|
||||
| ((1,2),(3,4))
|
||||
| ((1,2),(3,4))
|
||||
| ((10,20))
|
||||
| ((11,12),(13,14))
|
||||
| ((11,12),(13,14))
|
||||
SELECT pclose(f1) AS closed_path FROM PATH_TBL;
|
||||
closed_path
|
||||
---------------------------
|
||||
((1,2),(3,4))
|
||||
((1,2),(3,4))
|
||||
((0,0),(3,0),(4,5),(1,6))
|
||||
((1,2),(3,4))
|
||||
((1,2),(3,4))
|
||||
((1,2),(3,4))
|
||||
((10,20))
|
||||
((11,12),(13,14))
|
||||
((11,12),(13,14))
|
||||
(9 rows)
|
||||
|
||||
SELECT '' AS count, popen(f1) AS open_path FROM PATH_TBL;
|
||||
count | open_path
|
||||
-------+---------------------------
|
||||
| [(1,2),(3,4)]
|
||||
| [(1,2),(3,4)]
|
||||
| [(0,0),(3,0),(4,5),(1,6)]
|
||||
| [(1,2),(3,4)]
|
||||
| [(1,2),(3,4)]
|
||||
| [(1,2),(3,4)]
|
||||
| [(10,20)]
|
||||
| [(11,12),(13,14)]
|
||||
| [(11,12),(13,14)]
|
||||
SELECT popen(f1) AS open_path FROM PATH_TBL;
|
||||
open_path
|
||||
---------------------------
|
||||
[(1,2),(3,4)]
|
||||
[(1,2),(3,4)]
|
||||
[(0,0),(3,0),(4,5),(1,6)]
|
||||
[(1,2),(3,4)]
|
||||
[(1,2),(3,4)]
|
||||
[(1,2),(3,4)]
|
||||
[(10,20)]
|
||||
[(11,12),(13,14)]
|
||||
[(11,12),(13,14)]
|
||||
(9 rows)
|
||||
|
||||
|
|
|
@ -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
|
||||
LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)');
|
||||
^
|
||||
SELECT '' AS six, * FROM POINT_TBL;
|
||||
six | f1
|
||||
-----+-------------------
|
||||
| (0,0)
|
||||
| (-10,0)
|
||||
| (-3,4)
|
||||
| (5.1,34.5)
|
||||
| (-5,-12)
|
||||
| (1e-300,-1e-300)
|
||||
| (1e+300,Infinity)
|
||||
| (Infinity,1e+300)
|
||||
| (NaN,NaN)
|
||||
| (10,10)
|
||||
SELECT * FROM POINT_TBL;
|
||||
f1
|
||||
-------------------
|
||||
(0,0)
|
||||
(-10,0)
|
||||
(-3,4)
|
||||
(5.1,34.5)
|
||||
(-5,-12)
|
||||
(1e-300,-1e-300)
|
||||
(1e+300,Infinity)
|
||||
(Infinity,1e+300)
|
||||
(NaN,NaN)
|
||||
(10,10)
|
||||
(10 rows)
|
||||
|
||||
-- left of
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)';
|
||||
three | f1
|
||||
-------+----------
|
||||
| (-10,0)
|
||||
| (-3,4)
|
||||
| (-5,-12)
|
||||
SELECT p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)';
|
||||
f1
|
||||
----------
|
||||
(-10,0)
|
||||
(-3,4)
|
||||
(-5,-12)
|
||||
(3 rows)
|
||||
|
||||
-- right of
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1;
|
||||
three | f1
|
||||
-------+----------
|
||||
| (-10,0)
|
||||
| (-3,4)
|
||||
| (-5,-12)
|
||||
SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1;
|
||||
f1
|
||||
----------
|
||||
(-10,0)
|
||||
(-3,4)
|
||||
(-5,-12)
|
||||
(3 rows)
|
||||
|
||||
-- above
|
||||
SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1;
|
||||
one | f1
|
||||
-----+----------
|
||||
| (-5,-12)
|
||||
SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1;
|
||||
f1
|
||||
----------
|
||||
(-5,-12)
|
||||
(1 row)
|
||||
|
||||
-- below
|
||||
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)';
|
||||
one | f1
|
||||
-----+----------
|
||||
| (-5,-12)
|
||||
SELECT p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)';
|
||||
f1
|
||||
----------
|
||||
(-5,-12)
|
||||
(1 row)
|
||||
|
||||
-- equal
|
||||
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
|
||||
one | f1
|
||||
-----+------------
|
||||
| (5.1,34.5)
|
||||
SELECT p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
|
||||
f1
|
||||
------------
|
||||
(5.1,34.5)
|
||||
(1 row)
|
||||
|
||||
-- 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)';
|
||||
three | f1
|
||||
-------+------------
|
||||
| (0,0)
|
||||
| (5.1,34.5)
|
||||
| (10,10)
|
||||
f1
|
||||
------------
|
||||
(0,0)
|
||||
(5.1,34.5)
|
||||
(10,10)
|
||||
(3 rows)
|
||||
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p
|
||||
SELECT p.* FROM POINT_TBL p
|
||||
WHERE box '(0,0,100,100)' @> p.f1;
|
||||
three | f1
|
||||
-------+------------
|
||||
| (0,0)
|
||||
| (5.1,34.5)
|
||||
| (10,10)
|
||||
f1
|
||||
------------
|
||||
(0,0)
|
||||
(5.1,34.5)
|
||||
(10,10)
|
||||
(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)';
|
||||
three | f1
|
||||
-------+-------------------
|
||||
| (-10,0)
|
||||
| (-3,4)
|
||||
| (-5,-12)
|
||||
| (1e-300,-1e-300)
|
||||
| (1e+300,Infinity)
|
||||
| (Infinity,1e+300)
|
||||
| (NaN,NaN)
|
||||
f1
|
||||
-------------------
|
||||
(-10,0)
|
||||
(-3,4)
|
||||
(-5,-12)
|
||||
(1e-300,-1e-300)
|
||||
(1e+300,Infinity)
|
||||
(Infinity,1e+300)
|
||||
(NaN,NaN)
|
||||
(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)]';
|
||||
two | f1
|
||||
-----+------------------
|
||||
| (0,0)
|
||||
| (-10,0)
|
||||
| (1e-300,-1e-300)
|
||||
f1
|
||||
------------------
|
||||
(0,0)
|
||||
(-10,0)
|
||||
(1e-300,-1e-300)
|
||||
(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;
|
||||
three | f1
|
||||
-------+-------------------
|
||||
| (-10,0)
|
||||
| (-3,4)
|
||||
| (-5,-12)
|
||||
| (1e-300,-1e-300)
|
||||
| (1e+300,Infinity)
|
||||
| (Infinity,1e+300)
|
||||
| (NaN,NaN)
|
||||
f1
|
||||
-------------------
|
||||
(-10,0)
|
||||
(-3,4)
|
||||
(-5,-12)
|
||||
(1e-300,-1e-300)
|
||||
(1e+300,Infinity)
|
||||
(Infinity,1e+300)
|
||||
(NaN,NaN)
|
||||
(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
|
||||
ORDER BY dist;
|
||||
six | f1 | dist
|
||||
-----+-------------------+----------------------
|
||||
| (0,0) | 0
|
||||
| (1e-300,-1e-300) | 1.4142135623731e-300
|
||||
| (-3,4) | 5
|
||||
| (-10,0) | 10
|
||||
| (-5,-12) | 13
|
||||
| (10,10) | 14.142135623731
|
||||
| (5.1,34.5) | 34.8749193547455
|
||||
| (1e+300,Infinity) | Infinity
|
||||
| (Infinity,1e+300) | Infinity
|
||||
| (NaN,NaN) | NaN
|
||||
f1 | dist
|
||||
-------------------+----------------------
|
||||
(0,0) | 0
|
||||
(1e-300,-1e-300) | 1.4142135623731e-300
|
||||
(-3,4) | 5
|
||||
(-10,0) | 10
|
||||
(-5,-12) | 13
|
||||
(10,10) | 14.142135623731
|
||||
(5.1,34.5) | 34.8749193547455
|
||||
(1e+300,Infinity) | Infinity
|
||||
(Infinity,1e+300) | Infinity
|
||||
(NaN,NaN) | NaN
|
||||
(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
|
||||
ORDER BY dist, p1.f1[0], p2.f1[0];
|
||||
thirtysix | point1 | point2 | dist
|
||||
-----------+-------------------+-------------------+----------------------
|
||||
| (-10,0) | (-10,0) | 0
|
||||
| (-5,-12) | (-5,-12) | 0
|
||||
| (-3,4) | (-3,4) | 0
|
||||
| (0,0) | (0,0) | 0
|
||||
| (1e-300,-1e-300) | (1e-300,-1e-300) | 0
|
||||
| (5.1,34.5) | (5.1,34.5) | 0
|
||||
| (10,10) | (10,10) | 0
|
||||
| (0,0) | (1e-300,-1e-300) | 1.4142135623731e-300
|
||||
| (1e-300,-1e-300) | (0,0) | 1.4142135623731e-300
|
||||
| (-3,4) | (0,0) | 5
|
||||
| (-3,4) | (1e-300,-1e-300) | 5
|
||||
| (0,0) | (-3,4) | 5
|
||||
| (1e-300,-1e-300) | (-3,4) | 5
|
||||
| (-10,0) | (-3,4) | 8.06225774829855
|
||||
| (-3,4) | (-10,0) | 8.06225774829855
|
||||
| (-10,0) | (0,0) | 10
|
||||
| (-10,0) | (1e-300,-1e-300) | 10
|
||||
| (0,0) | (-10,0) | 10
|
||||
| (1e-300,-1e-300) | (-10,0) | 10
|
||||
| (-10,0) | (-5,-12) | 13
|
||||
| (-5,-12) | (-10,0) | 13
|
||||
| (-5,-12) | (0,0) | 13
|
||||
| (-5,-12) | (1e-300,-1e-300) | 13
|
||||
| (0,0) | (-5,-12) | 13
|
||||
| (1e-300,-1e-300) | (-5,-12) | 13
|
||||
| (0,0) | (10,10) | 14.142135623731
|
||||
| (1e-300,-1e-300) | (10,10) | 14.142135623731
|
||||
| (10,10) | (0,0) | 14.142135623731
|
||||
| (10,10) | (1e-300,-1e-300) | 14.142135623731
|
||||
| (-3,4) | (10,10) | 14.3178210632764
|
||||
| (10,10) | (-3,4) | 14.3178210632764
|
||||
| (-5,-12) | (-3,4) | 16.1245154965971
|
||||
| (-3,4) | (-5,-12) | 16.1245154965971
|
||||
| (-10,0) | (10,10) | 22.3606797749979
|
||||
| (10,10) | (-10,0) | 22.3606797749979
|
||||
| (5.1,34.5) | (10,10) | 24.9851956166046
|
||||
| (10,10) | (5.1,34.5) | 24.9851956166046
|
||||
| (-5,-12) | (10,10) | 26.6270539113887
|
||||
| (10,10) | (-5,-12) | 26.6270539113887
|
||||
| (-3,4) | (5.1,34.5) | 31.5572495632937
|
||||
| (5.1,34.5) | (-3,4) | 31.5572495632937
|
||||
| (0,0) | (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) | (1e-300,-1e-300) | 34.8749193547455
|
||||
| (-10,0) | (5.1,34.5) | 37.6597928831267
|
||||
| (5.1,34.5) | (-10,0) | 37.6597928831267
|
||||
| (-5,-12) | (5.1,34.5) | 47.5842410888311
|
||||
| (5.1,34.5) | (-5,-12) | 47.5842410888311
|
||||
| (-10,0) | (1e+300,Infinity) | Infinity
|
||||
| (-10,0) | (Infinity,1e+300) | Infinity
|
||||
| (-5,-12) | (1e+300,Infinity) | Infinity
|
||||
| (-5,-12) | (Infinity,1e+300) | Infinity
|
||||
| (-3,4) | (1e+300,Infinity) | Infinity
|
||||
| (-3,4) | (Infinity,1e+300) | Infinity
|
||||
| (0,0) | (1e+300,Infinity) | Infinity
|
||||
| (0,0) | (Infinity,1e+300) | Infinity
|
||||
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
|
||||
| (1e-300,-1e-300) | (Infinity,1e+300) | Infinity
|
||||
| (5.1,34.5) | (1e+300,Infinity) | Infinity
|
||||
| (5.1,34.5) | (Infinity,1e+300) | Infinity
|
||||
| (10,10) | (1e+300,Infinity) | Infinity
|
||||
| (10,10) | (Infinity,1e+300) | Infinity
|
||||
| (1e+300,Infinity) | (-10,0) | Infinity
|
||||
| (1e+300,Infinity) | (-5,-12) | Infinity
|
||||
| (1e+300,Infinity) | (-3,4) | Infinity
|
||||
| (1e+300,Infinity) | (0,0) | Infinity
|
||||
| (1e+300,Infinity) | (1e-300,-1e-300) | Infinity
|
||||
| (1e+300,Infinity) | (5.1,34.5) | Infinity
|
||||
| (1e+300,Infinity) | (10,10) | Infinity
|
||||
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity
|
||||
| (Infinity,1e+300) | (-10,0) | Infinity
|
||||
| (Infinity,1e+300) | (-5,-12) | Infinity
|
||||
| (Infinity,1e+300) | (-3,4) | Infinity
|
||||
| (Infinity,1e+300) | (0,0) | Infinity
|
||||
| (Infinity,1e+300) | (1e-300,-1e-300) | Infinity
|
||||
| (Infinity,1e+300) | (5.1,34.5) | Infinity
|
||||
| (Infinity,1e+300) | (10,10) | Infinity
|
||||
| (Infinity,1e+300) | (1e+300,Infinity) | Infinity
|
||||
| (-10,0) | (NaN,NaN) | NaN
|
||||
| (-5,-12) | (NaN,NaN) | NaN
|
||||
| (-3,4) | (NaN,NaN) | NaN
|
||||
| (0,0) | (NaN,NaN) | NaN
|
||||
| (1e-300,-1e-300) | (NaN,NaN) | NaN
|
||||
| (5.1,34.5) | (NaN,NaN) | NaN
|
||||
| (10,10) | (NaN,NaN) | NaN
|
||||
| (1e+300,Infinity) | (1e+300,Infinity) | NaN
|
||||
| (1e+300,Infinity) | (NaN,NaN) | NaN
|
||||
| (Infinity,1e+300) | (Infinity,1e+300) | NaN
|
||||
| (Infinity,1e+300) | (NaN,NaN) | NaN
|
||||
| (NaN,NaN) | (-10,0) | NaN
|
||||
| (NaN,NaN) | (-5,-12) | NaN
|
||||
| (NaN,NaN) | (-3,4) | NaN
|
||||
| (NaN,NaN) | (0,0) | NaN
|
||||
| (NaN,NaN) | (1e-300,-1e-300) | NaN
|
||||
| (NaN,NaN) | (5.1,34.5) | NaN
|
||||
| (NaN,NaN) | (10,10) | NaN
|
||||
| (NaN,NaN) | (1e+300,Infinity) | NaN
|
||||
| (NaN,NaN) | (Infinity,1e+300) | NaN
|
||||
| (NaN,NaN) | (NaN,NaN) | NaN
|
||||
point1 | point2 | dist
|
||||
-------------------+-------------------+----------------------
|
||||
(-10,0) | (-10,0) | 0
|
||||
(-5,-12) | (-5,-12) | 0
|
||||
(-3,4) | (-3,4) | 0
|
||||
(0,0) | (0,0) | 0
|
||||
(1e-300,-1e-300) | (1e-300,-1e-300) | 0
|
||||
(5.1,34.5) | (5.1,34.5) | 0
|
||||
(10,10) | (10,10) | 0
|
||||
(0,0) | (1e-300,-1e-300) | 1.4142135623731e-300
|
||||
(1e-300,-1e-300) | (0,0) | 1.4142135623731e-300
|
||||
(-3,4) | (0,0) | 5
|
||||
(-3,4) | (1e-300,-1e-300) | 5
|
||||
(0,0) | (-3,4) | 5
|
||||
(1e-300,-1e-300) | (-3,4) | 5
|
||||
(-10,0) | (-3,4) | 8.06225774829855
|
||||
(-3,4) | (-10,0) | 8.06225774829855
|
||||
(-10,0) | (0,0) | 10
|
||||
(-10,0) | (1e-300,-1e-300) | 10
|
||||
(0,0) | (-10,0) | 10
|
||||
(1e-300,-1e-300) | (-10,0) | 10
|
||||
(-10,0) | (-5,-12) | 13
|
||||
(-5,-12) | (-10,0) | 13
|
||||
(-5,-12) | (0,0) | 13
|
||||
(-5,-12) | (1e-300,-1e-300) | 13
|
||||
(0,0) | (-5,-12) | 13
|
||||
(1e-300,-1e-300) | (-5,-12) | 13
|
||||
(0,0) | (10,10) | 14.142135623731
|
||||
(1e-300,-1e-300) | (10,10) | 14.142135623731
|
||||
(10,10) | (0,0) | 14.142135623731
|
||||
(10,10) | (1e-300,-1e-300) | 14.142135623731
|
||||
(-3,4) | (10,10) | 14.3178210632764
|
||||
(10,10) | (-3,4) | 14.3178210632764
|
||||
(-5,-12) | (-3,4) | 16.1245154965971
|
||||
(-3,4) | (-5,-12) | 16.1245154965971
|
||||
(-10,0) | (10,10) | 22.3606797749979
|
||||
(10,10) | (-10,0) | 22.3606797749979
|
||||
(5.1,34.5) | (10,10) | 24.9851956166046
|
||||
(10,10) | (5.1,34.5) | 24.9851956166046
|
||||
(-5,-12) | (10,10) | 26.6270539113887
|
||||
(10,10) | (-5,-12) | 26.6270539113887
|
||||
(-3,4) | (5.1,34.5) | 31.5572495632937
|
||||
(5.1,34.5) | (-3,4) | 31.5572495632937
|
||||
(0,0) | (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) | (1e-300,-1e-300) | 34.8749193547455
|
||||
(-10,0) | (5.1,34.5) | 37.6597928831267
|
||||
(5.1,34.5) | (-10,0) | 37.6597928831267
|
||||
(-5,-12) | (5.1,34.5) | 47.5842410888311
|
||||
(5.1,34.5) | (-5,-12) | 47.5842410888311
|
||||
(-10,0) | (1e+300,Infinity) | Infinity
|
||||
(-10,0) | (Infinity,1e+300) | Infinity
|
||||
(-5,-12) | (1e+300,Infinity) | Infinity
|
||||
(-5,-12) | (Infinity,1e+300) | Infinity
|
||||
(-3,4) | (1e+300,Infinity) | Infinity
|
||||
(-3,4) | (Infinity,1e+300) | Infinity
|
||||
(0,0) | (1e+300,Infinity) | Infinity
|
||||
(0,0) | (Infinity,1e+300) | Infinity
|
||||
(1e-300,-1e-300) | (1e+300,Infinity) | Infinity
|
||||
(1e-300,-1e-300) | (Infinity,1e+300) | Infinity
|
||||
(5.1,34.5) | (1e+300,Infinity) | Infinity
|
||||
(5.1,34.5) | (Infinity,1e+300) | Infinity
|
||||
(10,10) | (1e+300,Infinity) | Infinity
|
||||
(10,10) | (Infinity,1e+300) | Infinity
|
||||
(1e+300,Infinity) | (-10,0) | Infinity
|
||||
(1e+300,Infinity) | (-5,-12) | Infinity
|
||||
(1e+300,Infinity) | (-3,4) | Infinity
|
||||
(1e+300,Infinity) | (0,0) | Infinity
|
||||
(1e+300,Infinity) | (1e-300,-1e-300) | Infinity
|
||||
(1e+300,Infinity) | (5.1,34.5) | Infinity
|
||||
(1e+300,Infinity) | (10,10) | Infinity
|
||||
(1e+300,Infinity) | (Infinity,1e+300) | Infinity
|
||||
(Infinity,1e+300) | (-10,0) | Infinity
|
||||
(Infinity,1e+300) | (-5,-12) | Infinity
|
||||
(Infinity,1e+300) | (-3,4) | Infinity
|
||||
(Infinity,1e+300) | (0,0) | Infinity
|
||||
(Infinity,1e+300) | (1e-300,-1e-300) | Infinity
|
||||
(Infinity,1e+300) | (5.1,34.5) | Infinity
|
||||
(Infinity,1e+300) | (10,10) | Infinity
|
||||
(Infinity,1e+300) | (1e+300,Infinity) | Infinity
|
||||
(-10,0) | (NaN,NaN) | NaN
|
||||
(-5,-12) | (NaN,NaN) | NaN
|
||||
(-3,4) | (NaN,NaN) | NaN
|
||||
(0,0) | (NaN,NaN) | NaN
|
||||
(1e-300,-1e-300) | (NaN,NaN) | NaN
|
||||
(5.1,34.5) | (NaN,NaN) | NaN
|
||||
(10,10) | (NaN,NaN) | NaN
|
||||
(1e+300,Infinity) | (1e+300,Infinity) | NaN
|
||||
(1e+300,Infinity) | (NaN,NaN) | NaN
|
||||
(Infinity,1e+300) | (Infinity,1e+300) | NaN
|
||||
(Infinity,1e+300) | (NaN,NaN) | NaN
|
||||
(NaN,NaN) | (-10,0) | NaN
|
||||
(NaN,NaN) | (-5,-12) | NaN
|
||||
(NaN,NaN) | (-3,4) | NaN
|
||||
(NaN,NaN) | (0,0) | NaN
|
||||
(NaN,NaN) | (1e-300,-1e-300) | NaN
|
||||
(NaN,NaN) | (5.1,34.5) | NaN
|
||||
(NaN,NaN) | (10,10) | NaN
|
||||
(NaN,NaN) | (1e+300,Infinity) | NaN
|
||||
(NaN,NaN) | (Infinity,1e+300) | NaN
|
||||
(NaN,NaN) | (NaN,NaN) | NaN
|
||||
(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
|
||||
WHERE (p1.f1 <-> p2.f1) > 3;
|
||||
thirty | point1 | point2
|
||||
--------+-------------------+-------------------
|
||||
| (0,0) | (-10,0)
|
||||
| (0,0) | (-3,4)
|
||||
| (0,0) | (5.1,34.5)
|
||||
| (0,0) | (-5,-12)
|
||||
| (0,0) | (1e+300,Infinity)
|
||||
| (0,0) | (Infinity,1e+300)
|
||||
| (0,0) | (NaN,NaN)
|
||||
| (0,0) | (10,10)
|
||||
| (-10,0) | (0,0)
|
||||
| (-10,0) | (-3,4)
|
||||
| (-10,0) | (5.1,34.5)
|
||||
| (-10,0) | (-5,-12)
|
||||
| (-10,0) | (1e-300,-1e-300)
|
||||
| (-10,0) | (1e+300,Infinity)
|
||||
| (-10,0) | (Infinity,1e+300)
|
||||
| (-10,0) | (NaN,NaN)
|
||||
| (-10,0) | (10,10)
|
||||
| (-3,4) | (0,0)
|
||||
| (-3,4) | (-10,0)
|
||||
| (-3,4) | (5.1,34.5)
|
||||
| (-3,4) | (-5,-12)
|
||||
| (-3,4) | (1e-300,-1e-300)
|
||||
| (-3,4) | (1e+300,Infinity)
|
||||
| (-3,4) | (Infinity,1e+300)
|
||||
| (-3,4) | (NaN,NaN)
|
||||
| (-3,4) | (10,10)
|
||||
| (5.1,34.5) | (0,0)
|
||||
| (5.1,34.5) | (-10,0)
|
||||
| (5.1,34.5) | (-3,4)
|
||||
| (5.1,34.5) | (-5,-12)
|
||||
| (5.1,34.5) | (1e-300,-1e-300)
|
||||
| (5.1,34.5) | (1e+300,Infinity)
|
||||
| (5.1,34.5) | (Infinity,1e+300)
|
||||
| (5.1,34.5) | (NaN,NaN)
|
||||
| (5.1,34.5) | (10,10)
|
||||
| (-5,-12) | (0,0)
|
||||
| (-5,-12) | (-10,0)
|
||||
| (-5,-12) | (-3,4)
|
||||
| (-5,-12) | (5.1,34.5)
|
||||
| (-5,-12) | (1e-300,-1e-300)
|
||||
| (-5,-12) | (1e+300,Infinity)
|
||||
| (-5,-12) | (Infinity,1e+300)
|
||||
| (-5,-12) | (NaN,NaN)
|
||||
| (-5,-12) | (10,10)
|
||||
| (1e-300,-1e-300) | (-10,0)
|
||||
| (1e-300,-1e-300) | (-3,4)
|
||||
| (1e-300,-1e-300) | (5.1,34.5)
|
||||
| (1e-300,-1e-300) | (-5,-12)
|
||||
| (1e-300,-1e-300) | (1e+300,Infinity)
|
||||
| (1e-300,-1e-300) | (Infinity,1e+300)
|
||||
| (1e-300,-1e-300) | (NaN,NaN)
|
||||
| (1e-300,-1e-300) | (10,10)
|
||||
| (1e+300,Infinity) | (0,0)
|
||||
| (1e+300,Infinity) | (-10,0)
|
||||
| (1e+300,Infinity) | (-3,4)
|
||||
| (1e+300,Infinity) | (5.1,34.5)
|
||||
| (1e+300,Infinity) | (-5,-12)
|
||||
| (1e+300,Infinity) | (1e-300,-1e-300)
|
||||
| (1e+300,Infinity) | (1e+300,Infinity)
|
||||
| (1e+300,Infinity) | (Infinity,1e+300)
|
||||
| (1e+300,Infinity) | (NaN,NaN)
|
||||
| (1e+300,Infinity) | (10,10)
|
||||
| (Infinity,1e+300) | (0,0)
|
||||
| (Infinity,1e+300) | (-10,0)
|
||||
| (Infinity,1e+300) | (-3,4)
|
||||
| (Infinity,1e+300) | (5.1,34.5)
|
||||
| (Infinity,1e+300) | (-5,-12)
|
||||
| (Infinity,1e+300) | (1e-300,-1e-300)
|
||||
| (Infinity,1e+300) | (1e+300,Infinity)
|
||||
| (Infinity,1e+300) | (Infinity,1e+300)
|
||||
| (Infinity,1e+300) | (NaN,NaN)
|
||||
| (Infinity,1e+300) | (10,10)
|
||||
| (NaN,NaN) | (0,0)
|
||||
| (NaN,NaN) | (-10,0)
|
||||
| (NaN,NaN) | (-3,4)
|
||||
| (NaN,NaN) | (5.1,34.5)
|
||||
| (NaN,NaN) | (-5,-12)
|
||||
| (NaN,NaN) | (1e-300,-1e-300)
|
||||
| (NaN,NaN) | (1e+300,Infinity)
|
||||
| (NaN,NaN) | (Infinity,1e+300)
|
||||
| (NaN,NaN) | (NaN,NaN)
|
||||
| (NaN,NaN) | (10,10)
|
||||
| (10,10) | (0,0)
|
||||
| (10,10) | (-10,0)
|
||||
| (10,10) | (-3,4)
|
||||
| (10,10) | (5.1,34.5)
|
||||
| (10,10) | (-5,-12)
|
||||
| (10,10) | (1e-300,-1e-300)
|
||||
| (10,10) | (1e+300,Infinity)
|
||||
| (10,10) | (Infinity,1e+300)
|
||||
| (10,10) | (NaN,NaN)
|
||||
point1 | point2
|
||||
-------------------+-------------------
|
||||
(0,0) | (-10,0)
|
||||
(0,0) | (-3,4)
|
||||
(0,0) | (5.1,34.5)
|
||||
(0,0) | (-5,-12)
|
||||
(0,0) | (1e+300,Infinity)
|
||||
(0,0) | (Infinity,1e+300)
|
||||
(0,0) | (NaN,NaN)
|
||||
(0,0) | (10,10)
|
||||
(-10,0) | (0,0)
|
||||
(-10,0) | (-3,4)
|
||||
(-10,0) | (5.1,34.5)
|
||||
(-10,0) | (-5,-12)
|
||||
(-10,0) | (1e-300,-1e-300)
|
||||
(-10,0) | (1e+300,Infinity)
|
||||
(-10,0) | (Infinity,1e+300)
|
||||
(-10,0) | (NaN,NaN)
|
||||
(-10,0) | (10,10)
|
||||
(-3,4) | (0,0)
|
||||
(-3,4) | (-10,0)
|
||||
(-3,4) | (5.1,34.5)
|
||||
(-3,4) | (-5,-12)
|
||||
(-3,4) | (1e-300,-1e-300)
|
||||
(-3,4) | (1e+300,Infinity)
|
||||
(-3,4) | (Infinity,1e+300)
|
||||
(-3,4) | (NaN,NaN)
|
||||
(-3,4) | (10,10)
|
||||
(5.1,34.5) | (0,0)
|
||||
(5.1,34.5) | (-10,0)
|
||||
(5.1,34.5) | (-3,4)
|
||||
(5.1,34.5) | (-5,-12)
|
||||
(5.1,34.5) | (1e-300,-1e-300)
|
||||
(5.1,34.5) | (1e+300,Infinity)
|
||||
(5.1,34.5) | (Infinity,1e+300)
|
||||
(5.1,34.5) | (NaN,NaN)
|
||||
(5.1,34.5) | (10,10)
|
||||
(-5,-12) | (0,0)
|
||||
(-5,-12) | (-10,0)
|
||||
(-5,-12) | (-3,4)
|
||||
(-5,-12) | (5.1,34.5)
|
||||
(-5,-12) | (1e-300,-1e-300)
|
||||
(-5,-12) | (1e+300,Infinity)
|
||||
(-5,-12) | (Infinity,1e+300)
|
||||
(-5,-12) | (NaN,NaN)
|
||||
(-5,-12) | (10,10)
|
||||
(1e-300,-1e-300) | (-10,0)
|
||||
(1e-300,-1e-300) | (-3,4)
|
||||
(1e-300,-1e-300) | (5.1,34.5)
|
||||
(1e-300,-1e-300) | (-5,-12)
|
||||
(1e-300,-1e-300) | (1e+300,Infinity)
|
||||
(1e-300,-1e-300) | (Infinity,1e+300)
|
||||
(1e-300,-1e-300) | (NaN,NaN)
|
||||
(1e-300,-1e-300) | (10,10)
|
||||
(1e+300,Infinity) | (0,0)
|
||||
(1e+300,Infinity) | (-10,0)
|
||||
(1e+300,Infinity) | (-3,4)
|
||||
(1e+300,Infinity) | (5.1,34.5)
|
||||
(1e+300,Infinity) | (-5,-12)
|
||||
(1e+300,Infinity) | (1e-300,-1e-300)
|
||||
(1e+300,Infinity) | (1e+300,Infinity)
|
||||
(1e+300,Infinity) | (Infinity,1e+300)
|
||||
(1e+300,Infinity) | (NaN,NaN)
|
||||
(1e+300,Infinity) | (10,10)
|
||||
(Infinity,1e+300) | (0,0)
|
||||
(Infinity,1e+300) | (-10,0)
|
||||
(Infinity,1e+300) | (-3,4)
|
||||
(Infinity,1e+300) | (5.1,34.5)
|
||||
(Infinity,1e+300) | (-5,-12)
|
||||
(Infinity,1e+300) | (1e-300,-1e-300)
|
||||
(Infinity,1e+300) | (1e+300,Infinity)
|
||||
(Infinity,1e+300) | (Infinity,1e+300)
|
||||
(Infinity,1e+300) | (NaN,NaN)
|
||||
(Infinity,1e+300) | (10,10)
|
||||
(NaN,NaN) | (0,0)
|
||||
(NaN,NaN) | (-10,0)
|
||||
(NaN,NaN) | (-3,4)
|
||||
(NaN,NaN) | (5.1,34.5)
|
||||
(NaN,NaN) | (-5,-12)
|
||||
(NaN,NaN) | (1e-300,-1e-300)
|
||||
(NaN,NaN) | (1e+300,Infinity)
|
||||
(NaN,NaN) | (Infinity,1e+300)
|
||||
(NaN,NaN) | (NaN,NaN)
|
||||
(NaN,NaN) | (10,10)
|
||||
(10,10) | (0,0)
|
||||
(10,10) | (-10,0)
|
||||
(10,10) | (-3,4)
|
||||
(10,10) | (5.1,34.5)
|
||||
(10,10) | (-5,-12)
|
||||
(10,10) | (1e-300,-1e-300)
|
||||
(10,10) | (1e+300,Infinity)
|
||||
(10,10) | (Infinity,1e+300)
|
||||
(10,10) | (NaN,NaN)
|
||||
(91 rows)
|
||||
|
||||
-- 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
|
||||
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
|
||||
ORDER BY distance, p1.f1[0], p2.f1[0];
|
||||
fifteen | point1 | point2 | distance
|
||||
---------+-------------------+-------------------+------------------
|
||||
| (-3,4) | (0,0) | 5
|
||||
| (-3,4) | (1e-300,-1e-300) | 5
|
||||
| (-10,0) | (-3,4) | 8.06225774829855
|
||||
| (-10,0) | (0,0) | 10
|
||||
| (-10,0) | (1e-300,-1e-300) | 10
|
||||
| (-10,0) | (-5,-12) | 13
|
||||
| (-5,-12) | (0,0) | 13
|
||||
| (-5,-12) | (1e-300,-1e-300) | 13
|
||||
| (0,0) | (10,10) | 14.142135623731
|
||||
| (1e-300,-1e-300) | (10,10) | 14.142135623731
|
||||
| (-3,4) | (10,10) | 14.3178210632764
|
||||
| (-5,-12) | (-3,4) | 16.1245154965971
|
||||
| (-10,0) | (10,10) | 22.3606797749979
|
||||
| (5.1,34.5) | (10,10) | 24.9851956166046
|
||||
| (-5,-12) | (10,10) | 26.6270539113887
|
||||
| (-3,4) | (5.1,34.5) | 31.5572495632937
|
||||
| (0,0) | (5.1,34.5) | 34.8749193547455
|
||||
| (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455
|
||||
| (-10,0) | (5.1,34.5) | 37.6597928831267
|
||||
| (-5,-12) | (5.1,34.5) | 47.5842410888311
|
||||
| (-10,0) | (1e+300,Infinity) | Infinity
|
||||
| (-10,0) | (Infinity,1e+300) | Infinity
|
||||
| (-5,-12) | (1e+300,Infinity) | Infinity
|
||||
| (-5,-12) | (Infinity,1e+300) | Infinity
|
||||
| (-3,4) | (1e+300,Infinity) | Infinity
|
||||
| (-3,4) | (Infinity,1e+300) | Infinity
|
||||
| (0,0) | (1e+300,Infinity) | Infinity
|
||||
| (0,0) | (Infinity,1e+300) | Infinity
|
||||
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
|
||||
| (1e-300,-1e-300) | (Infinity,1e+300) | Infinity
|
||||
| (5.1,34.5) | (1e+300,Infinity) | Infinity
|
||||
| (5.1,34.5) | (Infinity,1e+300) | Infinity
|
||||
| (10,10) | (1e+300,Infinity) | Infinity
|
||||
| (10,10) | (Infinity,1e+300) | Infinity
|
||||
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity
|
||||
point1 | point2 | distance
|
||||
-------------------+-------------------+------------------
|
||||
(-3,4) | (0,0) | 5
|
||||
(-3,4) | (1e-300,-1e-300) | 5
|
||||
(-10,0) | (-3,4) | 8.06225774829855
|
||||
(-10,0) | (0,0) | 10
|
||||
(-10,0) | (1e-300,-1e-300) | 10
|
||||
(-10,0) | (-5,-12) | 13
|
||||
(-5,-12) | (0,0) | 13
|
||||
(-5,-12) | (1e-300,-1e-300) | 13
|
||||
(0,0) | (10,10) | 14.142135623731
|
||||
(1e-300,-1e-300) | (10,10) | 14.142135623731
|
||||
(-3,4) | (10,10) | 14.3178210632764
|
||||
(-5,-12) | (-3,4) | 16.1245154965971
|
||||
(-10,0) | (10,10) | 22.3606797749979
|
||||
(5.1,34.5) | (10,10) | 24.9851956166046
|
||||
(-5,-12) | (10,10) | 26.6270539113887
|
||||
(-3,4) | (5.1,34.5) | 31.5572495632937
|
||||
(0,0) | (5.1,34.5) | 34.8749193547455
|
||||
(1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455
|
||||
(-10,0) | (5.1,34.5) | 37.6597928831267
|
||||
(-5,-12) | (5.1,34.5) | 47.5842410888311
|
||||
(-10,0) | (1e+300,Infinity) | Infinity
|
||||
(-10,0) | (Infinity,1e+300) | Infinity
|
||||
(-5,-12) | (1e+300,Infinity) | Infinity
|
||||
(-5,-12) | (Infinity,1e+300) | Infinity
|
||||
(-3,4) | (1e+300,Infinity) | Infinity
|
||||
(-3,4) | (Infinity,1e+300) | Infinity
|
||||
(0,0) | (1e+300,Infinity) | Infinity
|
||||
(0,0) | (Infinity,1e+300) | Infinity
|
||||
(1e-300,-1e-300) | (1e+300,Infinity) | Infinity
|
||||
(1e-300,-1e-300) | (Infinity,1e+300) | Infinity
|
||||
(5.1,34.5) | (1e+300,Infinity) | Infinity
|
||||
(5.1,34.5) | (Infinity,1e+300) | Infinity
|
||||
(10,10) | (1e+300,Infinity) | Infinity
|
||||
(10,10) | (Infinity,1e+300) | Infinity
|
||||
(1e+300,Infinity) | (Infinity,1e+300) | Infinity
|
||||
(35 rows)
|
||||
|
||||
-- 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
|
||||
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 |>> p2.f1
|
||||
ORDER BY distance;
|
||||
three | point1 | point2 | distance
|
||||
-------+-------------------+-------------------+------------------
|
||||
| (-3,4) | (0,0) | 5
|
||||
| (-3,4) | (1e-300,-1e-300) | 5
|
||||
| (-10,0) | (-5,-12) | 13
|
||||
| (5.1,34.5) | (10,10) | 24.9851956166046
|
||||
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity
|
||||
point1 | point2 | distance
|
||||
-------------------+-------------------+------------------
|
||||
(-3,4) | (0,0) | 5
|
||||
(-3,4) | (1e-300,-1e-300) | 5
|
||||
(-10,0) | (-5,-12) | 13
|
||||
(5.1,34.5) | (10,10) | 24.9851956166046
|
||||
(1e+300,Infinity) | (Infinity,1e+300) | Infinity
|
||||
(5 rows)
|
||||
|
||||
-- Test that GiST indexes provide same behavior as sequential scan
|
||||
|
|
|
@ -33,16 +33,16 @@ INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
|
|||
ERROR: invalid input syntax for type polygon: "asdf"
|
||||
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
|
||||
^
|
||||
SELECT '' AS four, * FROM POLYGON_TBL;
|
||||
four | f1
|
||||
------+----------------------------
|
||||
| ((2,0),(2,4),(0,0))
|
||||
| ((3,1),(3,3),(1,0))
|
||||
| ((1,2),(3,4),(5,6),(7,8))
|
||||
| ((7,8),(5,6),(3,4),(1,2))
|
||||
| ((1,2),(7,8),(5,6),(3,-4))
|
||||
| ((0,0))
|
||||
| ((0,1),(0,1))
|
||||
SELECT * FROM POLYGON_TBL;
|
||||
f1
|
||||
----------------------------
|
||||
((2,0),(2,4),(0,0))
|
||||
((3,1),(3,3),(1,0))
|
||||
((1,2),(3,4),(5,6),(7,8))
|
||||
((7,8),(5,6),(3,4),(1,2))
|
||||
((1,2),(7,8),(5,6),(3,-4))
|
||||
((0,0))
|
||||
((0,1),(0,1))
|
||||
(7 rows)
|
||||
|
||||
--
|
||||
|
|
|
@ -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 (6, 7, 8);
|
||||
INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL);
|
||||
SELECT '' AS eight, * FROM SUBSELECT_TBL;
|
||||
eight | f1 | f2 | f3
|
||||
-------+----+----+----
|
||||
| 1 | 2 | 3
|
||||
| 2 | 3 | 4
|
||||
| 3 | 4 | 5
|
||||
| 1 | 1 | 1
|
||||
| 2 | 2 | 2
|
||||
| 3 | 3 | 3
|
||||
| 6 | 7 | 8
|
||||
| 8 | 9 |
|
||||
SELECT * FROM SUBSELECT_TBL;
|
||||
f1 | f2 | f3
|
||||
----+----+----
|
||||
1 | 2 | 3
|
||||
2 | 3 | 4
|
||||
3 | 4 | 5
|
||||
1 | 1 | 1
|
||||
2 | 2 | 2
|
||||
3 | 3 | 3
|
||||
6 | 7 | 8
|
||||
8 | 9 |
|
||||
(8 rows)
|
||||
|
||||
-- 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);
|
||||
two | Constant Select
|
||||
-----+-----------------
|
||||
| 1
|
||||
| 1
|
||||
Constant Select
|
||||
-----------------
|
||||
1
|
||||
1
|
||||
(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);
|
||||
six | Uncorrelated Field
|
||||
-----+--------------------
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
Uncorrelated Field
|
||||
--------------------
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
(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
|
||||
f2 IN (SELECT f1 FROM SUBSELECT_TBL));
|
||||
six | Uncorrelated Field
|
||||
-----+--------------------
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
Uncorrelated Field
|
||||
--------------------
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS three, f1, f2
|
||||
SELECT f1, f2
|
||||
FROM SUBSELECT_TBL
|
||||
WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
|
||||
WHERE f3 IS NOT NULL);
|
||||
three | f1 | f2
|
||||
-------+----+----
|
||||
| 1 | 2
|
||||
| 6 | 7
|
||||
| 8 | 9
|
||||
f1 | f2
|
||||
----+----
|
||||
1 | 2
|
||||
6 | 7
|
||||
8 | 9
|
||||
(3 rows)
|
||||
|
||||
-- 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
|
||||
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f1 = upper.f1);
|
||||
six | Correlated Field | Second Field
|
||||
-----+------------------+--------------
|
||||
| 1 | 2
|
||||
| 2 | 3
|
||||
| 3 | 4
|
||||
| 1 | 1
|
||||
| 2 | 2
|
||||
| 3 | 3
|
||||
Correlated Field | Second Field
|
||||
------------------+--------------
|
||||
1 | 2
|
||||
2 | 3
|
||||
3 | 4
|
||||
1 | 1
|
||||
2 | 2
|
||||
3 | 3
|
||||
(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
|
||||
WHERE f1 IN
|
||||
(SELECT f2 FROM SUBSELECT_TBL WHERE CAST(upper.f2 AS float) = f3);
|
||||
six | Correlated Field | Second Field
|
||||
-----+------------------+--------------
|
||||
| 2 | 4
|
||||
| 3 | 5
|
||||
| 1 | 1
|
||||
| 2 | 2
|
||||
| 3 | 3
|
||||
Correlated Field | Second Field
|
||||
------------------+--------------
|
||||
2 | 4
|
||||
3 | 5
|
||||
1 | 1
|
||||
2 | 2
|
||||
3 | 3
|
||||
(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
|
||||
WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL
|
||||
WHERE f2 = CAST(f3 AS integer));
|
||||
six | Correlated Field | Second Field
|
||||
-----+------------------+--------------
|
||||
| 1 | 3
|
||||
| 2 | 4
|
||||
| 3 | 5
|
||||
| 6 | 8
|
||||
Correlated Field | Second Field
|
||||
------------------+--------------
|
||||
1 | 3
|
||||
2 | 4
|
||||
3 | 5
|
||||
6 | 8
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS five, f1 AS "Correlated Field"
|
||||
SELECT f1 AS "Correlated Field"
|
||||
FROM SUBSELECT_TBL
|
||||
WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
|
||||
WHERE f3 IS NOT NULL);
|
||||
five | Correlated Field
|
||||
------+------------------
|
||||
| 2
|
||||
| 3
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
Correlated Field
|
||||
------------------
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
(5 rows)
|
||||
|
||||
--
|
||||
-- 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
|
||||
WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL
|
||||
WHERE f1 != ss.f1 AND f1 < 2147483647);
|
||||
eight | Correlated Field | Second Field
|
||||
-------+------------------+--------------
|
||||
| 2 | 4
|
||||
| 3 | 5
|
||||
| 2 | 2
|
||||
| 3 | 3
|
||||
| 6 | 8
|
||||
| 8 |
|
||||
Correlated Field | Second Field
|
||||
------------------+--------------
|
||||
2 | 4
|
||||
3 | 5
|
||||
2 | 2
|
||||
3 | 3
|
||||
6 | 8
|
||||
8 |
|
||||
(6 rows)
|
||||
|
||||
select q1, float8(count(*)) / (select count(*) from int8_tbl)
|
||||
|
|
|
@ -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);
|
||||
INSERT INTO TEXT_TBL VALUES ('doh!');
|
||||
INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor');
|
||||
SELECT '' AS two, * FROM TEXT_TBL;
|
||||
two | f1
|
||||
-----+-------------------
|
||||
| doh!
|
||||
| hi de ho neighbor
|
||||
SELECT * FROM TEXT_TBL;
|
||||
f1
|
||||
-------------------
|
||||
doh!
|
||||
hi de ho neighbor
|
||||
(2 rows)
|
||||
|
||||
-- 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
|
@ -14,79 +14,79 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('');
|
|||
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
|
||||
ERROR: value too long for type character varying(1)
|
||||
INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
|
||||
SELECT '' AS seven, * FROM VARCHAR_TBL;
|
||||
seven | f1
|
||||
-------+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <> 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| a
|
||||
f1
|
||||
----
|
||||
a
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
five | f1
|
||||
------+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| c
|
||||
f1
|
||||
----
|
||||
c
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 >= 'a';
|
||||
two | f1
|
||||
-----+----
|
||||
| a
|
||||
| c
|
||||
f1
|
||||
----
|
||||
a
|
||||
c
|
||||
(2 rows)
|
||||
|
||||
DROP TABLE VARCHAR_TBL;
|
||||
|
@ -100,12 +100,12 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
|
|||
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
|
||||
ERROR: value too long for type character varying(4)
|
||||
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
|
||||
SELECT '' AS four, * FROM VARCHAR_TBL;
|
||||
four | f1
|
||||
------+------
|
||||
| a
|
||||
| ab
|
||||
| abcd
|
||||
| abcd
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
f1
|
||||
------
|
||||
a
|
||||
ab
|
||||
abcd
|
||||
abcd
|
||||
(4 rows)
|
||||
|
||||
|
|
|
@ -14,79 +14,79 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('');
|
|||
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
|
||||
ERROR: value too long for type character varying(1)
|
||||
INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
|
||||
SELECT '' AS seven, * FROM VARCHAR_TBL;
|
||||
seven | f1
|
||||
-------+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <> 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| a
|
||||
f1
|
||||
----
|
||||
a
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
five | f1
|
||||
------+----
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| a
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
f1
|
||||
----
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| A
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
c
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 >= 'a';
|
||||
two | f1
|
||||
-----+----
|
||||
| a
|
||||
| A
|
||||
| c
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
c
|
||||
(3 rows)
|
||||
|
||||
DROP TABLE VARCHAR_TBL;
|
||||
|
@ -100,12 +100,12 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
|
|||
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
|
||||
ERROR: value too long for type character varying(4)
|
||||
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
|
||||
SELECT '' AS four, * FROM VARCHAR_TBL;
|
||||
four | f1
|
||||
------+------
|
||||
| a
|
||||
| ab
|
||||
| abcd
|
||||
| abcd
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
f1
|
||||
------
|
||||
a
|
||||
ab
|
||||
abcd
|
||||
abcd
|
||||
(4 rows)
|
||||
|
||||
|
|
|
@ -14,79 +14,79 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('');
|
|||
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
|
||||
ERROR: value too long for type character varying(1)
|
||||
INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
|
||||
SELECT '' AS seven, * FROM VARCHAR_TBL;
|
||||
seven | f1
|
||||
-------+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(7 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <> 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
|
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| a
|
||||
f1
|
||||
----
|
||||
a
|
||||
(1 row)
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
five | f1
|
||||
------+----
|
||||
|
|
||||
(1 row)
|
||||
f1
|
||||
----
|
||||
|
||||
(1 rows)
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
six | f1
|
||||
-----+----
|
||||
| a
|
||||
|
|
||||
f1
|
||||
----
|
||||
a
|
||||
|
||||
(2 rows)
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
one | f1
|
||||
-----+----
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| c
|
||||
f1
|
||||
----
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
c
|
||||
(5 rows)
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 >= 'a';
|
||||
two | f1
|
||||
-----+----
|
||||
| a
|
||||
| A
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| c
|
||||
f1
|
||||
----
|
||||
a
|
||||
A
|
||||
1
|
||||
2
|
||||
3
|
||||
c
|
||||
(6 rows)
|
||||
|
||||
DROP TABLE VARCHAR_TBL;
|
||||
|
@ -100,12 +100,12 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
|
|||
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
|
||||
ERROR: value too long for type character varying(4)
|
||||
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
|
||||
SELECT '' AS four, * FROM VARCHAR_TBL;
|
||||
four | f1
|
||||
------+------
|
||||
| a
|
||||
| ab
|
||||
| abcd
|
||||
| abcd
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
f1
|
||||
------
|
||||
a
|
||||
ab
|
||||
abcd
|
||||
abcd
|
||||
(4 rows)
|
||||
|
||||
|
|
|
@ -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 VALUES (3, null, 1.0);
|
||||
|
||||
SELECT '' AS five, * FROM DEFAULT_TBL;
|
||||
SELECT * FROM DEFAULT_TBL;
|
||||
|
||||
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 (NULL);
|
||||
|
||||
SELECT '' AS four, * FROM DEFAULTEXPR_TBL;
|
||||
SELECT * FROM DEFAULTEXPR_TBL;
|
||||
|
||||
-- syntax errors
|
||||
-- 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 (1);
|
||||
|
||||
SELECT '' AS three, * FROM CHECK_TBL;
|
||||
SELECT * FROM CHECK_TBL;
|
||||
|
||||
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 (7, 'check ok', 7);
|
||||
|
||||
SELECT '' AS two, * from CHECK2_TBL;
|
||||
SELECT * from CHECK2_TBL;
|
||||
|
||||
--
|
||||
-- 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);
|
||||
|
||||
SELECT '' AS zero, * FROM INSERT_TBL;
|
||||
SELECT * FROM INSERT_TBL;
|
||||
|
||||
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(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(x,y) VALUES (5, 'check failed');
|
||||
INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
|
||||
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
|
||||
|
||||
SELECT '' AS six, * FROM INSERT_TBL;
|
||||
SELECT * FROM INSERT_TBL;
|
||||
|
||||
SELECT 'seven' AS one, nextval('insert_seq');
|
||||
|
||||
|
@ -124,7 +124,7 @@ SELECT 'eight' AS one, currval('insert_seq');
|
|||
-- was wrong:
|
||||
INSERT INTO INSERT_TBL VALUES (null, null, null);
|
||||
|
||||
SELECT '' AS nine, * FROM INSERT_TBL;
|
||||
SELECT * FROM INSERT_TBL;
|
||||
|
||||
--
|
||||
-- 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 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(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';
|
||||
|
||||
SELECT '' AS four, * FROM INSERT_TBL;
|
||||
SELECT * FROM INSERT_TBL;
|
||||
|
||||
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';
|
||||
|
||||
SELECT '' AS two, * FROM COPY_TBL;
|
||||
SELECT * FROM COPY_TBL;
|
||||
|
||||
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 (t) VALUES ('six');
|
||||
|
||||
SELECT '' AS four, * FROM PRIMARY_TBL;
|
||||
SELECT * FROM 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 (t) VALUES ('six');
|
||||
|
||||
SELECT '' AS three, * FROM PRIMARY_TBL;
|
||||
SELECT * FROM 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
|
||||
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;
|
||||
|
||||
|
@ -311,7 +311,7 @@ INSERT INTO UNIQUE_TBL VALUES (1, 'one');
|
|||
INSERT INTO UNIQUE_TBL VALUES (5, 'one');
|
||||
INSERT INTO UNIQUE_TBL (t) VALUES ('six');
|
||||
|
||||
SELECT '' AS five, * FROM UNIQUE_TBL;
|
||||
SELECT * FROM UNIQUE_TBL;
|
||||
|
||||
DROP TABLE UNIQUE_TBL;
|
||||
|
||||
|
|
|
@ -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 (x) VALUES ('marc');
|
||||
INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0);
|
||||
SELECT '' AS five, * FROM DEFAULT_TBL;
|
||||
five | i | x | f
|
||||
------+-----+--------+---------
|
||||
| 1 | thomas | 57.0613
|
||||
| 1 | bruce | 123.456
|
||||
| 2 | vadim | 987.654
|
||||
| 100 | marc | 123.456
|
||||
| 3 | | 1
|
||||
SELECT * FROM DEFAULT_TBL;
|
||||
i | x | f
|
||||
-----+--------+---------
|
||||
1 | thomas | 57.0613
|
||||
1 | bruce | 123.456
|
||||
2 | vadim | 987.654
|
||||
100 | marc | 123.456
|
||||
3 | | 1
|
||||
(5 rows)
|
||||
|
||||
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 (i2) VALUES (-4);
|
||||
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL);
|
||||
SELECT '' AS four, * FROM DEFAULTEXPR_TBL;
|
||||
four | i1 | i2
|
||||
------+-----+----
|
||||
| -1 | -2
|
||||
| -3 | 1
|
||||
| 102 | -4
|
||||
| 102 |
|
||||
SELECT * FROM DEFAULTEXPR_TBL;
|
||||
i1 | i2
|
||||
-----+----
|
||||
-1 | -2
|
||||
-3 | 1
|
||||
102 | -4
|
||||
102 |
|
||||
(4 rows)
|
||||
|
||||
-- syntax errors
|
||||
|
@ -76,12 +76,12 @@ INSERT INTO CHECK_TBL VALUES (6);
|
|||
INSERT INTO CHECK_TBL VALUES (1);
|
||||
ERROR: new row for relation "check_tbl" violates check constraint "check_con"
|
||||
DETAIL: Failing row contains (1).
|
||||
SELECT '' AS three, * FROM CHECK_TBL;
|
||||
three | x
|
||||
-------+---
|
||||
| 5
|
||||
| 4
|
||||
| 6
|
||||
SELECT * FROM CHECK_TBL;
|
||||
x
|
||||
---
|
||||
5
|
||||
4
|
||||
6
|
||||
(3 rows)
|
||||
|
||||
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"
|
||||
DETAIL: Failing row contains (6, check failed, 11).
|
||||
INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
|
||||
SELECT '' AS two, * from CHECK2_TBL;
|
||||
two | x | y | z
|
||||
-----+---+----------+----
|
||||
| 4 | check ok | -2
|
||||
| 7 | check ok | 7
|
||||
SELECT * from CHECK2_TBL;
|
||||
x | y | z
|
||||
---+----------+----
|
||||
4 | check ok | -2
|
||||
7 | check ok | 7
|
||||
(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);
|
||||
ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_con"
|
||||
DETAIL: Failing row contains (2, -NULL-, -2).
|
||||
SELECT '' AS zero, * FROM INSERT_TBL;
|
||||
zero | x | y | z
|
||||
------+---+---+---
|
||||
SELECT * FROM INSERT_TBL;
|
||||
x | y | z
|
||||
---+---+---
|
||||
(0 rows)
|
||||
|
||||
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).
|
||||
INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7);
|
||||
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
|
||||
SELECT '' AS four, * FROM INSERT_TBL;
|
||||
four | x | y | z
|
||||
------+---+---------------+----
|
||||
| 3 | Y | -3
|
||||
| 7 | -NULL- | -7
|
||||
| 7 | !check failed | -7
|
||||
| 4 | -!NULL- | -4
|
||||
SELECT * FROM INSERT_TBL;
|
||||
x | y | z
|
||||
---+---------------+----
|
||||
3 | Y | -3
|
||||
7 | -NULL- | -7
|
||||
7 | !check failed | -7
|
||||
4 | -!NULL- | -4
|
||||
(4 rows)
|
||||
|
||||
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).
|
||||
INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
|
||||
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
|
||||
SELECT '' AS six, * FROM INSERT_TBL;
|
||||
six | x | y | z
|
||||
-----+---+---------------+----
|
||||
| 3 | Y | -3
|
||||
| 7 | -NULL- | -7
|
||||
| 7 | !check failed | -7
|
||||
| 4 | -!NULL- | -4
|
||||
| 5 | !check failed | -5
|
||||
| 6 | -!NULL- | -6
|
||||
SELECT * FROM INSERT_TBL;
|
||||
x | y | z
|
||||
---+---------------+----
|
||||
3 | Y | -3
|
||||
7 | -NULL- | -7
|
||||
7 | !check failed | -7
|
||||
4 | -!NULL- | -4
|
||||
5 | !check failed | -5
|
||||
6 | -!NULL- | -6
|
||||
(6 rows)
|
||||
|
||||
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
|
||||
-- was wrong:
|
||||
INSERT INTO INSERT_TBL VALUES (null, null, null);
|
||||
SELECT '' AS nine, * FROM INSERT_TBL;
|
||||
nine | x | y | z
|
||||
------+---+---------------+----
|
||||
| 3 | Y | -3
|
||||
| 7 | -NULL- | -7
|
||||
| 7 | !check failed | -7
|
||||
| 4 | -!NULL- | -4
|
||||
| 5 | !check failed | -5
|
||||
| 6 | -!NULL- | -6
|
||||
| | |
|
||||
SELECT * FROM INSERT_TBL;
|
||||
x | y | z
|
||||
---+---------------+----
|
||||
3 | Y | -3
|
||||
7 | -NULL- | -7
|
||||
7 | !check failed | -7
|
||||
4 | -!NULL- | -4
|
||||
5 | !check failed | -5
|
||||
6 | -!NULL- | -6
|
||||
| |
|
||||
(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 (null, 'try again', null);
|
||||
INSERT INTO INSERT_TBL(y) select yd from tmp;
|
||||
SELECT '' AS three, * FROM INSERT_TBL;
|
||||
three | x | y | z
|
||||
-------+---+---------------+----
|
||||
| 4 | Y | -4
|
||||
| 5 | !check failed | -5
|
||||
| 6 | try again | -6
|
||||
SELECT * FROM INSERT_TBL;
|
||||
x | y | z
|
||||
---+---------------+----
|
||||
4 | Y | -4
|
||||
5 | !check failed | -5
|
||||
6 | try again | -6
|
||||
(3 rows)
|
||||
|
||||
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';
|
||||
ERROR: new row for relation "insert_tbl" violates check constraint "insert_tbl_con"
|
||||
DETAIL: Failing row contains (8, try again, -8).
|
||||
SELECT '' AS four, * FROM INSERT_TBL;
|
||||
four | x | y | z
|
||||
------+---+---------------+----
|
||||
| 4 | Y | -4
|
||||
| 5 | !check failed | -5
|
||||
| 6 | try again | -6
|
||||
| | try again |
|
||||
| 7 | try again | -7
|
||||
SELECT * FROM INSERT_TBL;
|
||||
x | y | z
|
||||
---+---------------+----
|
||||
4 | Y | -4
|
||||
5 | !check failed | -5
|
||||
6 | try again | -6
|
||||
| try again |
|
||||
7 | try again | -7
|
||||
(5 rows)
|
||||
|
||||
DROP TABLE tmp;
|
||||
|
@ -347,11 +347,11 @@ CREATE TABLE COPY_TBL (x INT, y TEXT, z INT,
|
|||
CONSTRAINT COPY_CON
|
||||
CHECK (x > 3 AND y <> 'check failed' AND x < 7 ));
|
||||
COPY COPY_TBL FROM '@abs_srcdir@/data/constro.data';
|
||||
SELECT '' AS two, * FROM COPY_TBL;
|
||||
two | x | y | z
|
||||
-----+---+---------------+---
|
||||
| 4 | !check failed | 5
|
||||
| 6 | OK | 4
|
||||
SELECT * FROM COPY_TBL;
|
||||
x | y | z
|
||||
---+---------------+---
|
||||
4 | !check failed | 5
|
||||
6 | OK | 4
|
||||
(2 rows)
|
||||
|
||||
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');
|
||||
ERROR: null value in column "i" of relation "primary_tbl" violates not-null constraint
|
||||
DETAIL: Failing row contains (null, six).
|
||||
SELECT '' AS four, * FROM PRIMARY_TBL;
|
||||
four | i | t
|
||||
------+---+-------
|
||||
| 1 | one
|
||||
| 2 | two
|
||||
| 4 | three
|
||||
| 5 | one
|
||||
SELECT * FROM PRIMARY_TBL;
|
||||
i | t
|
||||
---+-------
|
||||
1 | one
|
||||
2 | two
|
||||
4 | three
|
||||
5 | one
|
||||
(4 rows)
|
||||
|
||||
DROP TABLE PRIMARY_TBL;
|
||||
|
@ -399,14 +399,14 @@ INSERT INTO PRIMARY_TBL VALUES (5, 'one');
|
|||
INSERT INTO PRIMARY_TBL (t) VALUES ('six');
|
||||
ERROR: null value in column "i" of relation "primary_tbl" violates not-null constraint
|
||||
DETAIL: Failing row contains (null, six).
|
||||
SELECT '' AS three, * FROM PRIMARY_TBL;
|
||||
three | i | t
|
||||
-------+---+-------
|
||||
| 1 | one
|
||||
| 2 | two
|
||||
| 1 | three
|
||||
| 4 | three
|
||||
| 5 | one
|
||||
SELECT * FROM PRIMARY_TBL;
|
||||
i | t
|
||||
---+-------
|
||||
1 | one
|
||||
2 | two
|
||||
1 | three
|
||||
4 | three
|
||||
5 | one
|
||||
(5 rows)
|
||||
|
||||
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';
|
||||
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.
|
||||
SELECT '' AS five, * FROM UNIQUE_TBL;
|
||||
five | i | t
|
||||
------+---+--------------------
|
||||
| 1 | one
|
||||
| 2 | two
|
||||
| 4 | four
|
||||
| | six
|
||||
| | seven
|
||||
| 5 | five-upsert-update
|
||||
| 6 | six-upsert-insert
|
||||
SELECT * FROM UNIQUE_TBL;
|
||||
i | t
|
||||
---+--------------------
|
||||
1 | one
|
||||
2 | two
|
||||
4 | four
|
||||
| six
|
||||
| seven
|
||||
5 | five-upsert-update
|
||||
6 | six-upsert-insert
|
||||
(7 rows)
|
||||
|
||||
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.
|
||||
INSERT INTO UNIQUE_TBL VALUES (5, 'one');
|
||||
INSERT INTO UNIQUE_TBL (t) VALUES ('six');
|
||||
SELECT '' AS five, * FROM UNIQUE_TBL;
|
||||
five | i | t
|
||||
------+---+-------
|
||||
| 1 | one
|
||||
| 2 | two
|
||||
| 1 | three
|
||||
| 5 | one
|
||||
| | six
|
||||
SELECT * FROM UNIQUE_TBL;
|
||||
i | t
|
||||
---+-------
|
||||
1 | one
|
||||
2 | two
|
||||
1 | three
|
||||
5 | one
|
||||
| six
|
||||
(5 rows)
|
||||
|
||||
DROP TABLE UNIQUE_TBL;
|
||||
|
|
|
@ -101,25 +101,25 @@ INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');
|
|||
|
||||
|
||||
-- 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
|
||||
WHERE f1 = bool 'true';
|
||||
|
||||
|
||||
SELECT '' AS t_3, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 <> bool 'false';
|
||||
|
||||
SELECT '' AS zero, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE booleq(bool 'false', f1);
|
||||
|
||||
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
|
||||
|
||||
SELECT '' AS f_1, BOOLTBL1.*
|
||||
SELECT BOOLTBL1.*
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 = bool 'false';
|
||||
|
||||
|
@ -140,25 +140,25 @@ INSERT INTO BOOLTBL2 (f1)
|
|||
VALUES (bool 'XXX');
|
||||
|
||||
-- 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
|
||||
WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
|
||||
|
||||
|
||||
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
|
||||
|
||||
|
||||
SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
|
||||
|
||||
|
||||
SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
|
||||
SELECT BOOLTBL1.*, BOOLTBL2.*
|
||||
FROM BOOLTBL1, BOOLTBL2
|
||||
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
|
||||
ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
|
||||
|
@ -169,35 +169,35 @@ SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
|
|||
-- - thomas 2000-01-04
|
||||
--
|
||||
|
||||
SELECT '' AS "True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS TRUE;
|
||||
|
||||
SELECT '' AS "Not False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS NOT FALSE;
|
||||
|
||||
SELECT '' AS "False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS FALSE;
|
||||
|
||||
SELECT '' AS "Not True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL1
|
||||
WHERE f1 IS NOT TRUE;
|
||||
|
||||
SELECT '' AS "True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS TRUE;
|
||||
|
||||
SELECT '' AS "Not False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS NOT FALSE;
|
||||
|
||||
SELECT '' AS "False", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS FALSE;
|
||||
|
||||
SELECT '' AS "Not True", f1
|
||||
SELECT f1
|
||||
FROM BOOLTBL2
|
||||
WHERE f1 IS NOT TRUE;
|
||||
|
||||
|
|
|
@ -46,86 +46,86 @@ INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4) x');
|
|||
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;
|
||||
|
||||
-- overlap
|
||||
SELECT '' AS three, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 && box '(2.5,2.5,1.0,1.0)';
|
||||
|
||||
-- left-or-overlap (x only)
|
||||
SELECT '' AS two, b1.*
|
||||
SELECT b1.*
|
||||
FROM BOX_TBL b1
|
||||
WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)';
|
||||
|
||||
-- right-or-overlap (x only)
|
||||
SELECT '' AS two, b1.*
|
||||
SELECT b1.*
|
||||
FROM BOX_TBL b1
|
||||
WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)';
|
||||
|
||||
-- left of
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 << box '(3.0,3.0,5.0,5.0)';
|
||||
|
||||
-- area <=
|
||||
SELECT '' AS four, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)';
|
||||
|
||||
-- area <
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 < box '(3.0,3.0,5.0,5.0)';
|
||||
|
||||
-- area =
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 = box '(3.0,3.0,5.0,5.0)';
|
||||
|
||||
-- area >
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b -- zero area
|
||||
WHERE b.f1 > box '(3.5,3.0,4.5,3.0)';
|
||||
|
||||
-- area >=
|
||||
SELECT '' AS four, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b -- zero area
|
||||
WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)';
|
||||
|
||||
-- right of
|
||||
SELECT '' AS two, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1;
|
||||
|
||||
-- contained in
|
||||
SELECT '' AS three, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE b.f1 <@ box '(0,0,3,3)';
|
||||
|
||||
-- contains
|
||||
SELECT '' AS three, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE box '(0,0,3,3)' @> b.f1;
|
||||
|
||||
-- box equality
|
||||
SELECT '' AS one, b.f1
|
||||
SELECT b.f1
|
||||
FROM BOX_TBL b
|
||||
WHERE box '(1,1,3,3)' ~= b.f1;
|
||||
|
||||
-- center of box, left unary operator
|
||||
SELECT '' AS four, @@(b1.f1) AS p
|
||||
SELECT @@(b1.f1) AS p
|
||||
FROM BOX_TBL b1;
|
||||
|
||||
-- wholly-contained
|
||||
SELECT '' AS one, b1.*, b2.*
|
||||
SELECT b1.*, b2.*
|
||||
FROM BOX_TBL b1, BOX_TBL b2
|
||||
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
|
||||
|
|
|
@ -78,19 +78,19 @@ SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
|
|||
-- Examples of targets involving tables
|
||||
--
|
||||
|
||||
SELECT '' AS "Five",
|
||||
SELECT
|
||||
CASE
|
||||
WHEN i >= 3 THEN i
|
||||
END AS ">= 3 or Null"
|
||||
FROM CASE_TBL;
|
||||
|
||||
SELECT '' AS "Five",
|
||||
SELECT
|
||||
CASE WHEN i >= 3 THEN (i + i)
|
||||
ELSE i
|
||||
END AS "Simplest Math"
|
||||
FROM CASE_TBL;
|
||||
|
||||
SELECT '' AS "Five", i AS "Value",
|
||||
SELECT i AS "Value",
|
||||
CASE WHEN (i < 0) THEN 'small'
|
||||
WHEN (i = 0) THEN 'zero'
|
||||
WHEN (i = 1) THEN 'one'
|
||||
|
@ -99,7 +99,7 @@ SELECT '' AS "Five", i AS "Value",
|
|||
END AS "Category"
|
||||
FROM CASE_TBL;
|
||||
|
||||
SELECT '' AS "Five",
|
||||
SELECT
|
||||
CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
|
||||
WHEN ((i = 0) or (i = 0)) THEN 'zero'
|
||||
WHEN ((i = 1) or (i = 1)) THEN 'one'
|
||||
|
@ -129,11 +129,11 @@ SELECT *
|
|||
FROM CASE_TBL a, CASE2_TBL b
|
||||
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)"
|
||||
FROM CASE_TBL a, CASE2_TBL b;
|
||||
|
||||
SELECT '' AS "Two", *
|
||||
SELECT *
|
||||
FROM CASE_TBL a, CASE2_TBL b
|
||||
WHERE COALESCE(f,b.i) = 2;
|
||||
|
||||
|
|
|
@ -32,29 +32,29 @@ INSERT INTO CHAR_TBL (f1) VALUES ('cd');
|
|||
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
|
||||
WHERE c.f1 <> 'a';
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM CHAR_TBL c
|
||||
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 ('abcd ');
|
||||
|
||||
SELECT '' AS four, * FROM CHAR_TBL;
|
||||
SELECT * FROM CHAR_TBL;
|
||||
|
|
|
@ -38,20 +38,20 @@ INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)');
|
|||
|
||||
SELECT * FROM CIRCLE_TBL;
|
||||
|
||||
SELECT '' AS six, center(f1) AS center
|
||||
SELECT center(f1) AS center
|
||||
FROM CIRCLE_TBL;
|
||||
|
||||
SELECT '' AS six, radius(f1) AS radius
|
||||
SELECT radius(f1) AS radius
|
||||
FROM CIRCLE_TBL;
|
||||
|
||||
SELECT '' AS six, diameter(f1) AS diameter
|
||||
SELECT diameter(f1) AS diameter
|
||||
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
|
||||
WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
|
||||
ORDER BY distance, area(c1.f1), area(c2.f1);
|
||||
|
|
|
@ -54,45 +54,45 @@ SELECT 'nan'::float4 / 'nan'::float4;
|
|||
SELECT 'nan'::float4 / '0'::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';
|
||||
|
||||
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';
|
||||
|
||||
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';
|
||||
|
||||
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';
|
||||
|
||||
-- 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
|
||||
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
|
||||
SET f1 = FLOAT4_TBL.f1 * '-1'
|
||||
WHERE FLOAT4_TBL.f1 > '0.0';
|
||||
|
||||
SELECT '' AS five, * FROM FLOAT4_TBL;
|
||||
SELECT * FROM FLOAT4_TBL;
|
||||
|
||||
-- test edge-case coercions to integer
|
||||
SELECT '32767.4'::float4::int2;
|
||||
|
|
|
@ -47,49 +47,49 @@ SELECT 'nan'::float8 / 'nan'::float8;
|
|||
SELECT 'nan'::float8 / '0'::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
|
||||
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
|
||||
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
|
||||
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
|
||||
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';
|
||||
|
||||
-- absolute value
|
||||
SELECT '' AS five, f.f1, @f.f1 AS abs_f1
|
||||
SELECT f.f1, @f.f1 AS abs_f1
|
||||
FROM FLOAT8_TBL f;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- ceil / ceiling
|
||||
|
@ -110,7 +110,7 @@ SELECT sqrt(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
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
|
@ -153,7 +153,7 @@ SELECT power(float8 '-inf', float8 'inf');
|
|||
SELECT power(float8 '-inf', float8 '-inf');
|
||||
|
||||
-- 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
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
|
@ -163,30 +163,30 @@ SELECT exp('inf'::float8), exp('-inf'::float8), exp('nan'::float8);
|
|||
-- cube root
|
||||
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
|
||||
SET f1 = FLOAT8_TBL.f1 * '-1'
|
||||
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 '' 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
|
||||
-- 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');
|
||||
|
||||
SELECT '' AS five, * FROM FLOAT8_TBL;
|
||||
SELECT * FROM FLOAT8_TBL;
|
||||
|
||||
-- test edge-case coercions to integer
|
||||
SELECT '32767.4'::float8::int2;
|
||||
|
|
|
@ -10,39 +10,39 @@ SET extra_float_digits TO -3;
|
|||
-- Points
|
||||
--
|
||||
|
||||
SELECT '' AS four, center(f1) AS center
|
||||
SELECT center(f1) AS center
|
||||
FROM BOX_TBL;
|
||||
|
||||
SELECT '' AS four, (@@ f1) AS center
|
||||
SELECT (@@ f1) AS center
|
||||
FROM BOX_TBL;
|
||||
|
||||
SELECT '' AS six, point(f1) AS center
|
||||
SELECT point(f1) AS center
|
||||
FROM CIRCLE_TBL;
|
||||
|
||||
SELECT '' AS six, (@@ f1) AS center
|
||||
SELECT (@@ f1) AS center
|
||||
FROM CIRCLE_TBL;
|
||||
|
||||
SELECT '' AS two, (@@ f1) AS center
|
||||
SELECT (@@ f1) AS center
|
||||
FROM POLYGON_TBL
|
||||
WHERE (# f1) > 2;
|
||||
|
||||
-- "is horizontal" function
|
||||
SELECT '' AS two, p1.f1
|
||||
SELECT p1.f1
|
||||
FROM POINT_TBL p1
|
||||
WHERE ishorizontal(p1.f1, point '(0,0)');
|
||||
|
||||
-- "is horizontal" operator
|
||||
SELECT '' AS two, p1.f1
|
||||
SELECT p1.f1
|
||||
FROM POINT_TBL p1
|
||||
WHERE p1.f1 ?- point '(0,0)';
|
||||
|
||||
-- "is vertical" function
|
||||
SELECT '' AS one, p1.f1
|
||||
SELECT p1.f1
|
||||
FROM POINT_TBL p1
|
||||
WHERE isvertical(p1.f1, point '(5.1,34.5)');
|
||||
|
||||
-- "is vertical" operator
|
||||
SELECT '' AS one, p1.f1
|
||||
SELECT p1.f1
|
||||
FROM POINT_TBL p1
|
||||
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
|
||||
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;
|
||||
|
||||
-- Length
|
||||
|
@ -232,13 +232,13 @@ SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s <@ b.f1;
|
|||
-- Boxes
|
||||
--
|
||||
|
||||
SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL;
|
||||
SELECT box(f1) AS box FROM CIRCLE_TBL;
|
||||
|
||||
-- translation
|
||||
SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
|
||||
SELECT b.f1 + p.f1 AS translation
|
||||
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;
|
||||
|
||||
-- Multiply with point
|
||||
|
@ -335,22 +335,22 @@ SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM PATH_TBL p1, PATH_TBL p2;
|
|||
--
|
||||
|
||||
-- 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;
|
||||
|
||||
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;
|
||||
|
||||
SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon
|
||||
SELECT npoints(f1) AS npoints, f1 AS polygon
|
||||
FROM POLYGON_TBL;
|
||||
|
||||
SELECT '' AS four, polygon(f1)
|
||||
SELECT polygon(f1)
|
||||
FROM BOX_TBL;
|
||||
|
||||
SELECT '' AS four, polygon(f1)
|
||||
SELECT polygon(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
|
||||
WHERE isopen(f1);
|
||||
|
||||
|
@ -403,17 +403,17 @@ SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2;
|
|||
-- Circles
|
||||
--
|
||||
|
||||
SELECT '' AS six, circle(f1, 50.0)
|
||||
SELECT circle(f1, 50.0)
|
||||
FROM POINT_TBL;
|
||||
|
||||
SELECT '' AS four, circle(f1)
|
||||
SELECT circle(f1)
|
||||
FROM BOX_TBL;
|
||||
|
||||
SELECT '' AS two, circle(f1)
|
||||
SELECT circle(f1)
|
||||
FROM POLYGON_TBL
|
||||
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
|
||||
WHERE (p1.f1 <-> c1.f1) > 0
|
||||
ORDER BY distance, area(c1.f1), p1.f1[0];
|
||||
|
|
|
@ -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 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 '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
|
||||
SELECT 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 '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 '11:00-5') AS "Jan_01_1994_8am";
|
||||
|
||||
SELECT '' AS "64", 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;
|
||||
SELECT d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL;
|
||||
|
||||
--
|
||||
-- time, interval arithmetic
|
||||
|
@ -247,26 +247,26 @@ INSERT INTO TEMP_TIMESTAMP (f1)
|
|||
WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997'
|
||||
OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010';
|
||||
|
||||
SELECT '' AS "16", f1 AS "timestamp"
|
||||
SELECT f1 AS "timestamp"
|
||||
FROM TEMP_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
|
||||
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
|
||||
WHERE isfinite(d.f1)
|
||||
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,
|
||||
d.f1 - timestamp with time zone '1980-01-06 00:00 GMT' AS difference
|
||||
FROM TEMP_TIMESTAMP d
|
||||
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
|
||||
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
|
||||
--
|
||||
|
||||
SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date
|
||||
SELECT f1 AS "timestamp", date(f1) AS date
|
||||
FROM TEMP_TIMESTAMP
|
||||
WHERE f1 <> timestamp 'now'
|
||||
ORDER BY date, "timestamp";
|
||||
|
@ -314,17 +314,17 @@ SET DateStyle TO 'US,Postgres';
|
|||
|
||||
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';
|
||||
|
||||
SELECT '' AS "64", d1 AS us_iso FROM TIMESTAMP_TBL;
|
||||
SELECT d1 AS us_iso FROM TIMESTAMP_TBL;
|
||||
|
||||
SET DateStyle TO 'US,SQL';
|
||||
|
||||
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';
|
||||
|
||||
|
@ -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 '' AS "65", d1 AS european_postgres FROM TIMESTAMP_TBL;
|
||||
SELECT d1 AS european_postgres FROM TIMESTAMP_TBL;
|
||||
|
||||
SET DateStyle TO 'European,ISO';
|
||||
|
||||
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';
|
||||
|
||||
SHOW DateStyle;
|
||||
|
||||
SELECT '' AS "65", d1 AS european_sql FROM TIMESTAMP_TBL;
|
||||
SELECT d1 AS european_sql FROM TIMESTAMP_TBL;
|
||||
|
||||
RESET DateStyle;
|
||||
|
||||
|
|
|
@ -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:
|
||||
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');
|
||||
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
|
||||
|
||||
SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL;
|
||||
SELECT '' AS ten, c AS cidr, broadcast(c),
|
||||
SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL;
|
||||
SELECT c AS cidr, broadcast(c),
|
||||
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;
|
||||
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;
|
||||
|
||||
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
|
||||
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;
|
||||
|
||||
SELECT '' AS ten, i, c,
|
||||
SELECT i, c,
|
||||
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 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;
|
||||
|
||||
-- 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
|
||||
CREATE INDEX inet_idx1 ON inet_tbl(i);
|
||||
|
|
|
@ -27,62 +27,62 @@ INSERT INTO INT2_TBL(f1) VALUES ('123 dt');
|
|||
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
|
||||
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
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
SELECT (-1::int2<<15)::text;
|
||||
|
|
|
@ -27,71 +27,71 @@ INSERT INTO INT4_TBL(f1) VALUES ('123 5');
|
|||
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
|
||||
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
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
|
|
|
@ -62,22 +62,22 @@ 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 '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL;
|
||||
SELECT '' AS three, 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 plus FROM INT8_TBL;
|
||||
SELECT q1, q2, q1 - q2 AS minus FROM INT8_TBL;
|
||||
SELECT 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);
|
||||
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 '' AS five, q2, float8(q2) FROM INT8_TBL;
|
||||
SELECT q1, float8(q1) FROM INT8_TBL;
|
||||
SELECT q2, float8(q2) FROM INT8_TBL;
|
||||
|
||||
SELECT 37 + q1 AS plus4 FROM INT8_TBL;
|
||||
SELECT 37 - q1 AS minus4 FROM INT8_TBL;
|
||||
SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL;
|
||||
SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL;
|
||||
SELECT 2 * q1 AS "twice int4" FROM INT8_TBL;
|
||||
SELECT q1 * 2 AS "twice int4" FROM INT8_TBL;
|
||||
|
||||
-- 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;
|
||||
|
@ -96,31 +96,31 @@ SELECT max(q1), max(q2) FROM INT8_TBL;
|
|||
|
||||
-- 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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_6, to_char(q2, 'FMS9999999999999999') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_7, to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_8, to_char(q2, 'SG9999999999999999th') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_9, to_char(q2, '0999999999999999') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL;
|
||||
SELECT '' AS to_char_14, 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 '' AS to_char_16, 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, 'MI9999999999999999') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'FMS9999999999999999') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'SG9999999999999999th') FROM INT8_TBL;
|
||||
SELECT to_char(q2, '0999999999999999') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'S0999999999999999') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'FM0999999999999999') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'L9999999999999999.000') FROM INT8_TBL;
|
||||
SELECT to_char(q2, 'FM9999999999999999.999') 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 to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL;
|
||||
SELECT to_char(q2, '999999SG9999999999') FROM INT8_TBL;
|
||||
|
||||
-- check min/max values and overflow behavior
|
||||
|
||||
|
|
|
@ -34,27 +34,27 @@ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
|
|||
|
||||
-- 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';
|
||||
|
||||
SELECT '' AS three, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
|
||||
|
||||
SELECT '' AS three, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
|
||||
|
||||
SELECT '' AS one, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
WHERE INTERVAL_TBL.f1 = interval '@ 34 years';
|
||||
|
||||
SELECT '' AS five, * FROM INTERVAL_TBL
|
||||
SELECT * FROM INTERVAL_TBL
|
||||
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';
|
||||
|
||||
SELECT '' AS fortyfive, r1.*, r2.*
|
||||
SELECT r1.*, r2.*
|
||||
FROM INTERVAL_TBL r1, INTERVAL_TBL r2
|
||||
WHERE r1.f1 > r2.f1
|
||||
ORDER BY r1.f1, r2.f1;
|
||||
|
@ -127,7 +127,7 @@ DROP TABLE INTERVAL_MULDIV_TBL;
|
|||
SET DATESTYLE = 'postgres';
|
||||
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
|
||||
-- known to change the allowed input syntax for type interval without
|
||||
|
|
|
@ -49,22 +49,22 @@ analyze onerow;
|
|||
-- before diving into more complex join syntax.
|
||||
--
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL AS tx;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL tx;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL AS t1 (a, b, c);
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL t1 (a, b, c);
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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)
|
||||
WHERE t1.a = t2.d;
|
||||
|
||||
|
@ -75,26 +75,26 @@ SELECT '' AS "xxx", t1.a, t2.e
|
|||
-- which degenerate into a standard unqualified inner join.
|
||||
--
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL CROSS JOIN J2_TBL;
|
||||
|
||||
-- ambiguous column
|
||||
SELECT '' AS "xxx", i, k, t
|
||||
SELECT i, k, t
|
||||
FROM J1_TBL CROSS JOIN J2_TBL;
|
||||
|
||||
-- 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;
|
||||
|
||||
SELECT '' AS "xxx", ii, tt, kk
|
||||
SELECT ii, tt, kk
|
||||
FROM (J1_TBL CROSS JOIN J2_TBL)
|
||||
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))
|
||||
AS tx (ii, jj, tt, ii2, kk);
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL INNER JOIN J2_TBL USING (i);
|
||||
|
||||
-- Same as above, slightly different syntax
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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)
|
||||
ORDER BY a, d;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, b) USING (b)
|
||||
ORDER BY b, t1.a;
|
||||
|
||||
|
@ -132,18 +132,18 @@ SELECT '' AS "xxx", *
|
|||
-- Inner equi-join on all columns with the same name
|
||||
--
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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);
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (d, a);
|
||||
|
||||
-- mismatch number of columns
|
||||
-- currently, Postgres will fill in with underlying names
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL t1 (a, b) NATURAL JOIN J2_TBL t2 (a);
|
||||
|
||||
|
||||
|
@ -151,10 +151,10 @@ SELECT '' AS "xxx", *
|
|||
-- Inner joins (equi-joins)
|
||||
--
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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);
|
||||
|
||||
|
||||
|
@ -162,7 +162,7 @@ SELECT '' AS "xxx", *
|
|||
-- Non-equi-joins
|
||||
--
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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
|
||||
--
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i)
|
||||
ORDER BY i, k, t;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL LEFT JOIN J2_TBL USING (i)
|
||||
ORDER BY i, k, t;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i);
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL RIGHT JOIN J2_TBL USING (i);
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL FULL OUTER JOIN J2_TBL USING (i)
|
||||
ORDER BY i, k, t;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
FROM J1_TBL FULL JOIN J2_TBL USING (i)
|
||||
ORDER BY i, k, t;
|
||||
|
||||
SELECT '' AS "xxx", *
|
||||
SELECT *
|
||||
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);
|
||||
|
||||
--
|
||||
|
|
|
@ -29,27 +29,27 @@ INSERT INTO NAME_TBL(f1) VALUES ('');
|
|||
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;
|
||||
|
||||
|
|
|
@ -899,37 +899,37 @@ FROM generate_series(0, 110, 10) x;
|
|||
--
|
||||
-- TO_CHAR()
|
||||
--
|
||||
SELECT '' AS to_char_1, to_char(val, '9G999G999G999G999G999')
|
||||
SELECT to_char(val, '9G999G999G999G999G999')
|
||||
FROM num_data;
|
||||
|
||||
SELECT '' AS to_char_2, to_char(val, '9G999G999G999G999G999D999G999G999G999G999')
|
||||
SELECT to_char(val, '9G999G999G999G999G999D999G999G999G999G999')
|
||||
FROM num_data;
|
||||
|
||||
SELECT '' AS to_char_3, to_char(val, '9999999999999999.999999999999999PR')
|
||||
SELECT to_char(val, '9999999999999999.999999999999999PR')
|
||||
FROM num_data;
|
||||
|
||||
SELECT '' AS to_char_4, to_char(val, '9999999999999999.999999999999999S')
|
||||
SELECT to_char(val, '9999999999999999.999999999999999S')
|
||||
FROM num_data;
|
||||
|
||||
SELECT '' AS to_char_5, to_char(val, 'MI9999999999999999.999999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_6, to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_7, to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data;
|
||||
SELECT '' AS to_char_8, to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data;
|
||||
SELECT '' AS to_char_9, to_char(val, '0999999999999999.999999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_10, to_char(val, 'S0999999999999999.999999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_11, to_char(val, 'FM0999999999999999.999999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_12, to_char(val, 'FM9999999999999999.099999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999') FROM num_data;
|
||||
SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999') FROM num_data;
|
||||
SELECT '' AS to_char_17, 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 '' 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 '' AS to_char_20, 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 '' AS to_char_22, 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, 'MI9999999999999999.999999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data;
|
||||
SELECT to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data;
|
||||
SELECT to_char(val, '0999999999999999.999999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'S0999999999999999.999999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM0999999999999999.999999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM9999999999999999.099999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM9999999999990999.990999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM0999999999999999.999909999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM9999999990999999.099999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'L9999999999999999.099999999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM9999999999999999.99999999999999') 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 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, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data;
|
||||
SELECT to_char(val, '999999SG9999999999') FROM num_data;
|
||||
SELECT to_char(val, 'FM9999999999999999.999999999999999') FROM num_data;
|
||||
SELECT to_char(val, '9.999EEEE') FROM num_data;
|
||||
|
||||
WITH v(val) AS
|
||||
(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
|
||||
FROM v;
|
||||
|
||||
SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9');
|
||||
SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.');
|
||||
SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999');
|
||||
SELECT to_char('100'::numeric, 'FM999.9');
|
||||
SELECT to_char('100'::numeric, 'FM999.');
|
||||
SELECT to_char('100'::numeric, 'FM999');
|
||||
|
||||
-- Check parsing of literal text in a format string
|
||||
SELECT '' AS to_char_27, to_char('100'::numeric, 'foo999');
|
||||
SELECT '' AS to_char_28, to_char('100'::numeric, 'f\oo999');
|
||||
SELECT '' AS to_char_29, to_char('100'::numeric, 'f\\oo999');
|
||||
SELECT '' AS to_char_30, to_char('100'::numeric, 'f\"oo999');
|
||||
SELECT '' AS to_char_31, to_char('100'::numeric, 'f\\"oo999');
|
||||
SELECT '' AS to_char_32, to_char('100'::numeric, 'f"ool"999');
|
||||
SELECT '' AS to_char_33, to_char('100'::numeric, 'f"\ool"999');
|
||||
SELECT '' AS to_char_34, to_char('100'::numeric, 'f"\\ool"999');
|
||||
SELECT '' AS to_char_35, to_char('100'::numeric, 'f"ool\"999');
|
||||
SELECT '' AS to_char_36, to_char('100'::numeric, 'f"ool\\"999');
|
||||
SELECT to_char('100'::numeric, 'foo999');
|
||||
SELECT to_char('100'::numeric, 'f\oo999');
|
||||
SELECT to_char('100'::numeric, 'f\\oo999');
|
||||
SELECT to_char('100'::numeric, 'f\"oo999');
|
||||
SELECT to_char('100'::numeric, 'f\\"oo999');
|
||||
SELECT to_char('100'::numeric, 'f"ool"999');
|
||||
SELECT to_char('100'::numeric, 'f"\ool"999');
|
||||
SELECT to_char('100'::numeric, 'f"\\ool"999');
|
||||
SELECT to_char('100'::numeric, 'f"ool\"999');
|
||||
SELECT to_char('100'::numeric, 'f"ool\\"999');
|
||||
|
||||
-- TO_NUMBER()
|
||||
--
|
||||
SET lc_numeric = 'C';
|
||||
SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999');
|
||||
SELECT '' AS to_number_2, to_number('-34,338,492.654,878', '99G999G999D999G999');
|
||||
SELECT '' AS to_number_3, to_number('<564646.654564>', '999999.999999PR');
|
||||
SELECT '' AS to_number_4, to_number('0.00001-', '9.999999S');
|
||||
SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999S');
|
||||
SELECT '' AS to_number_5, 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 '' AS to_number_8, to_number('.01', 'FM9.99');
|
||||
SELECT '' AS to_number_9, to_number('.0', '99999999.99999999');
|
||||
SELECT '' AS to_number_10, to_number('0', '99.99');
|
||||
SELECT '' AS to_number_11, to_number('.-01', 'S99.99');
|
||||
SELECT '' AS to_number_12, to_number('.01-', '99.99S');
|
||||
SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S');
|
||||
SELECT '' AS to_number_14, to_number('34,50','999,99');
|
||||
SELECT '' AS to_number_15, to_number('123,000','999G');
|
||||
SELECT '' AS to_number_16, to_number('123456','999G999');
|
||||
SELECT '' AS to_number_17, to_number('$1234.56','L9,999.99');
|
||||
SELECT '' AS to_number_18, to_number('$1234.56','L99,999.99');
|
||||
SELECT '' AS to_number_19, to_number('$1,234.56','L99,999.99');
|
||||
SELECT '' AS to_number_20, to_number('1234.56','L99,999.99');
|
||||
SELECT '' AS to_number_21, to_number('1,234.56','L99,999.99');
|
||||
SELECT '' AS to_number_22, to_number('42nd', '99th');
|
||||
SELECT to_number('-34,338,492', '99G999G999');
|
||||
SELECT to_number('-34,338,492.654,878', '99G999G999D999G999');
|
||||
SELECT to_number('<564646.654564>', '999999.999999PR');
|
||||
SELECT to_number('0.00001-', '9.999999S');
|
||||
SELECT to_number('5.01-', 'FM9.999999S');
|
||||
SELECT to_number('5.01-', 'FM9.999999MI');
|
||||
SELECT to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9');
|
||||
SELECT to_number('.01', 'FM9.99');
|
||||
SELECT to_number('.0', '99999999.99999999');
|
||||
SELECT to_number('0', '99.99');
|
||||
SELECT to_number('.-01', 'S99.99');
|
||||
SELECT to_number('.01-', '99.99S');
|
||||
SELECT to_number(' . 0 1-', ' 9 9 . 9 9 S');
|
||||
SELECT to_number('34,50','999,99');
|
||||
SELECT to_number('123,000','999G');
|
||||
SELECT to_number('123456','999G999');
|
||||
SELECT to_number('$1234.56','L9,999.99');
|
||||
SELECT to_number('$1234.56','L99,999.99');
|
||||
SELECT to_number('$1,234.56','L99,999.99');
|
||||
SELECT to_number('1234.56','L99,999.99');
|
||||
SELECT to_number('1,234.56','L99,999.99');
|
||||
SELECT to_number('42nd', '99th');
|
||||
RESET lc_numeric;
|
||||
|
||||
--
|
||||
|
|
|
@ -17,7 +17,7 @@ INSERT INTO TEMP_FLOAT (f1)
|
|||
INSERT INTO TEMP_FLOAT (f1)
|
||||
SELECT float8(f1) FROM INT2_TBL;
|
||||
|
||||
SELECT '' AS ten, f1 FROM TEMP_FLOAT
|
||||
SELECT f1 FROM TEMP_FLOAT
|
||||
ORDER BY f1;
|
||||
|
||||
-- int4
|
||||
|
@ -31,7 +31,7 @@ INSERT INTO TEMP_INT4 (f1)
|
|||
INSERT INTO TEMP_INT4 (f1)
|
||||
SELECT int4(f1) FROM INT2_TBL;
|
||||
|
||||
SELECT '' AS nine, f1 FROM TEMP_INT4
|
||||
SELECT f1 FROM TEMP_INT4
|
||||
ORDER BY f1;
|
||||
|
||||
-- int2
|
||||
|
@ -46,7 +46,7 @@ INSERT INTO TEMP_INT2 (f1)
|
|||
SELECT int2(f1) FROM INT4_TBL
|
||||
WHERE (f1 >= -32767) AND (f1 <= 32767);
|
||||
|
||||
SELECT '' AS five, f1 FROM TEMP_INT2
|
||||
SELECT f1 FROM TEMP_INT2
|
||||
ORDER BY f1;
|
||||
|
||||
--
|
||||
|
|
|
@ -26,18 +26,18 @@ INSERT INTO OID_TBL(f1) VALUES (' - 500');
|
|||
INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
|
||||
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;
|
||||
|
|
|
@ -35,10 +35,10 @@ 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;
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
SELECT '' AS six, * FROM POINT_TBL;
|
||||
SELECT * FROM POINT_TBL;
|
||||
|
||||
-- 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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p
|
||||
SELECT p.* FROM POINT_TBL p
|
||||
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;
|
||||
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p
|
||||
SELECT p.* FROM POINT_TBL p
|
||||
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)]';
|
||||
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p
|
||||
SELECT p.* FROM POINT_TBL p
|
||||
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
|
||||
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
|
||||
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
|
||||
WHERE (p1.f1 <-> p2.f1) > 3;
|
||||
|
||||
-- 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
|
||||
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
|
||||
ORDER BY distance, p1.f1[0], p2.f1[0];
|
||||
|
||||
-- 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
|
||||
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 |>> p2.f1
|
||||
ORDER BY distance;
|
||||
|
|
|
@ -32,7 +32,7 @@ INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
|
|||
INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
|
||||
|
||||
|
||||
SELECT '' AS four, * FROM POLYGON_TBL;
|
||||
SELECT * FROM POLYGON_TBL;
|
||||
|
||||
--
|
||||
-- Test the SP-GiST index
|
||||
|
|
|
@ -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 (8, 9, NULL);
|
||||
|
||||
SELECT '' AS eight, * FROM SUBSELECT_TBL;
|
||||
SELECT * FROM SUBSELECT_TBL;
|
||||
|
||||
-- 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);
|
||||
|
||||
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);
|
||||
|
||||
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
|
||||
f2 IN (SELECT f1 FROM SUBSELECT_TBL));
|
||||
|
||||
SELECT '' AS three, f1, f2
|
||||
SELECT f1, f2
|
||||
FROM SUBSELECT_TBL
|
||||
WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
|
||||
WHERE f3 IS NOT NULL);
|
||||
|
||||
-- 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
|
||||
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
|
||||
WHERE f1 IN
|
||||
(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
|
||||
WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL
|
||||
WHERE f2 = CAST(f3 AS integer));
|
||||
|
||||
SELECT '' AS five, f1 AS "Correlated Field"
|
||||
SELECT f1 AS "Correlated Field"
|
||||
FROM SUBSELECT_TBL
|
||||
WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL
|
||||
WHERE f3 IS NOT NULL);
|
||||
|
@ -84,7 +84,7 @@ SELECT '' AS five, f1 AS "Correlated Field"
|
|||
-- 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
|
||||
WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL
|
||||
WHERE f1 != ss.f1 AND f1 < 2147483647);
|
||||
|
|
|
@ -11,7 +11,7 @@ CREATE TABLE TEXT_TBL (f1 text);
|
|||
INSERT INTO TEXT_TBL VALUES ('doh!');
|
||||
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
|
||||
-- this no longer works:
|
||||
|
|
|
@ -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 5097 BC');
|
||||
|
||||
SELECT '' AS "64", d1 FROM TIMESTAMP_TBL;
|
||||
SELECT d1 FROM TIMESTAMP_TBL;
|
||||
|
||||
-- Check behavior at the lower boundary of the timestamp range
|
||||
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
|
||||
|
||||
-- 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';
|
||||
|
||||
SELECT '' AS "15", d1 FROM TIMESTAMP_TBL
|
||||
SELECT d1 FROM TIMESTAMP_TBL
|
||||
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';
|
||||
|
||||
SELECT '' AS "63", d1 FROM TIMESTAMP_TBL
|
||||
SELECT d1 FROM TIMESTAMP_TBL
|
||||
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';
|
||||
|
||||
SELECT '' AS "49", d1 FROM TIMESTAMP_TBL
|
||||
SELECT d1 FROM TIMESTAMP_TBL
|
||||
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';
|
||||
|
||||
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
|
||||
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 timestamp without time zone '1902-01-01'
|
||||
AND timestamp without time zone '2038-01-01';
|
||||
|
@ -198,40 +198,40 @@ SELECT d1 as "timestamp",
|
|||
FROM TIMESTAMP_TBL;
|
||||
|
||||
-- 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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth')
|
||||
SELECT to_char(d1, 'YYYYTH YYYYth Jth')
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
('2018-11-02 12:34:56'::timestamp),
|
||||
('2018-11-02 12:34:56.78'),
|
||||
|
|
|
@ -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 '' AS "64", d1 FROM TIMESTAMPTZ_TBL;
|
||||
SELECT d1 FROM TIMESTAMPTZ_TBL;
|
||||
|
||||
-- Check behavior at the lower boundary of the timestamp range
|
||||
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
|
||||
|
||||
-- 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';
|
||||
|
||||
SELECT '' AS "15", d1 FROM TIMESTAMPTZ_TBL
|
||||
SELECT d1 FROM TIMESTAMPTZ_TBL
|
||||
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';
|
||||
|
||||
SELECT '' AS "63", d1 FROM TIMESTAMPTZ_TBL
|
||||
SELECT d1 FROM TIMESTAMPTZ_TBL
|
||||
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';
|
||||
|
||||
SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL
|
||||
SELECT d1 FROM TIMESTAMPTZ_TBL
|
||||
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';
|
||||
|
||||
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 '' 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 '' 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', 'Australia/Sydney') as sydney_trunc; -- zone name
|
||||
SELECT 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', 'VET') as vet_trunc; -- variable-offset abbreviation
|
||||
|
||||
-- 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
|
||||
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;
|
||||
|
||||
-- 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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth')
|
||||
SELECT to_char(d1, 'YYYYTH YYYYth Jth')
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
('2018-11-02 12:34:56'::timestamptz),
|
||||
('2018-11-02 12:34:56.78'),
|
||||
|
|
|
@ -23,29 +23,29 @@ INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
|
|||
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
|
||||
WHERE c.f1 <> 'a';
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 = 'a';
|
||||
|
||||
SELECT '' AS five, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 < 'a';
|
||||
|
||||
SELECT '' AS six, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 <= 'a';
|
||||
|
||||
SELECT '' AS one, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
WHERE c.f1 > 'a';
|
||||
|
||||
SELECT '' AS two, c.*
|
||||
SELECT c.*
|
||||
FROM VARCHAR_TBL c
|
||||
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 ('abcd ');
|
||||
|
||||
SELECT '' AS four, * FROM VARCHAR_TBL;
|
||||
SELECT * FROM VARCHAR_TBL;
|
||||
|
|
Loading…
Reference in New Issue