Skip to content

Commit 99b3b6b

Browse files
committed
Re Add ORDER BY Regression Tests
1 parent 34e10f8 commit 99b3b6b

File tree

6 files changed

+95
-212
lines changed

6 files changed

+95
-212
lines changed

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ DATA = postgraph--0.1.0.sql
8989
REGRESS = new_cypher \
9090
expr \
9191
cypher_create \
92-
cypher_match
92+
cypher_match \
93+
order_by
9394

9495
srcdir=`pwd`
9596
POSTGIS_DIR ?= postgis_dir

old/regress/cypher_remove.sql

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ SELECT * FROM cypher('cypher_remove', $$CREATE (:test_3 { i : 20 } )-[:test_3_ed
4545
SELECT * FROM cypher('cypher_remove', $$MATCH p=(n)-[:test_3_edge]->() REMOVE n.i RETURN p$$) AS (a traversal);
4646

4747
--test 4 Edges
48+
SELECT * FROM cypher('cypher_remove', $$MATCH (n) REMOVE n.i RETURN n$$) AS (a vertex);
4849
SELECT * FROM cypher('cypher_remove', $$CREATE (:test_4 { i : 20 } )-[:test_4_edge {j:20}]->(:test_4 {i:10})$$) AS (a gtype);
4950

5051
SELECT * FROM cypher('cypher_remove', $$MATCH ()-[n]->(:test_4) REMOVE n.i RETURN n$$) AS (a edge);

old/regress/order_by.sql

-63
This file was deleted.
File renamed without changes.

regress/sql/cypher_match.sql

+44-148
Original file line numberDiff line numberDiff line change
@@ -134,154 +134,86 @@ MATCH (n {lst: [1, NULL, 3.14, "string", {key: "value"}, []]}) RETURN n;
134134

135135
MATCH (n {lst: [1, NULL, 3.14, "string", {key: "value"}, [], "extra value"]}) RETURN n;
136136

137-
138-
139-
--
140137
-- Path of one vertex.
141-
--
142-
143138
MATCH p=() RETURN p;
144139

145140
--
146141
-- MATCH with WHERE EXISTS(pattern)
147142
--
148143
MATCH (u)-[e]->(v) RETURN u, e, v ;
149144

150-
151145
MATCH (u)-[e]->(v) WHERE EXISTS ((u)-[e]->(v)) RETURN u, e, v;
152146

153-
154147
-- Property Constraint in EXISTS
155148
MATCH (u) WHERE EXISTS((u)-[]->({id: "middle"})) RETURN u;
156149

157-
158150
MATCH (u) WHERE EXISTS((u)-[]->({id: "not a valid id"})) RETURN u;
159151

160-
161152
MATCH (u) WHERE EXISTS((u)-[]->({id: NULL})) RETURN u;
162153

163154
-- Exists checks for a loop. There shouldn't be any.
155+
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)) RETURN u, e, v;
164156

165-
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)) RETURN u, e, v ;
166-
AS (u vertex, e edge, v vertex);
167-
157+
-- Querying NOT EXISTS syntax
168158
-- Create a loop
169159

170160
CREATE (u:loop {id:'initial'})-[:self]->(u);
171161
-- dump paths
172162

173-
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(v)) RETURN u, e, v ;
174-
AS (u vertex, e edge, v vertex);
163+
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(v)) RETURN u, e, v;
175164

176165
-- Exists checks for a loop. There should be one.
177-
178-
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)) RETURN u, e, v ;
179-
AS (u vertex, e edge, v vertex);
166+
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)) RETURN u, e, v;
180167

181168
-- Exists checks for a loop. There should be one.
182-
183-
MATCH (u)-[e]->(v) WHERE EXISTS((v)-[e]->(v)) RETURN u, e, v ;
184-
AS (u vertex, e edge, v vertex);
169+
MATCH (u)-[e]->(v) WHERE EXISTS((v)-[e]->(v)) RETURN u, e, v;
185170

