Project Number Date
cypher-for-gremlin 0.9.9 07 Jun 2018, 12:04

Feature Report

Steps Scenarios Features
Feature Passed Failed Skipped Pending Undefined Total Passed Failed Total Duration Status
OptionalMatchAcceptance 108 2 0 0 0 110 20 2 22 0.818 Failed
Feature OptionalMatchAcceptance
0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.613 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.617 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.018
When executing query: 0.004
MATCH (n:Single)
OPTIONAL MATCH (n)-[r]-(m:NonExistent)
RETURN r

12:03:32.634 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n:Single) OPTIONAL MATCH (n)-[r]-(m:NonExistent) RETURN r 12:03:32.637 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('n').hasLabel('Single').coalesce(__.select('n').bothE().as('r').otherV().as('m').hasLabel('NonExistent').dedup('n', 'r', 'm').select('n', 'r', 'm'), __.constant(' cypher.null').as(' GENERATED3').as('r').as('m').select(' GENERATED3', 'r', 'm')).as(' GENERATED4').select('r').as('r').select(' GENERATED4').select('m').as('m').select('r').project('r').by(__.choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
r
null
And no side effects 0.013

12:03:32.638 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.640 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.641 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.643 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.644 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.646 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.008
Given an empty graph 0.000
And having executed: 0.008
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.653 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.657 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.019
When executing query: 0.005
MATCH (n:Single)
OPTIONAL MATCH (n)-[r]-(m)
WHERE m:NonExistent
RETURN r

12:03:32.675 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n:Single) OPTIONAL MATCH (n)-[r]-(m) WHERE m:NonExistent RETURN r 12:03:32.678 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('n').hasLabel('Single').coalesce(__.select('n').bothE().as('r').otherV().as('m').hasLabel('NonExistent').dedup('n', 'r', 'm').select('n', 'r', 'm'), __.constant(' cypher.null').as(' GENERATED3').as('r').as('m').select(' GENERATED3', 'r', 'm')).as(' GENERATED4').select('r').as('r').select(' GENERATED4').select('m').as('m').select('r').project('r').by(__.choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
r
null
And no side effects 0.014

12:03:32.680 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.683 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.683 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.686 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.686 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.688 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.009
Given an empty graph 0.000
And having executed: 0.009
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.695 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.700 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.017
When executing query: 0.004
MATCH (n:Single)
OPTIONAL MATCH (n)-[r]-(m)
WHERE m.prop = 42
RETURN m

12:03:32.717 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n:Single) OPTIONAL MATCH (n)-[r]-(m) WHERE m.prop = 42 RETURN m 12:03:32.720 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('n').hasLabel('Single').coalesce(__.select('n').bothE().as('r').otherV().as('m').has('prop', eq(42)).dedup('n', 'r', 'm').select('n', 'r', 'm'), __.constant(' cypher.null').as(' GENERATED3').as('r').as('m').select(' GENERATED3', 'r', 'm')).as(' GENERATED4').select('r').as('r').select(' GENERATED4').select('m').as('m').project('m').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
m
(:A {prop: 42})
And no side effects 0.012

12:03:32.722 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.724 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.724 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.727 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.728 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.730 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.008
Given an empty graph 0.000
And having executed: 0.008
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.735 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.739 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.023
When executing query: 0.004
MATCH (n:Single)
OPTIONAL MATCH (n)-[r:TYPE]-(m)
RETURN m:TYPE

12:03:32.756 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n:Single) OPTIONAL MATCH (n)-[r:TYPE]-(m) RETURN m:TYPE 12:03:32.759 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('n').hasLabel('Single').coalesce(__.select('n').bothE('TYPE').as('r').otherV().as('m').dedup('n', 'r', 'm').select('n', 'r', 'm'), __.constant(' cypher.null').as(' GENERATED3').as('r').as('m').select(' GENERATED3', 'r', 'm')).as(' GENERATED4').select('r').as('r').select(' GENERATED4').select('m').as('m').project('m:TYPE').by(__.choose(neq(' cypher.null'), __.choose(__.hasLabel('TYPE'), __.constant(true), __.constant(false)), __.constant(' cypher.null')))

