Skip to content

Commit 33e5e10

Browse files
authored
Issue # 1007 - Add regression tests for MATCH clause using labels only (#1024)
- Add regression tests for queries entering either or both last IF-conditionals in make_directed_edge_join_conditions in cypher_clause.c
1 parent b52a759 commit 33e5e10

File tree

2 files changed

+265
-0
lines changed

2 files changed

+265
-0
lines changed

Diff for: regress/expected/cypher_match.out

+184
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,46 @@ $$) AS (a agtype);
138138
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
139139
(4 rows)
140140

141+
SELECT * FROM cypher('cypher_match', $$
142+
MATCH (:v1)-[e]-() RETURN e
143+
$$) AS (a agtype);
144+
a
145+
---------------------------------------------------------------------------------------------------------------------------
146+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
147+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
148+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
149+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
150+
(4 rows)
151+
152+
SELECT * FROM cypher('cypher_match', $$
153+
MATCH (:v1)-[e]-(:v1) RETURN e
154+
$$) AS (a agtype);
155+
a
156+
---------------------------------------------------------------------------------------------------------------------------
157+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
158+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
159+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
160+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
161+
(4 rows)
162+
163+
SELECT * FROM cypher('cypher_match', $$
164+
MATCH ()-[]-()-[e]-(:v1) RETURN e
165+
$$) AS (a agtype);
166+
a
167+
---------------------------------------------------------------------------------------------------------------------------
168+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
169+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
170+
(2 rows)
171+
172+
SELECT * FROM cypher('cypher_match', $$
173+
MATCH (a)-[]-()-[]-(:v1) RETURN a
174+
$$) AS (a agtype);
175+
a
176+
----------------------------------------------------------------------------------
177+
{"id": 1125899906842625, "label": "v1", "properties": {"id": "initial"}}::vertex
178+
{"id": 1125899906842627, "label": "v1", "properties": {"id": "end"}}::vertex
179+
(2 rows)
180+
141181
-- Right Path Test
142182
SELECT * FROM cypher('cypher_match', $$
143183
MATCH (a:v1)-[:e1]->(b:v1)-[:e1]->(c:v1) RETURN a, b, c
@@ -187,6 +227,33 @@ $$) AS (a agtype);
187227
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
188228
(1 row)
189229

230+
SELECT * FROM cypher('cypher_match', $$
231+
MATCH (:v1)-[e]->() RETURN e
232+
$$) AS (a agtype);
233+
a
234+
---------------------------------------------------------------------------------------------------------------------------
235+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
236+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
237+
(2 rows)
238+
239+
SELECT * FROM cypher('cypher_match', $$
240+
MATCH ()-[e]->(:v1) RETURN e
241+
$$) AS (a agtype);
242+
a
243+
---------------------------------------------------------------------------------------------------------------------------
244+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
245+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
246+
(2 rows)
247+
248+
SELECT * FROM cypher('cypher_match', $$
249+
MATCH (:v1)-[e]->(:v1) RETURN e
250+
$$) AS (a agtype);
251+
a
252+
---------------------------------------------------------------------------------------------------------------------------
253+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
254+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
255+
(2 rows)
256+
190257
--Left Path Test
191258
SELECT * FROM cypher('cypher_match', $$
192259
MATCH (a:v1)<-[:e1]-(b:v1)<-[:e1]-(c:v1) RETURN a, b, c
@@ -236,6 +303,15 @@ $$) AS (a agtype);
236303
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
237304
(1 row)
238305

