Hi, I have started optimizing Sqlg to do a bulk/barrier for its VertexStep optimizations.
Sqlg has two optimization strategies. GraphStepStrategy and VertexStepStrategy. GraphStepStrategy executes first and then VertexStepStrategy. GraphStepStrategy starts at the beginning of the traversal optimizing from left to right till it reaches a step that it can not optimize and terminates. After that VertexStepStrategy tries to optimize what remains. It ultimately replaces optimizable sequential steps with a SqlgVertexStep. Thus far the SqlgVertexStep always has one incoming traverser from where it continues the traversal. Basically it translated to a sql where clause with the incoming traversal element's id. The current optimization is to bulk the incoming traversers and execute the traversal for all incoming traversers in one go. This reduces latency and has a drastic performance improvement. I do the same as the existing BarrierSteps and iterate the `starts` to collect all the left incoming traversers and from there I continue and all is well. However for local traversals there is only one start on the traversal so the barrier idea is not working. Is there a way barrier all incoming left traversers on local traversals? I have looked but can not see a way to accomplish this. Before I start hacking away do you have ideas as how to accomplish this. Does Tinkerpop already barrier/bulk incoming traversers on local traversals? Thanks Pieter