186171
-- Exists checks for a loop. There should be none because of edge uniqueness
187172
-- requirement.
188173

189-
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)-[e]->(u)) RETURN u, e, v ;
190-
AS (u vertex, e edge, v vertex);
191-
174+
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)-[e]->(u)) RETURN u, e, v;
192175

193-
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)) AND EXISTS((v)-[e]->(v)) RETURN u, e, v ;
194-
AS (u vertex, e edge, v vertex);
176+
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(u)) AND EXISTS((v)-[e]->(v)) RETURN u, e, v;
195177

178+
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(x)) RETURN u, e, v;
196179

197-
MATCH (u)-[e]->(v) WHERE EXISTS((u)-[e]->(x)) RETURN u, e, v ;
198-
AS (u vertex, e edge, v vertex);
180+
MATCH (u) WHERE EXISTS(MATCH (u)-[]->({id: "middle"}) RETURN 1) RETURN u;
199181

182+
MATCH (u) WHERE EXISTS(MATCH (u)-[]->({id: "middle"}) RETURN u) RETURN u;
200183

201-
MATCH (u) WHERE EXISTS(MATCH (u)-[]->({id: "middle"}) RETURN 1) RETURN u ;
202-
AS (u vertex);
184+
MATCH (u) WHERE u.id = ANY (MATCH (v) RETURN v.id) RETURN u;
203185

186+
MATCH (u) WHERE u.id = ANY (MATCH (v) RETURN NULL) RETURN u;
204187

205-
MATCH (u) WHERE EXISTS(MATCH (u)-[]->({id: "middle"}) RETURN u) RETURN u ;
206-
AS (u vertex);
207-
208-
209-
MATCH (u) WHERE u.id = ANY (MATCH (v) RETURN v.id) RETURN u ;
210-
AS (u vertex);
211-
212-
213-
MATCH (u) WHERE u.id = ANY (MATCH (v) RETURN NULL) RETURN u ;
214-
AS (u vertex);
215-
216-
217-
MATCH (u) WHERE u.id = SOME (MATCH (v) RETURN v.id) RETURN u ;
218-
AS (u vertex);
219-
220-
221-
MATCH (u) WHERE u.id = ALL (MATCH (v) RETURN v.id) RETURN u ;
222-
AS (u vertex);
188+
MATCH (u) WHERE u.id = SOME (MATCH (v) RETURN v.id) RETURN u;
223189

190+
MATCH (u) WHERE u.id = ALL (MATCH (v) RETURN v.id) RETURN u;
224191

225192
MATCH (u)
226-
WHERE EXISTS(
227-
MATCH (u)-[]->(v)
228-
WHERE v.id = "middle"
229-
RETURN 1
230-
)
193+
WHERE EXISTS( MATCH (u)-[]->(v) WHERE v.id = "middle" RETURN 1)
231194
RETURN u;
232195

233-
MATCH (u) WHERE EXISTS(MATCH (u)-[]->({id: "gsjka"}) RETURN 1) RETURN u ;
234-
AS (u vertex);
235-
196+
MATCH (u) WHERE EXISTS(MATCH (u)-[]->({id: "gsjka"}) RETURN 1) RETURN u;
236197

198+
MATCH (u) WHERE EXISTS(MATCH (v {id: 'middle'}) MATCH (u)-[]->(v) RETURN 1) RETURN u;
237199

238-
MATCH (u) WHERE EXISTS(MATCH (v {id: 'middle'}) MATCH (u)-[]->(v) RETURN 1) RETURN u ;
239-
AS (u vertex);
200+
MATCH (u) WHERE EXISTS(MATCH (v {id: 'middle'}) MATCH (u)-[]->(v) RETURN 1) RETURN u;
240201

241-
EXPLAIN
242-
MATCH (u) WHERE EXISTS(MATCH (v {id: 'middle'}) MATCH (u)-[]->(v) RETURN 1) RETURN u ;
243-
AS (u vertex);
202+
MATCH (u) WHERE EXISTS(MATCH (u)-[]->(v {id: 'middle'}) RETURN 1) RETURN u;
244203