Then the result should be: 0.000
m:TYPE
null
And no side effects 0.018

12:03:32.760 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.763 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.765 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.767 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.768 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.771 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.009
Given an empty graph 0.000
And having executed: 0.009
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.780 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.784 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.043
When executing query: 0.020
MATCH (a:Single)
OPTIONAL MATCH (a)-->(b:NonExistent)
OPTIONAL MATCH (a)-->(c:NonExistent)
WITH coalesce(b, c) AS x
MATCH (x)-->(d)
RETURN d

12:03:32.807 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:Single) OPTIONAL MATCH (a)-->(b:NonExistent) OPTIONAL MATCH (a)-->(c:NonExistent) WITH coalesce(b, c) AS x MATCH (x)-->(d) RETURN d 12:03:32.816 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('Single').coalesce(__.select('a').outE().as(' UNNAMED36').inV().as('b').hasLabel('NonExistent').select('a', ' UNNAMED36', 'b'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED36').as('b').select(' GENERATED3', ' UNNAMED36', 'b')).as(' GENERATED4').select(' UNNAMED36').as(' UNNAMED36').select(' GENERATED4').select('b').as('b').coalesce(__.select('a').outE().as(' UNNAMED73').inV().as('c').hasLabel('NonExistent').select('a', ' UNNAMED73', 'c'), __.constant(' cypher.null').as(' GENERATED8').as(' UNNAMED73').as('c').select(' GENERATED8', ' UNNAMED73', 'c')).as(' GENERATED9').select(' UNNAMED73').as(' UNNAMED73').select(' GENERATED9').select('c').as('c').select('b', 'c').project('x').by(__.coalesce(__.select('b').is(neq(' cypher.null')), __.select('c'))).select('x').as('x').is(neq(' cypher.null')).outE().inV().project('d').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
d
And no side effects 0.022

12:03:32.828 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.830 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.831 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.834 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.835 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.838 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.012
Given an empty graph 0.000
And having executed: 0.012
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.851 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.858 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.025
When executing query: 0.005
OPTIONAL MATCH (a:A)
WITH a AS a
MATCH (b:B)
RETURN a, b

12:03:32.883 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: OPTIONAL MATCH (a:A) WITH a AS a MATCH (b:B) RETURN a, b 12:03:32.887 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.inject(' cypher.start').coalesce(__.V().as('a').hasLabel('A'), __.constant(' cypher.null')).as('a').V().as('b').hasLabel('B').select('a', 'b').project('a', 'b').by(__.select('a').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null'))).by(__.select('b').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
a b
(:A {prop: 42}) (:B {prop: 46})
And no side effects 0.019

12:03:32.889 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.892 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.893 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.896 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.898 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.900 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.012
Given an empty graph 0.000
And having executed: 0.012
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.911 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.917 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.033
When executing query: 0.012
MATCH (a:A)
OPTIONAL MATCH p = (a)-[:X]->(b)
RETURN p

12:03:32.949 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:A) OPTIONAL MATCH p = (a)-[:X]->(b) RETURN p 12:03:32.953 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('A').coalesce(__.select('a').outE('X').as(' UNNAMED35').aggregate(' cypher.path.edge.p').inV().as('b').path().as('p').select('a', ' UNNAMED35', 'b', 'p'), __.constant(' cypher.null').as(' GENERATED2').as(' UNNAMED35').as('b').as('p').select(' GENERATED2', ' UNNAMED35', 'b', 'p')).as(' GENERATED3').select(' UNNAMED35').as(' UNNAMED35').select(' GENERATED3').select('b').as('b').select(' GENERATED3').select('p').as('p').project('p').by(__.choose(neq(' cypher.null'), __.project(' cypher.relationship', ' cypher.element').by(__.select(' cypher.path.edge.p').unfold().project(' cypher.id', ' cypher.inv', ' cypher.outv').by(__.id()).by(__.inV().id()).by(__.outV().id()).fold()).by(__.unfold().is(neq(' cypher.start')).valueMap(true).fold()), __.constant(' cypher.null')))

Then the result should be: 0.000
p
null
And no side effects 0.020

12:03:32.957 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:32.960 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.961 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:32.965 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:32.969 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:32.971 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.008
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:32.978 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:32.982 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.036
When executing query: 0.005
MATCH (a:A), (b:C)
OPTIONAL MATCH (x)-->(b)
RETURN x

12:03:33.000 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:A), (b:C) OPTIONAL MATCH (x)-->(b) RETURN x 12:03:33.004 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().hasLabel('A').V().as('b').hasLabel('C').coalesce(__.V().as('x').outE().as(' UNNAMED38').inV().as(' GENERATED2').where(__.select(' GENERATED2').where(eq('b'))).select('x', ' UNNAMED38', 'b'), __.constant(' cypher.null').as('x').as(' UNNAMED38').as(' GENERATED3').select('x', ' UNNAMED38', ' GENERATED3')).as(' GENERATED4').select('x').as('x').select(' GENERATED4').select(' UNNAMED38').as(' UNNAMED38').select('x').project('x').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
x
(:A {prop: 42})
And no side effects 0.030

12:03:33.006 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.009 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.021 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.025 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.026 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.029 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.012
Given an empty graph 0.000
And having executed: 0.012
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.038 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.043 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.015
Scenario OPTIONAL MATCH with labels on the optional end node
Steps
And having executed: 0.008
CREATE (:X), (x:X), (y1:Y), (y2:Y:Z)
CREATE (x)-[:REL]->(y1),
       (x)-[:REL]->(y2)

12:03:33.050 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (:X), (x:X), (y1:Y), (y2:Y:Z) CREATE (x)-[:REL]->(y1), (x)-[:REL]->(y2) 12:03:33.054 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('X').addV('X').as('x').addV('Y').as('y1').addV('Y').as('y2').addE('REL').from('x').to('y1').addE('REL').from('x').to('y2').barrier().limit(0)

When executing query: 0.006
MATCH (a:X)
OPTIONAL MATCH (a)-->(b:Y)
RETURN b

12:03:33.078 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:X) OPTIONAL MATCH (a)-->(b:Y) RETURN b 12:03:33.082 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('X').coalesce(__.select('a').outE().as(' UNNAMED31').inV().as('b').hasLabel('Y').select('a', ' UNNAMED31', 'b'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED31').as('b').select(' GENERATED3', ' UNNAMED31', 'b')).as(' GENERATED4').select(' UNNAMED31').as(' UNNAMED31').select(' GENERATED4').select('b').as('b').project('b').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
org.opencypher.tools.tck.api.Scenario$ScenarioFailedException: Feature "OptionalMatchAcceptance": Scenario "OPTIONAL MATCH with labels on the optional end node" failed with message: 
Expected (in any order of rows):
| b |
| null |
| (:Y) |
| (:Y:Z) |
Actual:
| b |
| null |
| (:Y) |
| (:Y) |
	at org.opencypher.tools.tck.api.Scenario$$anonfun$executeOnGraph$1.apply(Scenario.scala:90)
	at org.opencypher.tools.tck.api.Scenario$$anonfun$executeOnGraph$1.apply(Scenario.scala:60)
	at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:124)
	at scala.collection.immutable.List.foldLeft(List.scala:84)
	at org.opencypher.tools.tck.api.Scenario.executeOnGraph(Scenario.scala:60)
	at org.opencypher.tools.tck.api.Scenario$$anon$1.execute(Scenario.scala:54)
	at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.executeAndMaskThrowable(JupiterTestDescriptor.java:145)
	at org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor.execute(DynamicTestTestDescriptor.java:46)
	at org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor.execute(DynamicTestTestDescriptor.java:24)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$0(HierarchicalTestExecutor.java:85)
	at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$invokeTestMethod$1(TestFactoryTestDescriptor.java:80)
	at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
	at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.invokeTestMethod(TestFactoryTestDescriptor.java:68)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:110)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
	at com.sun.proxy.$Proxy1.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:748)
