@@ -375,3 +375,92 @@ def test_18_index_scan_and_label_filter(self):
375375 query_result = redis_graph .query (query )
376376 expected_result = ["Alon" ]
377377 self .env .assertEquals (query_result .result_set [0 ], expected_result )
378+
379+ def test19_index_scan_and_with (self ):
380+ query = "MATCH (n)-[f:friend]->(m) WHERE f.created_at = 1 WITH n RETURN n.name"
381+ plan = redis_graph .execution_plan (query )
382+ self .env .assertIn ('Edge By Index Scan' , plan )
383+ self .env .assertNotIn ('All Node Scan' , plan )
384+ self .env .assertNotIn ('Filter' , plan )
385+ query_result = redis_graph .query (query )
386+ expected_result = ["Roi" ]
387+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
388+
389+ query = "MATCH (n:person)-[f:friend]->(m) WHERE f.created_at = 1 WITH n RETURN n.name"
390+ plan = redis_graph .execution_plan (query )
391+ self .env .assertIn ('Edge By Index Scan' , plan )
392+ self .env .assertIn ('Node By Label Scan' , plan )
393+ self .env .assertNotIn ('Filter' , plan )
394+ query_result = redis_graph .query (query )
395+ expected_result = ["Roi" ]
396+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
397+
398+ query = "MATCH (n:person)-[f:friend]->(m:person) WHERE f.created_at = 1 WITH n RETURN n.name"
399+ plan = redis_graph .execution_plan (query )
400+ self .env .assertIn ('Edge By Index Scan' , plan )
401+ self .env .assertIn ('Node By Label Scan' , plan )
402+ self .env .assertIn ('Filter' , plan )
403+ query_result = redis_graph .query (query )
404+ expected_result = ["Roi" ]
405+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
406+
407+ query = "MATCH (n:person {name: 'Roi'})-[f:friend]->(m:person) WHERE f.created_at = 1 WITH n RETURN n.name"
408+ plan = redis_graph .execution_plan (query )
409+ self .env .assertIn ('Edge By Index Scan' , plan )
410+ self .env .assertIn ('Node By Label Scan' , plan )
411+ self .env .assertIn ('Filter' , plan )
412+ query_result = redis_graph .query (query )
413+ expected_result = ["Roi" ]
414+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
415+
416+ query = "MATCH (n:person {name: 'Alon'})-[f:friend]->(m:person) WHERE f.created_at = 1 WITH n RETURN n.name"
417+ plan = redis_graph .execution_plan (query )
418+ self .env .assertIn ('Edge By Index Scan' , plan )
419+ self .env .assertIn ('Node By Label Scan' , plan )
420+ self .env .assertIn ('Filter' , plan )
421+ query_result = redis_graph .query (query )
422+ self .env .assertEquals (query_result .result_set , [])
423+
424+ query = "MATCH (n)<-[f:friend]-(m) WHERE f.created_at = 1 WITH n RETURN n.name"
425+ plan = redis_graph .execution_plan (query )
426+ self .env .assertIn ('Edge By Index Scan' , plan )
427+ self .env .assertNotIn ('All Node Scan' , plan )
428+ self .env .assertNotIn ('Filter' , plan )
429+ query_result = redis_graph .query (query )
430+ expected_result = ["Alon" ]
431+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
432+
433+ query = "MATCH (n:person)<-[f:friend]-(m) WHERE f.created_at = 1 WITH n RETURN n.name"
434+ plan = redis_graph .execution_plan (query )
435+ self .env .assertIn ('Edge By Index Scan' , plan )
436+ self .env .assertIn ('Node By Label Scan' , plan )
437+ self .env .assertNotIn ('Filter' , plan )
438+ query_result = redis_graph .query (query )
439+ expected_result = ["Alon" ]
440+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
441+
442+ query = "MATCH (n:person)<-[f:friend]-(m:person) WHERE f.created_at = 1 WITH n RETURN n.name"
443+ plan = redis_graph .execution_plan (query )
444+ self .env .assertIn ('Edge By Index Scan' , plan )
445+ self .env .assertIn ('Node By Label Scan' , plan )
446+ self .env .assertIn ('Filter' , plan )
447+ query_result = redis_graph .query (query )
448+ expected_result = ["Alon" ]
449+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
450+
451+ query = "MATCH (n:person {name: 'Roi'})<-[f:friend]-(m:person) WHERE f.created_at = 1 WITH n RETURN n.name"
452+ plan = redis_graph .execution_plan (query )
453+ self .env .assertIn ('Edge By Index Scan' , plan )
454+ self .env .assertIn ('Node By Label Scan' , plan )
455+ self .env .assertIn ('Filter' , plan )
456+ query_result = redis_graph .query (query )
457+ self .env .assertEquals (query_result .result_set , [])
458+
459+ query = "MATCH (n:person {name: 'Alon'})<-[f:friend]-(m:person) WHERE f.created_at = 1 WITH n RETURN n.name"
460+ plan = redis_graph .execution_plan (query )
461+ self .env .assertIn ('Edge By Index Scan' , plan )
462+ self .env .assertIn ('Node By Label Scan' , plan )
463+ self .env .assertIn ('Filter' , plan )
464+ query_result = redis_graph .query (query )
465+ expected_result = ["Alon" ]
466+ self .env .assertEquals (query_result .result_set [0 ], expected_result )
0 commit comments