summaryrefslogtreecommitdiff
path: root/src/test/regress/sql/line.sql
blob: 8a1952387ee1cd5f8ca73b3f2240d7709e51c17d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
--
-- LINE
-- Infinite lines
--

--DROP TABLE LINE_TBL;
CREATE TABLE LINE_TBL (s line) DISTRIBUTE BY REPLICATION;

INSERT INTO LINE_TBL VALUES ('{1,-1,1}');
INSERT INTO LINE_TBL VALUES ('(0,0),(6,6)');
INSERT INTO LINE_TBL VALUES ('10,-10 ,-5,-4');
INSERT INTO LINE_TBL VALUES ('[-1e6,2e2,3e5, -4e1]');
INSERT INTO LINE_TBL VALUES ('(11,22,33,44)');

INSERT INTO LINE_TBL VALUES ('[(1,0),(1,0)]');

-- horizontal
INSERT INTO LINE_TBL VALUES ('[(1,3),(2,3)]');
-- vertical
INSERT INTO LINE_TBL VALUES ('[(3,1),(3,2)]');

-- bad values for parser testing
INSERT INTO LINE_TBL VALUES ('{0,0,1}');
INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)');
INSERT INTO LINE_TBL VALUES ('[1,2,3, 4');
INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]');
INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)');

select * from LINE_TBL;


-- functions and operators

SELECT * FROM LINE_TBL WHERE (s <-> line '[(1,2),(3,4)]') < 10;

SELECT * FROM LINE_TBL WHERE (point '(0.1,0.1)' <-> s) < 1;

SELECT * FROM LINE_TBL WHERE (lseg '[(0.1,0.1),(0.2,0.2)]' <-> s) < 1;

SELECT line '[(1,1),(2,1)]' <-> line '[(-1,-1),(-2,-1)]';
SELECT lseg '[(1,1),(2,1)]' <-> line '[(-1,-1),(-2,-1)]';
SELECT point '(-1,1)' <-> line '[(-3,0),(-4,0)]';

SELECT lseg '[(1,1),(5,5)]' ?# line '[(2,0),(0,2)]';  -- true
SELECT lseg '[(1,1),(5,5)]' ?# line '[(0,0),(1,0)]';  -- false

SELECT line '[(0,0),(1,1)]' ?# box '(0,0,2,2)';  -- true
SELECT line '[(3,0),(4,1)]' ?# box '(0,0,2,2)';  -- false

SELECT point '(1,1)' <@ line '[(0,0),(2,2)]';  -- true
SELECT point '(1,1)' <@ line '[(0,0),(1,0)]';  -- false

SELECT point '(1,1)' @ line '[(0,0),(2,2)]';  -- true
SELECT point '(1,1)' @ line '[(0,0),(1,0)]';  -- false

SELECT lseg '[(1,1),(2,2)]' <@ line '[(0,0),(2,2)]';  -- true
SELECT lseg '[(1,1),(2,1)]' <@ line '[(0,0),(1,0)]';  -- false

SELECT lseg '[(1,1),(2,2)]' @ line '[(0,0),(2,2)]';  -- true
SELECT lseg '[(1,1),(2,1)]' @ line '[(0,0),(1,0)]';  -- false

SELECT point '(0,1)' ## line '[(0,0),(1,1)]';

SELECT line '[(0,0),(1,1)]' ## lseg '[(1,0),(2,0)]';

SELECT line '[(0,0),(1,1)]' ?# line '[(1,0),(2,1)]';  -- false
SELECT line '[(0,0),(1,1)]' ?# line '[(1,0),(1,1)]';  -- true

SELECT line '[(0,0),(1,1)]' # line '[(1,0),(2,1)]';
SELECT line '[(0,0),(1,1)]' # line '[(1,0),(1,1)]';

SELECT line '[(0,0),(1,1)]' ?|| line '[(1,0),(2,1)]';  -- true
SELECT line '[(0,0),(1,1)]' ?|| line '[(1,0),(1,1)]';  -- false

SELECT line '[(0,0),(1,0)]' ?-| line '[(0,0),(0,1)]';  -- true
SELECT line '[(0,0),(1,1)]' ?-| line '[(1,0),(1,1)]';  -- false

SELECT ?- line '[(0,0),(1,0)]';  -- true
SELECT ?- line '[(0,0),(1,1)]';  -- false

SELECT ?| line '[(0,0),(0,1)]';  -- true
SELECT ?| line '[(0,0),(1,1)]';  -- false

SELECT line(point '(1,2)', point '(3,4)');

SELECT line '[(1,2),(3,4)]' = line '[(3,4),(4,5)]';  -- true
SELECT line '[(1,2),(3,4)]' = line '[(3,4),(4,4)]';  -- false