b
null
(:Y)
(:Y:Z)
0.012
Given an empty graph 0.000
And having executed: 0.012
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.086 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.092 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.017
When executing query: 0.004
MATCH (a:A), (b:B)
OPTIONAL MATCH p = (a)-[:X]->(b)
RETURN p

12:03:33.113 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:A), (b:B) OPTIONAL MATCH p = (a)-[:X]->(b) RETURN p 12:03:33.116 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('A').V().as('b').hasLabel('B').coalesce(__.select('a').outE('X').as(' UNNAMED42').aggregate(' cypher.path.edge.p').inV().as(' GENERATED2').where(__.select(' GENERATED2').where(eq('b'))).path().as('p').select('a', ' UNNAMED42', 'b', 'p'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED42').as(' GENERATED4').as('p').select(' GENERATED3', ' UNNAMED42', ' GENERATED4', 'p')).as(' GENERATED5').select(' UNNAMED42').as(' UNNAMED42').select(' GENERATED5').select('p').as('p').project('p').by(__.choose(neq(' cypher.null'), __.project(' cypher.relationship', ' cypher.element').by(__.select(' cypher.path.edge.p').unfold().project(' cypher.id', ' cypher.inv', ' cypher.outv').by(__.id()).by(__.inV().id()).by(__.outV().id()).fold()).by(__.unfold().is(neq(' cypher.start')).valueMap(true).fold()), __.constant(' cypher.null')))

Then the result should be: 0.000
p
null
And no side effects 0.013

12:03:33.117 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.119 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.120 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.122 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.123 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.125 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.131 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.135 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.007
Scenario Variable length optional relationships
Steps
When executing query: 0.007
MATCH (a:Single)
OPTIONAL MATCH (a)-[*]->(b)
RETURN b

12:03:33.153 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:Single) OPTIONAL MATCH (a)-[*]->(b) RETURN b 12:03:33.156 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('Single').coalesce(__.select('a').as(' cypher.path.start.GENERATED2').repeat(__.outE().as(' UNNAMED36').inV()).emit().until(__.path().from(' cypher.path.start.GENERATED2').count(local).is(gte(21))).as('b').select('a', ' UNNAMED36', 'b'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED36').as('b').select(' GENERATED3', ' UNNAMED36', 'b')).as(' GENERATED4').select(' UNNAMED36').as(' UNNAMED36').select(' GENERATED4').select('b').as('b').project('b').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
org.opencypher.tools.tck.api.Scenario$ScenarioFailedException: Feature "OptionalMatchAcceptance": Scenario "Variable length optional relationships" failed with message: 
Expected (in any order of rows):
| b |
| (:A {prop: 42}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:C) |
Actual:
| b |
| (:A {prop: 42}) |
| (:B {prop: 46}) |
| (:C) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
| (:B {prop: 46}) |
	at org.opencypher.tools.tck.api.Scenario$$anonfun$executeOnGraph$1.apply(Scenario.scala:90)
	at org.opencypher.tools.tck.api.Scenario$$anonfun$executeOnGraph$1.apply(Scenario.scala:60)
	at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:124)
	at scala.collection.immutable.List.foldLeft(List.scala:84)
	at org.opencypher.tools.tck.api.Scenario.executeOnGraph(Scenario.scala:60)
	at org.opencypher.tools.tck.api.Scenario$$anon$1.execute(Scenario.scala:54)
	at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.executeAndMaskThrowable(JupiterTestDescriptor.java:145)
	at org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor.execute(DynamicTestTestDescriptor.java:46)
	at org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor.execute(DynamicTestTestDescriptor.java:24)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$0(HierarchicalTestExecutor.java:85)
	at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$invokeTestMethod$1(TestFactoryTestDescriptor.java:80)
	at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
	at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.invokeTestMethod(TestFactoryTestDescriptor.java:68)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:110)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
	at com.sun.proxy.$Proxy1.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:748)
