ftsrg/ingraph

Edge direction lost when creating path

marci543 opened this issue · 2 comments

TL;DR: Both GPlan, NPlan and FPlan seem to have the correct edge directions as the plans below show. @szarnyasg please take a look at the CUD part of the engine.

Details:

In the plans for the CREATE query

CREATE (:A)<-[:KNOWS {name: 'monkey'}]-()-[:KNOWS {name: 'woot'}]->(:B)

_e0#0 stands for (:A), _e1#0 stands for the anonymous node pattern (), and the name: monkey edge is created as pointing Inward to _e0#0

-----------------------------------------------------------------------------
GPlan:
------
'Production
+- 'Create [v(_e0, {A}, true, (_e0#0)), v(_e1, {}, true, (_e1#0)), riche(v(_e0, {A}, true, (_e0#0)), v(_e1, {}, true, (_e1#0)), e(_e2, {KNOWS}, (name,monkey), true, (_e2#0)), In), v(_e3, {B}, true, (_e3#0)), riche(v(_e1, {}, true, (_e1#0)), v(_e3, {B}, true, (_e3#0)), e(_e4, {KNOWS}, (name,woot), true, (_e4#0)), Out)]
   +- Dual

-----------------------------------------------------------------------------
NPlan:
------
'Production
+- 'Create riche(v(_e1, {}, true, (_e1#0)), v(_e3, {B}, true, (_e3#0)), e(_e4, {KNOWS}, (name,woot), true, (_e4#0)), Out)
   +- 'Create v(_e3, {B}, true, (_e3#0))
      +- 'Create riche(v(_e0, {A}, true, (_e0#0)), v(_e1, {}, true, (_e1#0)), e(_e2, {KNOWS}, (name,monkey), true, (_e2#0)), In)
         +- 'Create v(_e1, {}, true, (_e1#0))
            +- 'Create v(_e0, {A}, true, (_e0#0))
               +- Dual

-----------------------------------------------------------------------------
FPlan:
------
Production
+- Create riche(v(_e1, {}, true, (_e1#0)), v(_e3, {B}, true, (_e3#0)), e(_e4, {KNOWS}, (name,woot), true, (_e4#0)), Out)
   +- Create v(_e3, {B}, true, (_e3#0))
      +- Create riche(v(_e0, {A}, true, (_e0#0)), v(_e1, {}, true, (_e1#0)), e(_e2, {KNOWS}, (name,monkey), true, (_e2#0)), In)
         +- Create v(_e1, {}, true, (_e1#0))
            +- Create v(_e0, {A}, true, (_e0#0))
               +- Dual Dual

Thanks, submitting a fix now.