]> granicus.if.org Git - postgresql/blob - src/test/regress/sql/line.sql
Revert "Tweak "line" test to avoid negative zeros on some platforms"
[postgresql] / src / test / regress / sql / line.sql
1 --
2 -- LINE
3 -- Infinite lines
4 --
5
6 --DROP TABLE LINE_TBL;
7 CREATE TABLE LINE_TBL (s line);
8
9 INSERT INTO LINE_TBL VALUES ('{1,-1,1}');
10 INSERT INTO LINE_TBL VALUES ('(0,0),(6,6)');
11 INSERT INTO LINE_TBL VALUES ('10,-10 ,-5,-4');
12 INSERT INTO LINE_TBL VALUES ('[-1e6,2e2,3e5, -4e1]');
13 INSERT INTO LINE_TBL VALUES ('(11,22,33,44)');
14
15 INSERT INTO LINE_TBL VALUES ('[(1,0),(1,0)]');
16
17 -- horizontal
18 INSERT INTO LINE_TBL VALUES ('[(1,3),(2,3)]');
19 -- vertical
20 INSERT INTO LINE_TBL VALUES ('[(3,1),(3,2)]');
21
22 -- bad values for parser testing
23 INSERT INTO LINE_TBL VALUES ('{0,0,1}');
24 INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)');
25 INSERT INTO LINE_TBL VALUES ('[1,2,3, 4');
26 INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]');
27 INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)');
28
29 select * from LINE_TBL;
30
31
32 -- functions and operators
33
34 SELECT * FROM LINE_TBL WHERE (s <-> line '[(1,2),(3,4)]') < 10;
35
36 SELECT * FROM LINE_TBL WHERE (point '(0.1,0.1)' <-> s) < 1;
37
38 SELECT * FROM LINE_TBL WHERE (lseg '[(0.1,0.1),(0.2,0.2)]' <-> s) < 1;
39
40 SELECT line '[(1,1),(2,1)]' <-> line '[(-1,-1),(-2,-1)]';
41 SELECT lseg '[(1,1),(2,1)]' <-> line '[(-1,-1),(-2,-1)]';
42 SELECT point '(-1,1)' <-> line '[(-3,0),(-4,0)]';
43
44 SELECT lseg '[(1,1),(5,5)]' ?# line '[(2,0),(0,2)]';  -- true
45 SELECT lseg '[(1,1),(5,5)]' ?# line '[(0,0),(1,0)]';  -- false
46
47 SELECT line '[(0,0),(1,1)]' ?# box '(0,0,2,2)';  -- true
48 SELECT line '[(3,0),(4,1)]' ?# box '(0,0,2,2)';  -- false
49
50 SELECT point '(1,1)' <@ line '[(0,0),(2,2)]';  -- true
51 SELECT point '(1,1)' <@ line '[(0,0),(1,0)]';  -- false
52
53 SELECT point '(1,1)' @ line '[(0,0),(2,2)]';  -- true
54 SELECT point '(1,1)' @ line '[(0,0),(1,0)]';  -- false
55
56 SELECT lseg '[(1,1),(2,2)]' <@ line '[(0,0),(2,2)]';  -- true
57 SELECT lseg '[(1,1),(2,1)]' <@ line '[(0,0),(1,0)]';  -- false
58
59 SELECT lseg '[(1,1),(2,2)]' @ line '[(0,0),(2,2)]';  -- true
60 SELECT lseg '[(1,1),(2,1)]' @ line '[(0,0),(1,0)]';  -- false
61
62 SELECT point '(0,1)' ## line '[(0,0),(1,1)]';
63
64 SELECT line '[(0,0),(1,1)]' ## lseg '[(1,0),(2,0)]';
65
66 SELECT line '[(0,0),(1,1)]' ?# line '[(1,0),(2,1)]';  -- false
67 SELECT line '[(0,0),(1,1)]' ?# line '[(1,0),(1,1)]';  -- true
68
69 SELECT line '[(0,0),(1,1)]' # line '[(1,0),(2,1)]';
70 SELECT line '[(0,0),(1,1)]' # line '[(1,0),(1,1)]';
71
72 SELECT line '[(0,0),(1,1)]' ?|| line '[(1,0),(2,1)]';  -- true
73 SELECT line '[(0,0),(1,1)]' ?|| line '[(1,0),(1,1)]';  -- false
74
75 SELECT line '[(0,0),(1,0)]' ?-| line '[(0,0),(0,1)]';  -- true
76 SELECT line '[(0,0),(1,1)]' ?-| line '[(1,0),(1,1)]';  -- false
77
78 SELECT ?- line '[(0,0),(1,0)]';  -- true
79 SELECT ?- line '[(0,0),(1,1)]';  -- false
80
81 SELECT ?| line '[(0,0),(0,1)]';  -- true
82 SELECT ?| line '[(0,0),(1,1)]';  -- false
83
84 SELECT line(point '(1,2)', point '(3,4)');
85
86 SELECT line '[(1,2),(3,4)]' = line '[(3,4),(4,5)]';  -- true
87 SELECT line '[(1,2),(3,4)]' = line '[(3,4),(4,4)]';  -- false