postgresql/contrib/seg/expected/seg_1.out
Tom Lane ade49c605f Test all contrib-created operator classes with amvalidate.
I'd supposed that people would do this manually when creating new operator
classes, but the folly of that was exposed today.  The tests seem fast
enough that we can just apply them during the normal regression tests.

contrib/isn fails the checks for lack of complete sets of cross-type
operators.  That's a nice-to-have policy rather than a functional
requirement, so leave it as-is, but insert ORDER BY in the query to
ensure consistent cross-platform output.

Discussion: https://postgr.es/m/7076.1480446837@sss.pgh.pa.us
2016-11-29 15:05:22 -05:00

1239 lines
19 KiB
Plaintext

--
-- Test seg datatype
--
CREATE EXTENSION seg;
-- Check whether any of our opclasses fail amvalidate
SELECT amname, opcname
FROM pg_opclass opc LEFT JOIN pg_am am ON am.oid = opcmethod
WHERE opc.oid >= 16384 AND NOT amvalidate(opc.oid);
amname | opcname
--------+---------
(0 rows)
--
-- testing the input and output functions
--
-- Any number
SELECT '1'::seg AS seg;
seg
-----
1
(1 row)
SELECT '-1'::seg AS seg;
seg
-----
-1
(1 row)
SELECT '1.0'::seg AS seg;
seg
-----
1.0
(1 row)
SELECT '-1.0'::seg AS seg;
seg
------
-1.0
(1 row)
SELECT '1e7'::seg AS seg;
seg
--------
1e+007
(1 row)
SELECT '-1e7'::seg AS seg;
seg
---------
-1e+007
(1 row)
SELECT '1.0e7'::seg AS seg;
seg
----------
1.0e+007
(1 row)
SELECT '-1.0e7'::seg AS seg;
seg
-----------
-1.0e+007
(1 row)
SELECT '1e+7'::seg AS seg;
seg
--------
1e+007
(1 row)
SELECT '-1e+7'::seg AS seg;
seg
---------
-1e+007
(1 row)
SELECT '1.0e+7'::seg AS seg;
seg
----------
1.0e+007
(1 row)
SELECT '-1.0e+7'::seg AS seg;
seg
-----------
-1.0e+007
(1 row)
SELECT '1e-7'::seg AS seg;
seg
--------
1e-007
(1 row)
SELECT '-1e-7'::seg AS seg;
seg
---------
-1e-007
(1 row)
SELECT '1.0e-7'::seg AS seg;
seg
----------
1.0e-007
(1 row)
SELECT '-1.0e-7'::seg AS seg;
seg
-----------
-1.0e-007
(1 row)
SELECT '2e-6'::seg AS seg;
seg
--------
2e-006
(1 row)
SELECT '2e-5'::seg AS seg;
seg
--------
2e-005
(1 row)
SELECT '2e-4'::seg AS seg;
seg
--------
0.0002
(1 row)
SELECT '2e-3'::seg AS seg;
seg
-------
0.002
(1 row)
SELECT '2e-2'::seg AS seg;
seg
------
0.02
(1 row)
SELECT '2e-1'::seg AS seg;
seg
-----
0.2
(1 row)
SELECT '2e-0'::seg AS seg;
seg
-----
2
(1 row)
SELECT '2e+0'::seg AS seg;
seg
-----
2
(1 row)
SELECT '2e+1'::seg AS seg;
seg
-----
2e1
(1 row)
SELECT '2e+2'::seg AS seg;
seg
-----
2e2
(1 row)
SELECT '2e+3'::seg AS seg;
seg
-----
2e3
(1 row)
SELECT '2e+4'::seg AS seg;
seg
-----
2e4
(1 row)
SELECT '2e+5'::seg AS seg;
seg
--------
2e+005
(1 row)
SELECT '2e+6'::seg AS seg;
seg
--------
2e+006
(1 row)
-- Significant digits preserved
SELECT '1'::seg AS seg;
seg
-----
1
(1 row)
SELECT '1.0'::seg AS seg;
seg
-----
1.0
(1 row)
SELECT '1.00'::seg AS seg;
seg
------
1.00
(1 row)
SELECT '1.000'::seg AS seg;
seg
-------
1.000
(1 row)
SELECT '1.0000'::seg AS seg;
seg
--------
1.0000
(1 row)
SELECT '1.00000'::seg AS seg;
seg
---------
1.00000
(1 row)
SELECT '1.000000'::seg AS seg;
seg
---------
1.00000
(1 row)
SELECT '0.000000120'::seg AS seg;
seg
-----------
1.20e-007
(1 row)
SELECT '3.400e5'::seg AS seg;
seg
------------
3.400e+005
(1 row)
-- Digits truncated
SELECT '12.34567890123456'::seg AS seg;
seg
---------
12.3457
(1 row)
-- Numbers with certainty indicators
SELECT '~6.5'::seg AS seg;
seg
------
~6.5
(1 row)
SELECT '<6.5'::seg AS seg;
seg
------
<6.5
(1 row)
SELECT '>6.5'::seg AS seg;
seg
------
>6.5
(1 row)
SELECT '~ 6.5'::seg AS seg;
seg
------
~6.5
(1 row)
SELECT '< 6.5'::seg AS seg;
seg
------
<6.5
(1 row)
SELECT '> 6.5'::seg AS seg;
seg
------
>6.5
(1 row)
-- Open intervals
SELECT '0..'::seg AS seg;
seg
------
0 ..
(1 row)
SELECT '0...'::seg AS seg;
seg
------
0 ..
(1 row)
SELECT '0 ..'::seg AS seg;
seg
------
0 ..
(1 row)
SELECT '0 ...'::seg AS seg;
seg
------
0 ..
(1 row)
SELECT '..0'::seg AS seg;
seg
------
.. 0
(1 row)
SELECT '...0'::seg AS seg;
seg
------
.. 0
(1 row)
SELECT '.. 0'::seg AS seg;
seg
------
.. 0
(1 row)
SELECT '... 0'::seg AS seg;
seg
------
.. 0
(1 row)
-- Finite intervals
SELECT '0 .. 1'::seg AS seg;
seg
--------
0 .. 1
(1 row)
SELECT '-1 .. 0'::seg AS seg;
seg
---------
-1 .. 0
(1 row)
SELECT '-1 .. 1'::seg AS seg;
seg
---------
-1 .. 1
(1 row)
-- (+/-) intervals
SELECT '0(+-)1'::seg AS seg;
seg
---------
-1 .. 1
(1 row)
SELECT '0(+-)1.0'::seg AS seg;
seg
-------------
-1.0 .. 1.0
(1 row)
SELECT '1.0(+-)0.005'::seg AS seg;
seg
----------------
0.995 .. 1.005
(1 row)
SELECT '101(+-)1'::seg AS seg;
seg
------------------
1.00e2 .. 1.02e2
(1 row)
-- incorrect number of significant digits in 99.0:
SELECT '100(+-)1'::seg AS seg;
seg
----------------
99.0 .. 1.01e2
(1 row)
-- invalid input
SELECT ''::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT ''::seg AS seg;
^
DETAIL: syntax error at end of input
SELECT 'ABC'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT 'ABC'::seg AS seg;
^
DETAIL: syntax error at or near "A"
SELECT '1ABC'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT '1ABC'::seg AS seg;
^
DETAIL: syntax error at or near "A"
SELECT '1.'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT '1.'::seg AS seg;
^
DETAIL: syntax error at or near "."
SELECT '1.....'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT '1.....'::seg AS seg;
^
DETAIL: syntax error at or near ".."
SELECT '.1'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT '.1'::seg AS seg;
^
DETAIL: syntax error at or near "."
SELECT '1..2.'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT '1..2.'::seg AS seg;
^
DETAIL: syntax error at or near "."
SELECT '1 e7'::seg AS seg;
ERROR: bad seg representation
LINE 1: SELECT '1 e7'::seg AS seg;
^
DETAIL: syntax error at or near "e"
SELECT '1e700'::seg AS seg;
ERROR: "1e700" is out of range for type real
LINE 1: SELECT '1e700'::seg AS seg;
^
--
-- testing the operators
--
-- equality/inequality:
--
SELECT '24 .. 33.20'::seg = '24 .. 33.20'::seg AS bool;
bool
------
t
(1 row)
SELECT '24 .. 33.20'::seg = '24 .. 33.21'::seg AS bool;
bool
------
f
(1 row)
SELECT '24 .. 33.20'::seg != '24 .. 33.20'::seg AS bool;
bool
------
f
(1 row)
SELECT '24 .. 33.20'::seg != '24 .. 33.21'::seg AS bool;
bool
------
t
(1 row)
-- overlap
--
SELECT '1'::seg && '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '1'::seg && '2'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 ..'::seg && '0 ..'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg && '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '..0'::seg && '0..'::seg AS bool;
bool
------
t
(1 row)
SELECT '-1 .. 0.1'::seg && '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '-1 .. 0'::seg && '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '-1 .. -0.0001'::seg && '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 ..'::seg && '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg && '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg && '2'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 2'::seg && '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '1'::seg && '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '2'::seg && '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg && '0 .. 2'::seg AS bool;
bool
------
t
(1 row)
-- overlap on the left
--
SELECT '1'::seg &< '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg &< '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '1'::seg &< '2'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &< '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg &< '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &< '2'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &< '0 .. 0.5'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg &< '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &< '0 .. 2'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &< '1 .. 2'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &< '2 .. 3'::seg AS bool;
bool
------
t
(1 row)
-- overlap on the right
--
SELECT '0'::seg &> '1'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg &> '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '2'::seg &> '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '1'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '2'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 0.5'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 2'::seg &> '0 .. 2'::seg AS bool;
bool
------
t
(1 row)
SELECT '1 .. 2'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '2 .. 3'::seg &> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
-- left
--
SELECT '1'::seg << '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg << '1'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg << '2'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg << '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg << '1'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg << '2'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 1'::seg << '0 .. 0.5'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg << '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg << '0 .. 2'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg << '1 .. 2'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg << '2 .. 3'::seg AS bool;
bool
------
t
(1 row)
-- right
--
SELECT '0'::seg >> '1'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg >> '1'::seg AS bool;
bool
------
f
(1 row)
SELECT '2'::seg >> '1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0'::seg >> '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '1'::seg >> '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '2'::seg >> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. 0.5'::seg >> '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 1'::seg >> '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '0 .. 2'::seg >> '0 .. 2'::seg AS bool;
bool
------
f
(1 row)
SELECT '1 .. 2'::seg >> '0 .. 1'::seg AS bool;
bool
------
f
(1 row)
SELECT '2 .. 3'::seg >> '0 .. 1'::seg AS bool;
bool
------
t
(1 row)
-- "contained in" (the left value belongs within the interval specified in the right value):
--
SELECT '0'::seg <@ '0'::seg AS bool;
bool
------
t
(1 row)
SELECT '0'::seg <@ '0 ..'::seg AS bool;
bool
------
t
(1 row)
SELECT '0'::seg <@ '.. 0'::seg AS bool;
bool
------
t
(1 row)
SELECT '0'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '0'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '-1'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '1'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '-1 .. 1'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
-- "contains" (the left value contains the interval specified in the right value):
--
SELECT '0'::seg @> '0'::seg AS bool;
bool
------
t
(1 row)
SELECT '0 .. '::seg <@ '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '.. 0'::seg <@ '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '-1 .. 1'::seg <@ '0'::seg AS bool;
bool
------
f
(1 row)
SELECT '0'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '-1'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
SELECT '1'::seg <@ '-1 .. 1'::seg AS bool;
bool
------
t
(1 row)
-- Load some example data and build the index
--
CREATE TABLE test_seg (s seg);
\copy test_seg from 'data/test_seg.data'
CREATE INDEX test_seg_ix ON test_seg USING gist (s);
SELECT count(*) FROM test_seg WHERE s @> '11..11.3';
count
-------
143
(1 row)
-- Test sorting
SELECT * FROM test_seg WHERE s @> '11..11.3' GROUP BY s;
s
-----------------
.. 4.0e1
.. >8.2e1
.. 9.0e1
<1.0 .. >13.0
1.3 .. 12.0
2.0 .. 11.5
2.1 .. 11.8
<2.3 ..
>2.3 ..
2.4 .. 11.3
2.5 .. 11.5
2.5 .. 11.8
2.6 ..
2.7 .. 12.0
<3.0 ..
3 .. 5.8e1
3.1 .. 11.5
3.5 .. 11.5
3.5 .. 12.2
<4.0 .. >1.2e1
<4.0 ..
4 .. 1.2e1
4.0 .. 11.7
4.0 .. 12.5
4.0 .. 13.0
4.0 .. 6.0e1
4.0 ..
4.2 .. 11.5
4.2 .. 11.7
<4.5 .. >1.2e1
4.5 .. 11.5
4.5 .. <1.2e1
4.5 .. >1.2e1
4.5 .. 12.5
4.5 .. 1.15e2
4.7 .. 11.8
4.8 .. 11.5
4.8 .. 11.6
4.8 .. 12.5
4.8 ..
4.9 .. >1.2e1
4.9 ..
5 .. 11.5
5 .. 1.2e1
5 .. 3.0e1
5.0 .. 11.4
5.0 .. 11.5
5.0 .. 11.6
5.0 .. 11.7
5.0 .. 12.0
5.0 .. >12.0
5.0 .. >1.2e1
5.2 .. 11.5
5.2 .. >1.2e1
5.25 .. >1.2e1
5.3 .. 11.5
5.3 .. 1.3e1
5.3 .. >9.0e1
5.3 ..
5.4 ..
5.5 .. 11.5
5.5 .. 11.7
5.5 .. 1.2e1
5.5 .. >1.2e1
5.5 .. 12.5
5.5 .. 13.5
5.5 ..
>5.5 ..
5.7 ..
5.9 ..
6 .. 11.5
6 .. >1.2e1
6.0 .. 11.5
6.0 .. 1.3e1
>6.0 .. <11.5
6.1 .. >1.2e1
6.1 ..
6.2 .. >11.5
6.3 ..
6.5 .. 11.5
6.5 .. 12.0
6.5 .. >12.0
6.5 ..
6.6 ..
6.7 .. 11.5
6.7 ..
6.75 ..
6.8 ..
6.9 .. 12.2
6.9 .. >9.0e1
6.9 ..
<7.0 .. >11.5
7.0 .. 11.5
7.0 .. >11.5
7.0 ..
>7.15 ..
7.2 .. 13.5
7.3 .. >9.0e1
7.3 ..
>7.3 ..
7.4 .. 12.1
7.4 ..
7.5 .. 11.5
7.5 .. 12.0
7.5 ..
7.7 .. 11.5
7.7 ..
7.75 ..
8.0 .. 11.7
8.0 .. 12.0
8.0 .. >13.0
8.2 ..
8.3 ..
8.5 .. >11.5
8.5 .. 12.5
8.5 ..
8.6 .. >9.9e1
8.7 .. 11.3
8.7 .. 11.7
8.9 .. 11.5
9 .. >1.2e1
9.0 .. 11.3
9.0 .. 11.5
9.0 .. 1.2e1
9.0 ..
9.2 .. 1.2e1
9.4 .. 12.2
<9.5 .. 1.2e1
<9.5 .. >12.2
9.5 ..
9.6 .. 11.5
9.7 .. 11.5
9.7 .. >1.2e1
9.8 .. >12.5
<1.0e1 .. >11.6
10.0 .. 11.5
10.0 .. 12.5
10.0 .. >12.5
10.2 .. 11.8
<10.5 .. 11.5
10.5 .. 11.5
10.5 .. <13.5
10.7 .. 12.3
(143 rows)
-- Test functions
SELECT seg_lower(s), seg_center(s), seg_upper(s)
FROM test_seg WHERE s @> '11.2..11.3' OR s IS NULL ORDER BY s;
seg_lower | seg_center | seg_upper
-----------+------------+-----------
-Infinity | -Infinity | 40
-Infinity | -Infinity | 82
-Infinity | -Infinity | 90
1 | 7 | 13
1.3 | 6.65 | 12
2 | 6.75 | 11.5
2.1 | 6.95 | 11.8
2.3 | Infinity | Infinity
2.3 | Infinity | Infinity
2.4 | 6.85 | 11.3
2.5 | 7 | 11.5
2.5 | 7.15 | 11.8
2.6 | Infinity | Infinity
2.7 | 7.35 | 12
3 | Infinity | Infinity
3 | 30.5 | 58
3.1 | 7.3 | 11.5
3.5 | 7.5 | 11.5
3.5 | 7.85 | 12.2
4 | 8 | 12
4 | Infinity | Infinity
4 | 8 | 12
4 | 7.85 | 11.7
4 | 8.25 | 12.5
4 | 8.5 | 13
4 | 32 | 60
4 | Infinity | Infinity
4.2 | 7.85 | 11.5
4.2 | 7.95 | 11.7
4.5 | 8.25 | 12
4.5 | 8 | 11.5
4.5 | 8.25 | 12
4.5 | 8.25 | 12
4.5 | 8.5 | 12.5
4.5 | 59.75 | 115
4.7 | 8.25 | 11.8
4.8 | 8.15 | 11.5
4.8 | 8.2 | 11.6
4.8 | 8.65 | 12.5
4.8 | Infinity | Infinity
4.9 | 8.45 | 12
4.9 | Infinity | Infinity
5 | 8.25 | 11.5
5 | 8.5 | 12
5 | 17.5 | 30
5 | 8.2 | 11.4
5 | 8.25 | 11.5
5 | 8.3 | 11.6
5 | 8.35 | 11.7
5 | 8.5 | 12
5 | 8.5 | 12
5 | 8.5 | 12
5.2 | 8.35 | 11.5
5.2 | 8.6 | 12
5.25 | 8.625 | 12
5.3 | 8.4 | 11.5
5.3 | 9.15 | 13
5.3 | 47.65 | 90
5.3 | Infinity | Infinity
5.4 | Infinity | Infinity
5.5 | 8.5 | 11.5
5.5 | 8.6 | 11.7
5.5 | 8.75 | 12
5.5 | 8.75 | 12
5.5 | 9 | 12.5
5.5 | 9.5 | 13.5
5.5 | Infinity | Infinity
5.5 | Infinity | Infinity
5.7 | Infinity | Infinity
5.9 | Infinity | Infinity
6 | 8.75 | 11.5
6 | 9 | 12
6 | 8.75 | 11.5
6 | 9.5 | 13
6 | 8.75 | 11.5
6.1 | 9.05 | 12
6.1 | Infinity | Infinity
6.2 | 8.85 | 11.5
6.3 | Infinity | Infinity
6.5 | 9 | 11.5
6.5 | 9.25 | 12
6.5 | 9.25 | 12
6.5 | Infinity | Infinity
6.6 | Infinity | Infinity
6.7 | 9.1 | 11.5
6.7 | Infinity | Infinity
6.75 | Infinity | Infinity
6.8 | Infinity | Infinity
6.9 | 9.55 | 12.2
6.9 | 48.45 | 90
6.9 | Infinity | Infinity
7 | 9.25 | 11.5
7 | 9.25 | 11.5
7 | 9.25 | 11.5
7 | Infinity | Infinity
7.15 | Infinity | Infinity
7.2 | 10.35 | 13.5
7.3 | 48.65 | 90
7.3 | Infinity | Infinity
7.3 | Infinity | Infinity
7.4 | 9.75 | 12.1
7.4 | Infinity | Infinity
7.5 | 9.5 | 11.5
7.5 | 9.75 | 12
7.5 | Infinity | Infinity
7.7 | 9.6 | 11.5
7.7 | Infinity | Infinity
7.75 | Infinity | Infinity
8 | 9.85 | 11.7
8 | 10 | 12
8 | 10.5 | 13
8.2 | Infinity | Infinity
8.3 | Infinity | Infinity
8.5 | 10 | 11.5
8.5 | 10.5 | 12.5
8.5 | Infinity | Infinity
8.6 | 53.8 | 99
8.7 | 10 | 11.3
8.7 | 10.2 | 11.7
8.9 | 10.2 | 11.5
9 | 10.5 | 12
9 | 10.15 | 11.3
9 | 10.25 | 11.5
9 | 10.5 | 12
9 | Infinity | Infinity
9.2 | 10.6 | 12
9.4 | 10.8 | 12.2
9.5 | 10.75 | 12
9.5 | 10.85 | 12.2
9.5 | Infinity | Infinity
9.6 | 10.55 | 11.5
9.7 | 10.6 | 11.5
9.7 | 10.85 | 12
9.8 | 11.15 | 12.5
10 | 10.8 | 11.6
10 | 10.75 | 11.5
10 | 11.25 | 12.5
10 | 11.25 | 12.5
10.2 | 11 | 11.8
10.5 | 11 | 11.5
10.5 | 11 | 11.5
10.5 | 12 | 13.5
10.7 | 11.5 | 12.3
| |
(144 rows)