@@ -181,21 +181,15 @@ public void testHeader(){
181181 Header header = queryResult .getHeader ();
182182
183183 List <String > schemaNames = header .getSchemaNames ();
184- List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
185184
186185 Assert .assertNotNull (schemaNames );
187- Assert .assertNotNull (schemaTypes );
188186
189187 Assert .assertEquals (3 , schemaNames .size ());
190- Assert .assertEquals (3 , schemaTypes .size ());
191188
192189 Assert .assertEquals ("a" , schemaNames .get (0 ));
193190 Assert .assertEquals ("r" , schemaNames .get (1 ));
194191 Assert .assertEquals ("a.age" , schemaNames .get (2 ));
195192
196- Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
197- Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
198- Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (2 ));
199193
200194 }
201195
@@ -368,17 +362,11 @@ public void testMultiThread(){
368362 Assert .assertNotNull (resultSet .getHeader ());
369363 Header header = resultSet .getHeader ();
370364 List <String > schemaNames = header .getSchemaNames ();
371- List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
372365 Assert .assertNotNull (schemaNames );
373- Assert .assertNotNull (schemaTypes );
374366 Assert .assertEquals (3 , schemaNames .size ());
375- Assert .assertEquals (3 , schemaTypes .size ());
376367 Assert .assertEquals ("a" , schemaNames .get (0 ));
377368 Assert .assertEquals ("r" , schemaNames .get (1 ));
378369 Assert .assertEquals ("a.age" , schemaNames .get (2 ));
379- Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
380- Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
381- Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (2 ));
382370 Assert .assertEquals (1 , resultSet .size ());
383371 Assert .assertTrue (resultSet .hasNext ());
384372 Record record = resultSet .next ();
@@ -413,15 +401,10 @@ public void testMultiThread(){
413401 Assert .assertNotNull (resultSet .getHeader ());
414402 Header header = resultSet .getHeader ();
415403 List <String > schemaNames = header .getSchemaNames ();
416- List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
417404 Assert .assertNotNull (schemaNames );
418- Assert .assertNotNull (schemaTypes );
419405 Assert .assertEquals (2 , schemaNames .size ());
420- Assert .assertEquals (2 , schemaTypes .size ());
421406 Assert .assertEquals ("a" , schemaNames .get (0 ));
422407 Assert .assertEquals ("r" , schemaNames .get (1 ));
423- Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
424- Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
425408 Assert .assertEquals (1 , resultSet .size ());
426409 Assert .assertTrue (resultSet .hasNext ());
427410 Record record = resultSet .next ();
@@ -462,15 +445,10 @@ public void testAdditionToProcedures(){
462445 Assert .assertNotNull (resultSet .getHeader ());
463446 Header header = resultSet .getHeader ();
464447 List <String > schemaNames = header .getSchemaNames ();
465- List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
466448 Assert .assertNotNull (schemaNames );
467- Assert .assertNotNull (schemaTypes );
468449 Assert .assertEquals (2 , schemaNames .size ());
469- Assert .assertEquals (2 , schemaTypes .size ());
470450 Assert .assertEquals ("a" , schemaNames .get (0 ));
471451 Assert .assertEquals ("r" , schemaNames .get (1 ));
472- Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
473- Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
474452 Assert .assertEquals (1 , resultSet .size ());
475453 Assert .assertTrue (resultSet .hasNext ());
476454 Record record = resultSet .next ();
@@ -497,15 +475,10 @@ public void testAdditionToProcedures(){
497475 Assert .assertNotNull (resultSet .getHeader ());
498476 header = resultSet .getHeader ();
499477 schemaNames = header .getSchemaNames ();
500- schemaTypes = header .getSchemaTypes ();
501478 Assert .assertNotNull (schemaNames );
502- Assert .assertNotNull (schemaTypes );
503479 Assert .assertEquals (2 , schemaNames .size ());
504- Assert .assertEquals (2 , schemaTypes .size ());
505480 Assert .assertEquals ("a" , schemaNames .get (0 ));
506481 Assert .assertEquals ("r" , schemaNames .get (1 ));
507- Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
508- Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
509482 Assert .assertEquals (1 , resultSet .size ());
510483 Assert .assertTrue (resultSet .hasNext ());
511484 record = resultSet .next ();
@@ -572,18 +545,10 @@ public void testMultiExec(){
572545
573546
574547 List <String > schemaNames = header .getSchemaNames ();
575- List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
576-
577548 Assert .assertNotNull (schemaNames );
578- Assert .assertNotNull (schemaTypes );
579-
580549 Assert .assertEquals (1 , schemaNames .size ());
581- Assert .assertEquals (1 , schemaTypes .size ());
582-
583550 Assert .assertEquals ("n" , schemaNames .get (0 ));
584551
585- Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
586-
587552 Property nameProperty = new Property ("name" , "a" );
588553
589554 Node expectedNode = new Node ();
@@ -606,18 +571,10 @@ public void testMultiExec(){
606571
607572
608573 schemaNames = header .getSchemaNames ();
609- schemaTypes = header .getSchemaTypes ();
610-
611574 Assert .assertNotNull (schemaNames );
612- Assert .assertNotNull (schemaTypes );
613-
614575 Assert .assertEquals (1 , schemaNames .size ());
615- Assert .assertEquals (1 , schemaTypes .size ());
616-
617576 Assert .assertEquals ("label" , schemaNames .get (0 ));
618577
619- Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (0 ));
620-
621578 Assert .assertEquals (1 , resultSet .size ());
622579 Assert .assertTrue (resultSet .hasNext ());
623580 record = resultSet .next ();
@@ -816,16 +773,9 @@ public void testArraySupport() {
816773
817774
818775 List <String > schemaNames = header .getSchemaNames ();
819- List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
820-
821776 Assert .assertNotNull (schemaNames );
822- Assert .assertNotNull (schemaTypes );
823-
824777 Assert .assertEquals (1 , schemaNames .size ());
825- Assert .assertEquals (1 , schemaTypes .size ());
826-
827778 Assert .assertEquals ("x" , schemaNames .get (0 ));
828- Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (0 ));
829779
830780 // check record
831781 Assert .assertEquals (1 , resultSet .size ());
@@ -846,16 +796,9 @@ public void testArraySupport() {
846796
847797
848798 schemaNames = header .getSchemaNames ();
849- schemaTypes = header .getSchemaTypes ();
850-
851799 Assert .assertNotNull (schemaNames );
852- Assert .assertNotNull (schemaTypes );
853-
854800 Assert .assertEquals (1 , schemaNames .size ());
855- Assert .assertEquals (1 , schemaTypes .size ());
856-
857801 Assert .assertEquals ("x" , schemaNames .get (0 ));
858- Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (0 ));
859802
860803 // check record
861804 Assert .assertEquals (1 , resultSet .size ());
@@ -875,16 +818,9 @@ record = resultSet.next();
875818
876819
877820 schemaNames = header .getSchemaNames ();
878- schemaTypes = header .getSchemaTypes ();
879-
880821 Assert .assertNotNull (schemaNames );
881- Assert .assertNotNull (schemaTypes );
882-
883822 Assert .assertEquals (1 , schemaNames .size ());
884- Assert .assertEquals (1 , schemaTypes .size ());
885-
886823 Assert .assertEquals ("x" , schemaNames .get (0 ));
887- Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (0 ));
888824
889825 // check record
890826 Assert .assertEquals (3 , resultSet .size ());
@@ -960,4 +896,49 @@ public void testParameters(){
960896 }
961897 }
962898
899+ @ Test
900+ public void testNullGraphEntities () {
901+ // Create two nodes connected by a single outgoing edge.
902+ Assert .assertNotNull (api .query ("social" , "CREATE (:L)-[:E]->(:L2)" ));
903+ // Test a query that produces 1 record with 3 null values.
904+ ResultSet resultSet = api .query ("social" , "OPTIONAL MATCH (a:NONEXISTENT)-[e]->(b) RETURN a, e, b" );
905+ Assert .assertEquals (1 , resultSet .size ());
906+ Assert .assertTrue (resultSet .hasNext ());
907+ Record record = resultSet .next ();
908+ Assert .assertFalse (resultSet .hasNext ());
909+ Assert .assertEquals (Arrays .asList (null , null , null ), record .values ());
910+
911+ // Test a query that produces 2 records, with 2 null values in the second.
912+ resultSet = api .query ("social" , "MATCH (a) OPTIONAL MATCH (a)-[e]->(b) RETURN a, e, b ORDER BY ID(a)" );
913+ Assert .assertEquals (2 , resultSet .size ());
914+ record = resultSet .next ();
915+ Assert .assertEquals (3 , record .size ());
916+
917+ Assert .assertNotNull (record .getValue (0 ));
918+ Assert .assertNotNull (record .getValue (1 ));
919+ Assert .assertNotNull (record .getValue (2 ));
920+
921+ record = resultSet .next ();
922+ Assert .assertEquals (3 , record .size ());
923+
924+ Assert .assertNotNull (record .getValue (0 ));
925+ Assert .assertNull (record .getValue (1 ));
926+ Assert .assertNull (record .getValue (2 ));
927+
928+ // Test a query that produces 2 records, the first containing a path and the second containing a null value.
929+ resultSet = api .query ("social" , "MATCH (a) OPTIONAL MATCH p = (a)-[e]->(b) RETURN p" );
930+ Assert .assertEquals (2 , resultSet .size ());
931+ record = resultSet .next ();
932+ Assert .assertEquals (1 , record .size ());
933+
934+ Object path = record .getValue (0 );
935+ Assert .assertNotNull (record .getValue (0 ));
936+
937+ record = resultSet .next ();
938+ Assert .assertEquals (1 , record .size ());
939+
940+ path = record .getValue (0 );
941+ Assert .assertNull (record .getValue (0 ));
942+
943+ }
963944}
0 commit comments