b
(:A {prop: 42})
(:B {prop: 46})
(:B {prop: 46})
(:C)
0.009
Given an empty graph 0.000
And having executed: 0.009
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.162 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.168 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.143
When executing query: 0.130
MATCH (a:Single)
OPTIONAL MATCH (a)-[*3..]-(b)
RETURN b

12:03:33.185 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:Single) OPTIONAL MATCH (a)-[*3..]-(b) RETURN b 12:03:33.188 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('Single').coalesce(__.select('a').as(' cypher.path.start.GENERATED2').emit().repeat(__.bothE().as(' UNNAMED36').otherV()).until(__.path().from(' cypher.path.start.GENERATED2').count(local).is(gte(21))).where(__.path().from(' cypher.path.start.GENERATED2').count(local).is(gte(7))).simplePath().from(' cypher.path.start.GENERATED2').as('b').dedup('a', ' UNNAMED36', 'b').select('a', ' UNNAMED36', 'b'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED36').as('b').select(' GENERATED3', ' UNNAMED36', 'b')).as(' GENERATED4').select(' UNNAMED36').as(' UNNAMED36').select(' GENERATED4').select('b').as('b').project('b').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
b
null
And no side effects 0.013

12:03:33.315 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.317 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.318 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.320 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.321 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.323 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.329 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.333 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.017
When executing query: 0.004
MATCH (a:B)
OPTIONAL MATCH (a)-[r]-(a)
RETURN r

12:03:33.350 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:B) OPTIONAL MATCH (a)-[r]-(a) RETURN r 12:03:33.353 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('B').coalesce(__.select('a').bothE().as('r').otherV().as(' GENERATED3').where(__.select(' GENERATED3').where(eq('a'))).dedup('a', 'r', 'a').select('a', 'r', 'a'), __.constant(' cypher.null').as(' GENERATED4').as('r').as(' GENERATED5').select(' GENERATED4', 'r', ' GENERATED5')).select('r').as('r').project('r').by(__.choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
r
[:LOOP]
And no side effects 0.013

12:03:33.354 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.356 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.357 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.360 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.361 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.363 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.009
Given an empty graph 0.000
And having executed: 0.009
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.369 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.372 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.017
When executing query: 0.004
MATCH (a)
WHERE NOT (a:B)
OPTIONAL MATCH (a)-[r]->(a)
RETURN r

12:03:33.391 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a) WHERE NOT (a:B) OPTIONAL MATCH (a)-[r]->(a) RETURN r 12:03:33.394 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').where(__.not(__.select('a').hasLabel('B'))).coalesce(__.select('a').outE().as('r').inV().as(' GENERATED3').where(__.select(' GENERATED3').where(eq('a'))).select('a', 'r', 'a'), __.constant(' cypher.null').as(' GENERATED4').as('r').as(' GENERATED5').select(' GENERATED4', 'r', ' GENERATED5')).select('r').as('r').project('r').by(__.choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
r
null
null
null
And no side effects 0.012

12:03:33.396 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.397 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.398 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.400 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.401 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.403 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.008
Given an empty graph 0.000
And having executed: 0.008
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.409 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.413 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.017
When executing query: 0.004
MATCH (a:Single), (x:C)
OPTIONAL MATCH (a)-[*]->(x)
RETURN x

12:03:33.430 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:Single), (x:C) OPTIONAL MATCH (a)-[*]->(x) RETURN x 12:03:33.433 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('Single').V().as('x').hasLabel('C').coalesce(__.select('a').as(' cypher.path.start.GENERATED2').repeat(__.outE().as(' UNNAMED43').inV()).emit().until(__.path().from(' cypher.path.start.GENERATED2').count(local).is(gte(21))).as(' GENERATED3').where(__.select(' GENERATED3').where(eq('x'))).select('a', ' UNNAMED43', 'x'), __.constant(' cypher.null').as(' GENERATED4').as(' UNNAMED43').as(' GENERATED5').select(' GENERATED4', ' UNNAMED43', ' GENERATED5')).select(' UNNAMED43').as(' UNNAMED43').select('x').project('x').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
x
(:C)
And no side effects 0.012

