public TermNode getContext() { final IQueryNode parent = getParent(); if (parent instanceof GroupMemberNodeBase<?>) { return ((GroupMemberNodeBase<?>) parent).getContext(); } return null; }
@Override public Set<IVariable<?>> getDesiredBound(StaticAnalysis sa) { return getProjectedVars(new HashSet<IVariable<?>>()); } }
subqueryRoot.getWhereClause(), StatementPatternNode.class); new Object[] { whereClause, subqueryRoot.getWhereClause() }, visitQueryHints(astContainer.getOptimizedAST(), QueryHints.OPTIMIZER)); assertNotNull(subqueryRoot.getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getProjection().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getWhereClause().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRootSP.getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getSlice().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertEquals("5",subqueryRoot.getProjection().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY));
/** * TODO This seems to be inefficient. We do not need to proceed * {@link SubqueryBase} by {@link SubqueryBase}. * {@link BOpUtility#visitAll(BOp, Class)} can be used to locate all * INCLUDEs in the entire query and then we can build up whatever indices we * need in optimize() and use them elsewhere as required. */ static private List<NamedSubqueryInclude> findSubqueryIncludes(final SubqueryBase queryRoot){ final Striterator itr = new Striterator( BOpUtility.postOrderIterator((BOp) queryRoot.getWhereClause())); itr.addTypeFilter(NamedSubqueryInclude.class); final List<NamedSubqueryInclude> list = new LinkedList<NamedSubqueryInclude>(); while (itr.hasNext()) { list.add((NamedSubqueryInclude) itr.next()); } final Striterator itr2 = new Striterator( BOpUtility.postOrderIterator((BOp) queryRoot.getWhereClause())); itr2.addTypeFilter(SubqueryRoot.class); while (itr2.hasNext()) { list.addAll(findSubqueryIncludes((SubqueryRoot) itr2.next())); } return list; }
sb.append(super.toString(indent+1));
subqueryRoot.getWhereClause(), StatementPatternNode.class); new Object[] { whereClause, subqueryRoot.getWhereClause() }, visitQueryHints(astContainer.getOptimizedAST(), QueryHints.OPTIMIZER)); assertNotNull(subqueryRoot.getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getProjection().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getWhereClause().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRootSP.getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getSlice().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertEquals("5",subqueryRoot.getProjection().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY));
/** * TODO This seems to be inefficient. We do not need to proceed * {@link SubqueryBase} by {@link SubqueryBase}. * {@link BOpUtility#visitAll(BOp, Class)} can be used to locate all * INCLUDEs in the entire query and then we can build up whatever indices we * need in optimize() and use them elsewhere as required. */ static private List<NamedSubqueryInclude> findSubqueryIncludes(final SubqueryBase queryRoot){ final Striterator itr = new Striterator( BOpUtility.postOrderIterator((BOp) queryRoot.getWhereClause())); itr.addTypeFilter(NamedSubqueryInclude.class); final List<NamedSubqueryInclude> list = new LinkedList<NamedSubqueryInclude>(); while (itr.hasNext()) { list.add((NamedSubqueryInclude) itr.next()); } final Striterator itr2 = new Striterator( BOpUtility.postOrderIterator((BOp) queryRoot.getWhereClause())); itr2.addTypeFilter(SubqueryRoot.class); while (itr2.hasNext()) { list.addAll(findSubqueryIncludes((SubqueryRoot) itr2.next())); } return list; }
/** * {@inheritDoc} * <p> * Overridden to also report the {@link Annotations#RUN_ONCE} annotation. */ @Override public String toString(final int indent) { final StringBuilder sb = new StringBuilder(); sb.append(super.toString(indent)); final boolean runOnce = isRunOnce(); sb.append("\n"); sb.append(indent(indent)); if (runOnce) sb.append("@" + Annotations.RUN_ONCE + "=" + runOnce); final IVariable<?> askVar = getAskVar(); if(askVar != null) sb.append("@" + Annotations.ASK_VAR + "=" + askVar); final List<FilterNode> filters = getAttachedJoinFilters(); if(!filters.isEmpty()) { for (FilterNode filter : filters) { sb.append(filter.toString(indent + 1)); } } return sb.toString(); }
subqueryRoot.getWhereClause(), StatementPatternNode.class); new Object[] { whereClause, subqueryRoot.getWhereClause() }, visitQueryHints(astContainer.getOptimizedAST(), QueryHints.OPTIMIZER)); assertNotNull(subqueryRoot.getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getProjection().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getWhereClause().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRootSP.getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertNotNull(subqueryRoot.getSlice().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY)); assertEquals("5",subqueryRoot.getProjection().getQueryHint(PipelineOp.Annotations.CHUNK_CAPACITY));
public JoinGroupNode getParentJoinGroup() { IGroupNode<?> parent = getParent(); while (parent != null) { if (parent instanceof JoinGroupNode) return (JoinGroupNode) parent; parent = parent.getParent(); } return null; }
/** * {@inheritDoc} * <p> * Overridden to also report the {@link Annotations#RUN_ONCE} annotation. */ @Override public String toString(final int indent) { final StringBuilder sb = new StringBuilder(); sb.append(super.toString(indent)); final boolean runOnce = isRunOnce(); sb.append("\n"); sb.append(indent(indent)); if (runOnce) sb.append("@" + Annotations.RUN_ONCE + "=" + runOnce); final IVariable<?> askVar = getAskVar(); if(askVar != null) sb.append("@" + Annotations.ASK_VAR + "=" + askVar); final List<FilterNode> filters = getAttachedJoinFilters(); if(!filters.isEmpty()) { for (FilterNode filter : filters) { sb.append(filter.toString(indent + 1)); } } return sb.toString(); }
@Override public Set<IVariable<?>> getDesiredBound(StaticAnalysis sa) { return getProjectedVars(new HashSet<IVariable<?>>()); } }
@SuppressWarnings("unchecked") public GraphPatternGroup<IGroupMemberNode> getParentGraphPatternGroup() { IGroupNode<?> parent = getParent(); while (parent != null) { if (parent instanceof GraphPatternGroup) return (GraphPatternGroup<IGroupMemberNode>) parent; parent = parent.getParent(); } return null; }
sb.append(super.toString(indent+1));
public JoinGroupNode getParentJoinGroup() { IGroupNode<?> parent = getParent(); while (parent != null) { if (parent instanceof JoinGroupNode) return (JoinGroupNode) parent; parent = parent.getParent(); } return null; }
public TermNode getContext() { final IQueryNode parent = getParent(); if (parent instanceof GroupMemberNodeBase<?>) { return ((GroupMemberNodeBase<?>) parent).getContext(); } return null; }
@SuppressWarnings("unchecked") public GraphPatternGroup<IGroupMemberNode> getParentGraphPatternGroup() { IGroupNode<?> parent = getParent(); while (parent != null) { if (parent instanceof GraphPatternGroup) return (GraphPatternGroup<IGroupMemberNode>) parent; parent = parent.getParent(); } return null; }