public AccumulatedTapOnHashJoinExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Hfs.class ), PathScopeExpression.BLOCKING, new FlowElementExpression( HashJoin.class ) ) ); } }
public AccumulatedTapOnHashJoinExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Hfs.class ), PathScopeExpression.BLOCKING, new FlowElementExpression( HashJoin.class ) ) ); } }
public BalanceGroupSplitJoinExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_GROUP, SHARED_JOIN ) .arcs( SHARED_GROUP, SHARED_JOIN ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceGroupSplitJoinExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_GROUP, SHARED_JOIN ) .arcs( SHARED_GROUP, SHARED_JOIN ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceHashJoinToHashJoinExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arc( new FlowElementExpression( HashJoin.class ), PathScopeExpression.ANY, new FlowElementExpression( HashJoin.class ) ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), PathScopeExpression.ANY, new FlowElementExpression( HashJoin.class ) ) ); } }
public BalanceHashJoinSameSourceExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Tap.class, TypeExpression.Topo.SplitOnly ), JoinEdgesSameSourceScopeExpression.ALL_SAME_SOURCE, new FlowElementExpression( HashJoin.class ) ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Secondary, Pipe.class ), PathScopeExpression.BLOCKING, new FlowElementExpression( ElementCapture.Primary, HashJoin.class ) ) ); } }
public BalanceGroupGroupExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arcs( new FlowElementExpression( Group.class ), new FlowElementExpression( Group.class ) ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), ScopeExpression.ANY, new FlowElementExpression( Group.class ) ) ); } }
public BalanceGroupSplitHashJoinExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_GROUP, new FlowElementExpression( HashJoin.class ) ) .arcs( SHARED_GROUP, new FlowElementExpression( HashJoin.class ) ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceGroupGroupExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arcs( new FlowElementExpression( Group.class ), new FlowElementExpression( Group.class ) ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), ScopeExpression.ANY, new FlowElementExpression( Group.class ) ) ); } }
public BalanceJoinSplitExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_JOIN, new BoundariesElementExpression() ) .arcs( SHARED_JOIN, new BoundariesElementExpression() ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceGroupSplitHashJoinExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_GROUP, new FlowElementExpression( HashJoin.class ) ) .arcs( SHARED_GROUP, new FlowElementExpression( HashJoin.class ) ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceJoinSplitExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_JOIN, new BoundariesElementExpression() ) .arcs( SHARED_JOIN, new BoundariesElementExpression() ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceSameSourceStreamedAccumulatedExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arc( SHARED_TAP, PathScopeExpression.NON_BLOCKING, SHARED_HASHJOIN_STREAMED ) .arc( SHARED_TAP, PathScopeExpression.BLOCKING, SHARED_HASHJOIN_ACCUMULATED ) .arc( SHARED_HASHJOIN_STREAMED, PathScopeExpression.NON_BLOCKING, SHARED_HASHJOIN_ACCUMULATED ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), PathScopeExpression.NON_BLOCKING, new FlowElementExpression( ElementCapture.Secondary, HashJoin.class ) ) ); } }
public BalanceSameSourceStreamedAccumulatedExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arc( SHARED_TAP, PathScopeExpression.NON_BLOCKING, SHARED_HASHJOIN_STREAMED ) .arc( SHARED_TAP, PathScopeExpression.BLOCKING, SHARED_HASHJOIN_ACCUMULATED ) .arc( SHARED_HASHJOIN_STREAMED, PathScopeExpression.NON_BLOCKING, SHARED_HASHJOIN_ACCUMULATED ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), PathScopeExpression.NON_BLOCKING, new FlowElementExpression( ElementCapture.Secondary, HashJoin.class ) ) ); } }
public BalanceGroupSplitNotTapExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_GROUP, or( new FlowElementExpression( HashJoin.class ), new FlowElementExpression( Group.class ) ) ) .arcs( SHARED_GROUP, or( new FlowElementExpression( HashJoin.class ), new FlowElementExpression( Group.class ) ) ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
public BalanceGroupSplitNotTapExpression() { super( new SyncPipeExpressionGraph(), // in order to capture out degree in sub-graph, we need to capture at least two successors new ExpressionGraph() .arcs( SHARED_GROUP, or( new FlowElementExpression( HashJoin.class ), new FlowElementExpression( Group.class ) ) ) .arcs( SHARED_GROUP, or( new FlowElementExpression( HashJoin.class ), new FlowElementExpression( Group.class ) ) ), // sub-graph to match has out degree captured above new ExpressionGraph() .arcs( new FlowElementExpression( ElementCapture.Primary, Pipe.class, TypeExpression.Topo.SplitOnly ) ) ); } }
@Test public void testFind2() { ElementGraph graph = new HashJoinSameSourceGraph(); graph = new ContractedTransformer( new SyncPipeExpressionGraph() ).transform( graph ).getEndGraph(); FlowElementExpression sharedTap = new FlowElementExpression( Tap.class, TypeExpression.Topo.SplitOnly ); FlowElementExpression sharedHashJoin = new FlowElementExpression( HashJoin.class ); ExpressionGraph expressionGraph = new ExpressionGraph() .arc( sharedTap, ScopeExpression.ALL, sharedHashJoin ); GraphFinder graphFinder = new GraphFinder( expressionGraph ); Match match = graphFinder.findFirstMatch( graph ); match.getMatchedGraph().writeDOT( getPlanPath() + "/match.dot" ); }
@Test public void testFind() { ElementGraph graph = new HashJoinSameSourceGraph(); graph = new ContractedTransformer( new SyncPipeExpressionGraph() ).transform( graph ).getEndGraph(); FlowElementExpression SHARED_TAP = new FlowElementExpression( Tap.class, TypeExpression.Topo.SplitOnly ); FlowElementExpression SHARED_HASHJOIN = new FlowElementExpression( HashJoin.class ); ExpressionGraph expressionGraph = new ExpressionGraph() .arcs( SHARED_TAP, SHARED_HASHJOIN ) .arcs( SHARED_TAP, SHARED_HASHJOIN ); GraphFinder graphFinder = new GraphFinder( expressionGraph ); Match match = graphFinder.findFirstMatch( graph ); match.getMatchedGraph().writeDOT( getPlanPath() + "/match.dot" ); }
public TestHashJoinSameSourceExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arcs( SHARED_TAP, SHARED_HASHJOIN ) .arcs( SHARED_TAP, SHARED_HASHJOIN ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), PathScopeExpression.BLOCKING, new FlowElementExpression( ElementCapture.Secondary, HashJoin.class ) ) ); } }
public TestGroupGroupExpression() { super( new SyncPipeExpressionGraph(), new ExpressionGraph() .arcs( new FlowElementExpression( Group.class ), new FlowElementExpression( Group.class ) ), new ExpressionGraph() .arc( new FlowElementExpression( ElementCapture.Primary, Pipe.class ), ScopeExpression.ANY, new FlowElementExpression( Group.class ) ) ); } }