306+
SELECT * FROM cypher('cypher_match', $$
307+
MATCH (:v1)<-[e]-(:v1) RETURN e
308+
$$) AS (a agtype);
309+
a
310+
---------------------------------------------------------------------------------------------------------------------------
311+
{"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge
312+
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
313+
(2 rows)
314+
239315
--Divergent Path Tests
240316
SELECT * FROM cypher('cypher_match', $$
241317
CREATE (:v2 {id:'initial'})<-[:e2]-(:v2 {id:'middle'})-[:e2]->(:v2 {id:'end'})
@@ -278,6 +354,40 @@ $$) AS (i agtype);
278354
{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex
279355
(4 rows)
280356

357+
SELECT * FROM cypher('cypher_match', $$
358+
MATCH (:v2)<-[]-(:v2)-[]->(:v2)
359+
MATCH p=()-[]->()
360+
RETURN p
361+
$$) AS (i agtype);
362+
i
363+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
364+
[{"id": 1125899906842625, "label": "v1", "properties": {"id": "initial"}}::vertex, {"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge, {"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex]::path
365+
[{"id": 1125899906842625, "label": "v1", "properties": {"id": "initial"}}::vertex, {"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge, {"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex]::path
366+
[{"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex, {"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge, {"id": 1125899906842627, "label": "v1", "properties": {"id": "end"}}::vertex]::path
367+
[{"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex, {"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge, {"id": 1125899906842627, "label": "v1", "properties": {"id": "end"}}::vertex]::path
368+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974594, "label": "e2", "end_id": 1688849860263937, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263937, "label": "v2", "properties": {"id": "initial"}}::vertex]::path
369+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974594, "label": "e2", "end_id": 1688849860263937, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263937, "label": "v2", "properties": {"id": "initial"}}::vertex]::path
370+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974593, "label": "e2", "end_id": 1688849860263939, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263939, "label": "v2", "properties": {"id": "end"}}::vertex]::path
371+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974593, "label": "e2", "end_id": 1688849860263939, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263939, "label": "v2", "properties": {"id": "end"}}::vertex]::path
372+
(8 rows)
373+
374+
SELECT * FROM cypher('cypher_match', $$
375+
MATCH ()<-[]-(:v2)-[]->()
376+
MATCH p=()-[]->()
377+
RETURN p
378+
$$) AS (i agtype);
379+
i
380+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
381+
[{"id": 1125899906842625, "label": "v1", "properties": {"id": "initial"}}::vertex, {"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge, {"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex]::path
382+
[{"id": 1125899906842625, "label": "v1", "properties": {"id": "initial"}}::vertex, {"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge, {"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex]::path
383+
[{"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex, {"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge, {"id": 1125899906842627, "label": "v1", "properties": {"id": "end"}}::vertex]::path
384+
[{"id": 1125899906842626, "label": "v1", "properties": {"id": "middle"}}::vertex, {"id": 1407374883553281, "label": "e1", "end_id": 1125899906842627, "start_id": 1125899906842626, "properties": {}}::edge, {"id": 1125899906842627, "label": "v1", "properties": {"id": "end"}}::vertex]::path
385+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974594, "label": "e2", "end_id": 1688849860263937, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263937, "label": "v2", "properties": {"id": "initial"}}::vertex]::path
386+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974594, "label": "e2", "end_id": 1688849860263937, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263937, "label": "v2", "properties": {"id": "initial"}}::vertex]::path
387+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974593, "label": "e2", "end_id": 1688849860263939, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263939, "label": "v2", "properties": {"id": "end"}}::vertex]::path
388+
[{"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974593, "label": "e2", "end_id": 1688849860263939, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263939, "label": "v2", "properties": {"id": "end"}}::vertex]::path
389+
(8 rows)
390+
281391
--Convergent Path Tests
282392
SELECT * FROM cypher('cypher_match', $$
283393
CREATE (:v3 {id:'initial'})-[:e3]->(:v3 {id:'middle'})<-[:e3]-(:v3 {id:'end'})
@@ -296,6 +406,16 @@ $$) AS (i agtype);
296406
{"id": 1407374883553282, "label": "e1", "end_id": 1125899906842626, "start_id": 1125899906842625, "properties": {}}::edge
297407
(2 rows)
298408

409+
SELECT * FROM cypher('cypher_match', $$
410+
MATCH (:v3)-[b:e3]->()
411+
RETURN b
412+
$$) AS (i agtype);
413+
i
414+
---------------------------------------------------------------------------------------------------------------------------
415+
{"id": 2533274790395905, "label": "e3", "end_id": 2251799813685250, "start_id": 2251799813685251, "properties": {}}::edge
416+
{"id": 2533274790395906, "label": "e3", "end_id": 2251799813685250, "start_id": 2251799813685249, "properties": {}}::edge
417+
(2 rows)
418+
299419
SELECT * FROM cypher('cypher_match', $$
300420
MATCH ()-[]->(n:v1)<-[]-()
301421
MATCH p=(n)<-[]-()
@@ -343,6 +463,16 @@ $$) AS (div_path agtype);
343463
[{"id": 1688849860263937, "label": "v2", "properties": {"id": "initial"}}::vertex, {"id": 1970324836974594, "label": "e2", "end_id": 1688849860263937, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263938, "label": "v2", "properties": {"id": "middle"}}::vertex, {"id": 1970324836974593, "label": "e2", "end_id": 1688849860263939, "start_id": 1688849860263938, "properties": {}}::edge, {"id": 1688849860263939, "label": "v2", "properties": {"id": "end"}}::vertex]::path
344464
(1 row)
345465

466+
SELECT * FROM cypher('cypher_match', $$
467+
MATCH (a)-[]->(:v3)<-[]-(b)
468+
where a.id = 'initial'
469+
RETURN b
470+
$$) AS (con_path agtype);
471+
con_path
472+
------------------------------------------------------------------------------
473+
{"id": 2251799813685251, "label": "v3", "properties": {"id": "end"}}::vertex
474+
(1 row)
475+
346476
--Patterns
347477
SELECT * FROM cypher('cypher_match', $$
348478
MATCH (a:v1), p=(a)-[]-()-[]-()
@@ -421,6 +551,27 @@ $$) AS (i agtype, b agtype, c agtype);
421551
1 | "initial" | "middle"
422552
(12 rows)
423553

554+
SELECT * FROM cypher('cypher_match', $$
555+
MATCH (a:v)
556+
MATCH (:v1)-[]-(c)
557+
RETURN a.i, c.id
558+
$$) AS (i agtype, c agtype);
559+
i | c
560+
---+-----------
561+
| "initial"
562+
0 | "initial"
563+
1 | "initial"
564+
| "middle"
565+
0 | "middle"
566+
1 | "middle"
567+
| "middle"
568+
0 | "middle"
569+
1 | "middle"
570+
| "end"
571+
0 | "end"
572+
1 | "end"
573+
(12 rows)
574+
424575
--
425576
-- Property constraints
426577
--
@@ -1629,6 +1780,39 @@ $$) AS (a agtype, r agtype);
16291780
{"id": 844424930131969, "label": "A", "properties": {}}::vertex | {"id": 1125899906842625, "label": "incs", "end_id": 1407374883553281, "start_id": 844424930131969, "properties": {}}::edge
16301781
(1 row)
16311782

1783+
SELECT * FROM cypher('test_retrieve_var', $$
1784+
MATCH (a:A)-[r:incs]->() WITH a, r
1785+
OPTIONAL MATCH (a)-[r]->(c)
1786+
WHERE EXISTS((:A)<-[]-(c))
1787+
RETURN a, r
1788+
$$) AS (a agtype, r agtype);
1789+
a | r
1790+
-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------
1791+
{"id": 844424930131969, "label": "A", "properties": {}}::vertex | {"id": 1125899906842625, "label": "incs", "end_id": 1407374883553281, "start_id": 844424930131969, "properties": {}}::edge
1792+
(1 row)
1793+
1794+
SELECT * FROM cypher('test_retrieve_var', $$
1795+
MATCH (a:A)-[r:incs]->() WITH a, r
1796+
OPTIONAL MATCH (a)-[r]->(c)
1797+
WHERE EXISTS((c)<-[]-(:A))
1798+
RETURN a, r
1799+
$$) AS (a agtype, r agtype);
1800+
a | r
1801+
-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------
1802+
{"id": 844424930131969, "label": "A", "properties": {}}::vertex | {"id": 1125899906842625, "label": "incs", "end_id": 1407374883553281, "start_id": 844424930131969, "properties": {}}::edge
1803+
(1 row)
1804+
1805+
SELECT * FROM cypher('test_retrieve_var', $$
1806+
MATCH (a:A)-[r:incs]->() WITH a, r
1807+
OPTIONAL MATCH (a)-[r]->(c)
1808+
WHERE EXISTS((:C)<-[]-(:A))
1809+
RETURN a, r
1810+
$$) AS (a agtype, r agtype);
1811+
a | r
1812+
-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------
1813+
{"id": 844424930131969, "label": "A", "properties": {}}::vertex | {"id": 1125899906842625, "label": "incs", "end_id": 1407374883553281, "start_id": 844424930131969, "properties": {}}::edge
1814+
(1 row)
1815+
16321816
SELECT * FROM cypher('test_retrieve_var', $$
16331817
MATCH (a:A)-[r:incs]->() WITH a, r
16341818
OPTIONAL MATCH (a)-[r]->(c)

0 commit comments

Comments
 (0)