ftsrg/ingraph

Duplicate vertex creations in NPlan if vertex is referred

marci543 opened this issue · 0 comments

In NPlan the vertex a#0 is created again at every reference.

vvvvvvvvvvvvvvvv Feature "MatchAcceptance2": Scenario "ORDER BY with LIMIT" vvvvvvvvvvvvvvvv
=============================================================================
Query:
------
CREATE (a:A), (n1 {x: 1}), (n2 {x: 2}),
       (m1), (m2)
CREATE (a)-[:T]->(n1),
       (n1)-[:T]->(m1),
       (a)-[:T]->(n2),
       (n2)-[:T]->(m2)
-----------------------------------------------------------------------------
GPlan:
------
'Production
+- 'Create [v(a, {}, false, (a#0)), v(n1, {}, false, (n1#0)), riche(v(a, {}, false, (a#0)), v(n1, {}, false, (n1#0)), e(_e0, {T}, true, (_e0#0)), Out), v(n1, {}, false, (n1#0)), v(m1, {}, false, (m1#0)), riche(v(n1, {}, false, (n1#0)), v(m1, {}, false, (m1#0)), e(_e1, {T}, true, (_e1#0)), Out), v(a, {}, false, (a#0)), v(n2, {}, false, (n2#0)), riche(v(a, {}, false, (a#0)), v(n2, {}, false, (n2#0)), e(_e2, {T}, true, (_e2#0)), Out), v(n2, {}, false, (n2#0)), v(m2, {}, false, (m2#0)), riche(v(n2, {}, false, (n2#0)), v(m2, {}, false, (m2#0)), e(_e3, {T}, true, (_e3#0)), Out)]
   +- 'Create [v(a, {A}, false, (a#0)), v(n1, {}, (x,1), false, (n1#0)), v(n2, {}, (x,2), false, (n2#0)), v(m1, {}, false, (m1#0)), v(m2, {}, false, (m2#0))]
      +- Dual

-----------------------------------------------------------------------------
NPlan:
------
'Production
+- 'Create riche(v(n2, {}, false, (n2#0)), v(m2, {}, false, (m2#0)), e(_e3, {T}, true, (_e3#0)), Out)
   +- 'Create v(m2, {}, false, (m2#0))
 ^    +- 'Create v(n2, {}, false, (n2#0))
 ^       +- 'Create riche(v(a, {}, false, (a#0)), v(n2, {}, false, (n2#0)), e(_e2, {T}, true, (_e2#0)), Out)
 ^          +- 'Create v(n2, {}, false, (n2#0))
 ^ here again> +- 'Create v(a, {}, false, (a#0))
 ^                +- 'Create riche(v(n1, {}, false, (n1#0)), v(m1, {}, false, (m1#0)), e(_e1, {T}, true, (_e1#0)), Out)
 ^                   +- 'Create v(m1, {}, false, (m1#0))
 ^                      +- 'Create v(n1, {}, false, (n1#0))
 ^                         +- 'Create riche(v(a, {}, false, (a#0)), v(n1, {}, false, (n1#0)), e(_e0, {T}, true, (_e0#0)), Out)
 ^                            +- 'Create v(n1, {}, false, (n1#0))
 ^   tries to create again --->  +- 'Create v(a, {}, false, (a#0))
 ^                                  +- 'Create v(m2, {}, false, (m2#0))
 ^                                     +- 'Create v(m1, {}, false, (m1#0))
 ^                                        +- 'Create v(n2, {}, (x,2), false, (n2#0))
 ^                                           +- 'Create v(n1, {}, (x,1), false, (n1#0))
 ^   a#0 vertex is created here ----------->    +- 'Create v(a, {A}, false, (a#0))
 ^                                                 +- Dual

-----------------------------------------------------------------------------