12:03:33.435 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.436 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.437 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.439 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.440 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.442 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.008
Given an empty graph 0.000
And having executed: 0.008
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.449 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.454 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.017
When executing query: 0.005
MATCH (a:A), (b:B)
OPTIONAL MATCH p = (a)-[*]->(b)
RETURN p

12:03:33.471 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:A), (b:B) OPTIONAL MATCH p = (a)-[*]->(b) RETURN p 12:03:33.474 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('A').V().as('b').hasLabel('B').coalesce(__.select('a').as(' cypher.path.start.p').repeat(__.outE().as(' UNNAMED42').aggregate(' cypher.path.edge.p').inV()).emit().until(__.path().from(' cypher.path.start.p').count(local).is(gte(21))).as(' GENERATED2').where(__.select(' GENERATED2').where(eq('b'))).path().as('p').select('a', ' UNNAMED42', 'b', 'p'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED42').as(' GENERATED4').as('p').select(' GENERATED3', ' UNNAMED42', ' GENERATED4', 'p')).as(' GENERATED5').select(' UNNAMED42').as(' UNNAMED42').select(' GENERATED5').select('p').as('p').project('p').by(__.choose(neq(' cypher.null'), __.project(' cypher.relationship', ' cypher.element').by(__.select(' cypher.path.edge.p').unfold().project(' cypher.id', ' cypher.inv', ' cypher.outv').by(__.id()).by(__.inV().id()).by(__.outV().id()).fold()).by(__.unfold().is(neq(' cypher.start')).valueMap(true).fold()), __.constant(' cypher.null')))

Then the result should be: 0.000
p
null
And no side effects 0.012

12:03:33.476 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.478 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.478 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.481 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.481 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.483 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.489 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.493 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.023
When executing query: 0.007
MATCH (a:Single), (c:C)
OPTIONAL MATCH (a)-->(b)-->(c)
RETURN b

12:03:33.510 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:Single), (c:C) OPTIONAL MATCH (a)-->(b)-->(c) RETURN b 12:03:33.515 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('Single').V().as('c').hasLabel('C').coalesce(__.select('a').outE().as(' UNNAMED43').inV().as('b').outE().as(' UNNAMED49').inV().as(' GENERATED4').where(__.select(' GENERATED4').where(eq('c'))).where(__.select(' UNNAMED43').where(neq(' UNNAMED49'))).select('a', ' UNNAMED43', 'b', ' UNNAMED49', 'c'), __.constant(' cypher.null').as(' GENERATED5').as(' UNNAMED43').as('b').as(' UNNAMED49').as(' GENERATED6').select(' GENERATED5', ' UNNAMED43', 'b', ' UNNAMED49', ' GENERATED6')).as(' GENERATED7').select(' UNNAMED43').as(' UNNAMED43').select(' GENERATED7').select('b').as('b').select(' GENERATED7').select(' UNNAMED49').as(' UNNAMED49').select('b').project('b').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
b
(:A {prop: 42})
And no side effects 0.015

12:03:33.517 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.520 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.520 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.523 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.524 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.527 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.534 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.537 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.018
When executing query: 0.005
MATCH (a:A), (c:C)
OPTIONAL MATCH (a)-->(b)-->(c)
RETURN b

12:03:33.554 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:A), (c:C) OPTIONAL MATCH (a)-->(b)-->(c) RETURN b 12:03:33.558 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('A').V().as('c').hasLabel('C').coalesce(__.select('a').outE().as(' UNNAMED38').inV().as('b').outE().as(' UNNAMED44').inV().as(' GENERATED4').where(__.select(' GENERATED4').where(eq('c'))).where(__.select(' UNNAMED38').where(neq(' UNNAMED44'))).select('a', ' UNNAMED38', 'b', ' UNNAMED44', 'c'), __.constant(' cypher.null').as(' GENERATED5').as(' UNNAMED38').as('b').as(' UNNAMED44').as(' GENERATED6').select(' GENERATED5', ' UNNAMED38', 'b', ' UNNAMED44', ' GENERATED6')).as(' GENERATED7').select(' UNNAMED38').as(' UNNAMED38').select(' GENERATED7').select('b').as('b').select(' GENERATED7').select(' UNNAMED44').as(' UNNAMED44').select('b').project('b').by(__.choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null')))

Then the result should be: 0.000
b
null
And no side effects 0.012

12:03:33.560 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.561 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.562 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.564 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.565 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.567 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.573 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.576 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.026
When executing query: 0.007
MATCH (a:A), (b:B)
OPTIONAL MATCH (a)-->(x)
OPTIONAL MATCH (x)-[r]->(b)
RETURN x, r

12:03:33.601 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (a:A), (b:B) OPTIONAL MATCH (a)-->(x) OPTIONAL MATCH (x)-[r]->(b) RETURN x, r 12:03:33.606 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as('a').hasLabel('A').V().as('b').hasLabel('B').coalesce(__.select('a').outE().as(' UNNAMED38').inV().as('x').select('a', ' UNNAMED38', 'x'), __.constant(' cypher.null').as(' GENERATED3').as(' UNNAMED38').as('x').select(' GENERATED3', ' UNNAMED38', 'x')).as(' GENERATED4').select(' UNNAMED38').as(' UNNAMED38').select(' GENERATED4').select('x').as('x').coalesce(__.select('x').is(neq(' cypher.null')).outE().as('r').inV().as(' GENERATED8').where(__.select(' GENERATED8').where(eq('b'))).select('x', 'r', 'b'), __.constant(' cypher.null').as(' GENERATED9').as('r').as(' GENERATED10').select(' GENERATED9', 'r', ' GENERATED10')).select('r').as('r').select('x', 'r').project('x', 'r').by(__.select('x').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null'))).by(__.select('r').choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
x r
(:C) null
And no side effects 0.018

12:03:33.609 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.611 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.612 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.615 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.616 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.618 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.628 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.631 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.027
When executing query: 0.007
OPTIONAL MATCH (a:NotThere)
WITH a
MATCH (b:B)
WITH a, b
OPTIONAL MATCH (b)-[r:NOR_THIS]->(a)
RETURN a, b, r

12:03:33.649 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: OPTIONAL MATCH (a:NotThere) WITH a MATCH (b:B) WITH a, b OPTIONAL MATCH (b)-[r:NOR_THIS]->(a) RETURN a, b, r 12:03:33.654 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.inject(' cypher.start').coalesce(__.V().as('a').hasLabel('NotThere'), __.constant(' cypher.null')).as('a').V().as('b').hasLabel('B').select('a', 'b').project('a', 'b').by(__.select('a')).by(__.select('b')).as(' GENERATED3').select('a').as('a').select(' GENERATED3').select('b').as('b').coalesce(__.select('b').is(neq(' cypher.null')).outE('NOR_THIS').as('r').inV().as(' GENERATED8').where(__.select(' GENERATED8').where(eq('a'))).select('b', 'r', 'a'), __.constant(' cypher.null').as(' GENERATED9').as('r').as(' GENERATED10').select(' GENERATED9', 'r', ' GENERATED10')).select('r').as('r').select('a', 'b', 'r').project('a', 'b', 'r').by(__.select('a').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null'))).by(__.select('b').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null'))).by(__.select('r').choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
a b r
null (:B {prop: 46}) null
And no side effects 0.020

12:03:33.657 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.660 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.661 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.664 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.665 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.668 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.008
Given an empty graph 0.000
And having executed: 0.008
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.678 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.682 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.020
When executing query: 0.006
OPTIONAL MATCH (a:NotThere)
OPTIONAL MATCH (b:NotThere)
WITH a, b
OPTIONAL MATCH (b)-[r:NOR_THIS]->(a)
RETURN a, b, r

12:03:33.699 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: OPTIONAL MATCH (a:NotThere) OPTIONAL MATCH (b:NotThere) WITH a, b OPTIONAL MATCH (b)-[r:NOR_THIS]->(a) RETURN a, b, r 12:03:33.704 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.inject(' cypher.start').coalesce(__.V().as('a').hasLabel('NotThere'), __.constant(' cypher.null')).as('a').coalesce(__.V().as('b').hasLabel('NotThere'), __.constant(' cypher.null')).as('b').select('a', 'b').project('a', 'b').by(__.select('a')).by(__.select('b')).as(' GENERATED1').select('a').as('a').select(' GENERATED1').select('b').as('b').coalesce(__.select('b').is(neq(' cypher.null')).outE('NOR_THIS').as('r').inV().as(' GENERATED6').where(__.select(' GENERATED6').where(eq('a'))).select('b', 'r', 'a'), __.constant(' cypher.null').as(' GENERATED7').as('r').as(' GENERATED8').select(' GENERATED7', 'r', ' GENERATED8')).select('r').as('r').select('a', 'b', 'r').project('a', 'b', 'r').by(__.select('a').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null'))).by(__.select('b').choose(neq(' cypher.null'), __.valueMap(true), __.constant(' cypher.null'))).by(__.select('r').choose(neq(' cypher.null'), __.project(' cypher.element', ' cypher.inv', ' cypher.outv').by(__.valueMap(true)).by(__.inV().id()).by(__.outV().id()), __.constant(' cypher.null')))

Then the result should be: 0.000
a b r
null null null
And no side effects 0.013

12:03:33.706 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.708 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.709 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.711 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.712 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.714 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0

0.007
Given an empty graph 0.000
And having executed: 0.007
CREATE (s:Single), (a:A {prop: 42}),
       (b:B {prop: 46}), (c:C)
CREATE (s)-[:REL]->(a),
       (s)-[:REL]->(b),
       (a)-[:REL]->(c),
       (b)-[:LOOP]->(b)

12:03:33.721 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (s:Single), (a:A {prop: 42}), (b:B {prop: 46}), (c:C) CREATE (s)-[:REL]->(a), (s)-[:REL]->(b), (a)-[:REL]->(c), (b)-[:LOOP]->(b) 12:03:33.725 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('Single').as('s').addV('A').as('a').property('prop', 42).addV('B').as('b').property('prop', 46).addV('C').as('c').addE('REL').from('s').to('a').addE('REL').from('s').to('b').addE('REL').from('a').to('c').addE('LOOP').from('b').to('b').barrier().limit(0)

0.030
And having executed: 0.004
CREATE (:DoesExist {property: 42})
CREATE (:DoesExist {property: 43})
CREATE (:DoesExist {property: 44})

12:03:33.729 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: CREATE (:DoesExist {property: 42}) CREATE (:DoesExist {property: 43}) CREATE (:DoesExist {property: 44}) 12:03:33.731 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.addV('DoesExist').property('property', 42).addV('DoesExist').property('property', 43).addV('DoesExist').property('property', 44).barrier().limit(0)

When executing query: 0.005
OPTIONAL MATCH (f:DoesExist)
OPTIONAL MATCH (n:DoesNotExist)
RETURN collect(DISTINCT n.property) AS a, collect(DISTINCT f.property) AS b

12:03:33.750 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: OPTIONAL MATCH (f:DoesExist) OPTIONAL MATCH (n:DoesNotExist) RETURN collect(DISTINCT n.property) AS a, collect(DISTINCT f.property) AS b 12:03:33.753 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.inject(' cypher.start').coalesce(__.V().as('f').hasLabel('DoesExist'), __.constant(' cypher.null')).as('f').coalesce(__.V().as('n').hasLabel('DoesNotExist'), __.constant(' cypher.null')).as('n').select('n', 'f').fold().project('a', 'b').by(__.unfold().select('n').choose(neq(' cypher.null'), __.coalesce(__.values('property'), __.constant(' cypher.null')), __.constant(' cypher.null')).dedup().is(neq(' cypher.null')).fold()).by(__.unfold().select('f').choose(neq(' cypher.null'), __.coalesce(__.values('property'), __.constant(' cypher.null')), __.constant(' cypher.null')).dedup().is(neq(' cypher.null')).fold())

Then the result should be: 0.000
a b
[] [42, 43, 44]
And no side effects 0.020

12:03:33.755 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) RETURN id(n) 12:03:33.758 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().project('id(n)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.759 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH ()-[r]->() RETURN id(r) 12:03:33.763 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().as(' cypher.path.start.GENERATED1').outE().as('r').inV().select('r').project('id(r)').by(__.choose(neq(' cypher.null'), __.id(), __.constant(' cypher.null'))) 12:03:33.763 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Cypher: MATCH (n) UNWIND labels(n) AS label RETURN DISTINCT label 12:03:33.766 [gremlin-server-worker-1] INFO o.o.g.s.op.cypher.CypherOpProcessor - Gremlin: g.V().label().is(neq('vertex')).project('label').by(__.identity()).dedup() -labels: 0 +labels: 0 +nodes: 0 -nodes: 0 -properties: 0 +properties: 0 -relationships: 0 +relationships: 0