@@ -134,154 +134,86 @@ MATCH (n {lst: [1, NULL, 3.14, "string", {key: "value"}, []]}) RETURN n;
134
134
135
135
MATCH (n {lst: [1 , NULL , 3 .14 , " string" , {key: " value" }, [], " extra value" ]}) RETURN n;
136
136
137
-
138
-
139
- --
140
137
-- Path of one vertex.
141
- --
142
-
143
138
MATCH p= () RETURN p;
144
139
145
140
--
146
141
-- MATCH with WHERE EXISTS(pattern)
147
142
--
148
143
MATCH (u)- [e]- > (v) RETURN u, e, v ;
149
144
150
-
151
145
MATCH (u)- [e]- > (v) WHERE EXISTS ((u)- [e]- > (v)) RETURN u, e, v;
152
146
153
-
154
147
-- Property Constraint in EXISTS
155
148
MATCH (u) WHERE EXISTS((u)- []- > ({id: " middle" })) RETURN u;
156
149
157
-
158
150
MATCH (u) WHERE EXISTS((u)- []- > ({id: " not a valid id" })) RETURN u;
159
151
160
-
161
152
MATCH (u) WHERE EXISTS((u)- []- > ({id: NULL })) RETURN u;
162
153
163
154
-- Exists checks for a loop. There shouldn't be any.
155
+ MATCH (u)- [e]- > (v) WHERE EXISTS((u)- [e]- > (u)) RETURN u, e, v;
164
156
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
168
158
-- Create a loop
169
159
170
160
CREATE (u:loop {id:' initial' })- [:self]- > (u);
171
161
-- dump paths
172
162
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;
175
164
176
165
-- 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;
180
167
181
168
-- 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;
185
170
186
171
-- Exists checks for a loop. There should be none because of edge uniqueness
187
172
-- requirement.
188
173
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;
192
175
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;
195
177
178
+ MATCH (u)- [e]- > (v) WHERE EXISTS((u)- [e]- > (x)) RETURN u, e, v;
196
179
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;
199
181
182
+ MATCH (u) WHERE EXISTS(MATCH (u)- []- > ({id: " middle" }) RETURN u) RETURN u;
200
183
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;
203
185
186
+ MATCH (u) WHERE u .id = ANY (MATCH (v) RETURN NULL ) RETURN u;
204
187
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;
223
189
190
+ MATCH (u) WHERE u .id = ALL (MATCH (v) RETURN v .id ) RETURN u;
224
191
225
192
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 )
231
194
RETURN u;
232
195
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;
236
197
198
+ MATCH (u) WHERE EXISTS(MATCH (v {id: ' middle' }) MATCH (u)- []- > (v) RETURN 1 ) RETURN u;
237
199
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;
240
201
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;
244
203
245
- EXPLAIN
204
+ MATCH (u) RETURN case WHEN EXISTS(MATCH (u) - [] - > ({id: " gsjka " }) RETURN 1 ) THEN 1 ELSE 2 END;
246
205
247
- MATCH (u) WHERE EXISTS(MATCH (u)- []- > (v {id: ' middle' }) RETURN 1 ) RETURN u ;
248
- AS (u vertex);
249
206
207
+ MATCH (u) RETURN case WHEN EXISTS(MATCH (u)- []- > () RETURN 1 ) THEN 1 ELSE 2 END;
250
208
209
+
210
+ MATCH (u) RETURN case WHEN EXISTS(MATCH (u)- []- > () RETURN 1 ) THEN 1 ELSE 2 END;
251
211
252
212
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;
257
214
258
215
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
+ /*
285
217
EXPLAIN
286
218
SELECT *
287
219
FROM cypher_match._ag_label_vertex as u
@@ -290,6 +222,7 @@ SELECT * FROM cypher_match._ag_label_edge as e
290
222
JOIN cypher_match._ag_label_vertex as v ON v.id = e.end_id
291
223
WHERE u.id = e.start_id
292
224
);
225
+ */
293
226
294
227
--
295
228
-- Distinct
@@ -298,94 +231,57 @@ MATCH (u) RETURN DISTINCT props(u);
298
231
299
232
CREATE (u:duplicate)- [:dup_edge {id:1 }]- > (:other_v);
300
233
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);
303
235
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;
312
237
313
- MATCH (u)
314
- RETURN u;
238
+ MATCH p= (:duplicate)- []- (:other_v) RETURN DISTINCT p;
315
239
316
- MATCH (u)
317
- RETURN u LIMIT 3 ;
318
240
--
319
- -- Skip
241
+ -- Limit & Skip
320
242
--
243
+ MATCH (u) RETURN u;
321
244
322
- MATCH (u)
323
- RETURN u SKIP 7 ;
245
+ MATCH (u) RETURN u LIMIT 3 ;
324
246
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 ;
327
250
328
251
--
329
252
-- Optional Match
330
253
--
331
-
332
254
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' });
334
256
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;
339
257
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;
345
261
346
262
MATCH (n:opt_match_v), (m:opt_match_v)
347
263
WHERE id(n) <> id(m)
348
264
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)
351
267
ORDER BY n, p, m, q;
352
268
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;
357
270
358
271
-- 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 ;
362
273
363
274
-- 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 ;
367
276
368
277
369
278
--
370
279
-- Constraints and WHERE clause together
371
280
--
372
281
CREATE ({i: 1 , j: 2 , k: 3 }), ({i: 1 , j: 3 }), ({i:2 , k: 3 });
373
282
374
-
375
283
MATCH (n {j: 2 }) WHERE n .i = 1 RETURN n;
376
284
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
-
389
285
--
390
286
-- Prepared Statement Property Constraint
391
287
--
0 commit comments