245-
EXPLAIN
204+
MATCH (u) RETURN case WHEN EXISTS(MATCH (u)-[]->({id: "gsjka"}) RETURN 1) THEN 1 ELSE 2 END;
246205

247-
MATCH (u) WHERE EXISTS(MATCH (u)-[]->(v {id: 'middle'}) RETURN 1) RETURN u ;
248-
AS (u vertex);
249206

207+
MATCH (u) RETURN case WHEN EXISTS(MATCH (u)-[]->() RETURN 1) THEN 1 ELSE 2 END;
250208

209+
210+
MATCH (u) RETURN case WHEN EXISTS(MATCH (u)-[]->() RETURN 1) THEN 1 ELSE 2 END;
251211

252212

253-
MATCH (u)
254-
RETURN case WHEN EXISTS(MATCH (u)-[]->({id: "gsjka"}) RETURN 1) THEN 1 ELSE 2 END
255-
)
256-
AS (u gtype);
213+
MATCH (u) RETURN case WHEN EXISTS((u)-[]->()) THEN 1 ELSE 2 END;
257214

258215

259-
MATCH (u)
260-
RETURN case WHEN EXISTS(MATCH (u)-[]->() RETURN 1) THEN 1 ELSE 2 END
261-
)
262-
AS (u gtype);
263-
264-
265-
EXPLAIN
266-
MATCH (u)
267-
RETURN case WHEN EXISTS(MATCH (u)-[]->() RETURN 1) THEN 1 ELSE 2 END
268-
)
269-
AS (u gtype);
270-
271-
272-
MATCH (u)
273-
RETURN case WHEN EXISTS((u)-[]->()) THEN 1 ELSE 2 END
274-
)
275-
AS (u gtype);
276-
277-
278-
EXPLAIN
279-
SELECT *
280-
FROM cypher_match._ag_label_vertex as v
281-
WHERE EXISTS (
282-
SELECT * FROM cypher_match._ag_label_edge as e WHERE v.id = e.start_id
283-
);
284-
216+
/*
285217
EXPLAIN
286218
SELECT *
287219
FROM cypher_match._ag_label_vertex as u
@@ -290,6 +222,7 @@ SELECT * FROM cypher_match._ag_label_edge as e
290222
JOIN cypher_match._ag_label_vertex as v ON v.id = e.end_id
291223
WHERE u.id = e.start_id
292224
);
225+
*/
293226

294227
--
295228
--Distinct
@@ -298,94 +231,57 @@ MATCH (u) RETURN DISTINCT props(u);
298231

299232
CREATE (u:duplicate)-[:dup_edge {id:1 }]->(:other_v);
300233

301-
MATCH (u:duplicate)
302-
CREATE (u)-[:dup_edge {id:2 }]->(:other_v);
234+
MATCH (u:duplicate) CREATE (u)-[:dup_edge {id:2 }]->(:other_v);
303235

304-
MATCH (u:duplicate)-[]-(:other_v)
305-
RETURN DISTINCT u;
306-
307-
MATCH p=(:duplicate)-[]-(:other_v)
308-
RETURN DISTINCT p;
309-
--
310-
-- Limit
311-
--
236+
MATCH (u:duplicate)-[]-(:other_v) RETURN DISTINCT u;
312237

313-
MATCH (u)
314-
RETURN u;
238+
MATCH p=(:duplicate)-[]-(:other_v) RETURN DISTINCT p;
315239

316-
MATCH (u)
317-
RETURN u LIMIT 3;
318240
--
319-
-- Skip
241+
-- Limit & Skip
320242
--
243+
MATCH (u) RETURN u;
321244

322-
MATCH (u)
323-
RETURN u SKIP 7;
245+
MATCH (u) RETURN u LIMIT 3;
324246

325-
MATCH (u)
326-
RETURN u SKIP 7 LIMIT 3;
247+
MATCH (u) RETURN u SKIP 7;
248+
249+
MATCH (u) RETURN u SKIP 7 LIMIT 3;
327250

328251
--
329252
-- Optional Match
330253
--
331-
332254
CREATE (:opt_match_v {name: 'someone'})-[:opt_match_e]->(:opt_match_v {name: 'somebody'}),
333-
(:opt_match_v {name: 'anybody'})-[:opt_match_e]->(:opt_match_v {name: 'nobody'});
255+
(:opt_match_v {name: 'anybody'})-[:opt_match_e]->(:opt_match_v {name: 'nobody'});
334256

335-
MATCH (u:opt_match_v)
336-
OPTIONAL MATCH (u)-[m]-(l)
337-
RETURN u.name as u, type(m), l.name as l
338-
ORDER BY u, m, l;
339257

340-
OPTIONAL MATCH (n:opt_match_v)-[r]->(p), (m:opt_match_v)-[s]->(q)
341-
WHERE id(n) <> id(m)
342-
RETURN n.name as n, type(r;
343-
m.name AS m, type(s;
344-
ORDER BY n, p, m, q;
258+
MATCH (u:opt_match_v) OPTIONAL MATCH (u)-[m]-(l) RETURN u.name as u, type(m), l.name as l ORDER BY u, m, l;
259+
260+
OPTIONAL MATCH (n:opt_match_v)-[r]->(p), (m:opt_match_v)-[s]->(q) WHERE id(n) <> id(m) RETURN n.name as n, type(r); m.name AS m, type(s); ORDER BY n, p, m, q;
345261

346262
MATCH (n:opt_match_v), (m:opt_match_v)
347263
WHERE id(n) <> id(m)
348264
OPTIONAL MATCH (n)-[r]->(p), (m)-[s]->(q)
349-
RETURN n.name AS n, type(r;
350-
m.name AS m, type(s;
265+
RETURN n.name AS n, type(r)
266+
m.name AS m, type(s)
351267
ORDER BY n, p, m, q;
352268

353-
-- Prepare
354-
CREATE (u {name: "orphan"})
355-
CREATE (u1 {name: "F"})-[u2:e1]->(u3 {name: "T"})
356-
RETURN u1, u2, u3;
269+
CREATE (u {name: "orphan"}) CREATE (u1 {name: "F"})-[u2:e1]->(u3 {name: "T"}) RETURN u1, u2, u3;
357270

358271
-- Querying NOT EXISTS syntax
359-
MATCH (f),(t)
360-
WHERE NOT EXISTS((f)-[]->(t))
361-
RETURN f.name, t.name;
272+
MATCH (f),(t) WHERE NOT EXISTS((f)-[]->(t)) RETURN f.name, t.name;
362273

363274
-- Querying EXISTS syntax
364-
MATCH (f),(t)
365-
WHERE EXISTS((f)-[]->(t))
366-
RETURN f.name, t.name;
275+
MATCH (f),(t) WHERE EXISTS((f)-[]->(t)) RETURN f.name, t.name;
367276

368277

369278
--
370279
-- Constraints and WHERE clause together
371280
--
372281
CREATE ({i: 1, j: 2, k: 3}), ({i: 1, j: 3}), ({i:2, k: 3});
373282

374-
375283
MATCH (n {j: 2}) WHERE n.i = 1 RETURN n;
376284

377-
378-
--
379-
-- ORDER BY
380-
--
381-
MATCH (n) ORDER BY n.i RETURN n;
382-
383-
MATCH (n) MATCH (n)-[]->(m) ORDER BY m RETURN n;
384-
385-
MATCH (n) MATCH (n)-[]-(m) ORDER BY m DESC RETURN m;
386-
387-
MATCH (n) MATCH (n)-[]-(m) ORDER BY m ASC RETURN m;
388-
389285
--
390286
-- Prepared Statement Property Constraint
391287
--

0 commit comments

Comments
 (0)