@Override public void execute(NodeState rootState) { QueryIndex index = plan.getIndex(); if (index == null) { cursor = Cursors.newPathCursor(new ArrayList<String>(), query.getSettings()); return; } IndexPlan p = plan.getIndexPlan(); if (p != null) { p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; cursor = adv.query(p, rootState); } else { cursor = index.query(createFilter(false), rootState); } }
@Override public void execute(NodeState rootState) { QueryIndex index = plan.getIndex(); if (index == null) { cursor = Cursors.newPathCursor(new ArrayList<String>(), query.getSettings()); return; } IndexPlan p = plan.getIndexPlan(); if (p != null) { p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; cursor = adv.query(p, rootState); } else { cursor = index.query(createFilter(false), rootState); } }
private void executeInternal(NodeState rootState) { QueryIndex index = plan.getIndex(); timerDuration = null; if (index == null) { cursor = Cursors.newPathCursor(new ArrayList<String>(), query.getSettings()); planIndexName = "traverse"; return; } IndexPlan p = plan.getIndexPlan(); if (p != null) { planIndexName = p.getPlanName(); p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; cursor = adv.query(p, rootState); } else { FilterImpl f = createFilter(false); planIndexName = index.getIndexName(f, rootState); cursor = index.query(f, rootState); } }
@Override public Cursor query(IndexPlan plan, NodeState rootState) { if (getNodeAggregator() == null) { // path-though return baseIndex.query(plan, rootState); } else if (!(plan instanceof AggregateIndexPlan)) { // remove the node type restriction plan.setFilter(newAggregationFilter(plan.getFilter(), null)); return newAggregationCursor(plan, rootState); } Filter filter = plan.getFilter(); AggregateIndexPlan aggPlan = (AggregateIndexPlan) plan; FullTextExpression constraint = filter.getFullTextConstraint(); return flatten(constraint, aggPlan, filter, rootState, ""); }
@Override public Cursor query(IndexPlan plan, NodeState rootState) { if (getNodeAggregator() == null) { // path-though return baseIndex.query(plan, rootState); } else if (!(plan instanceof AggregateIndexPlan)) { // remove the node type restriction plan.setFilter(newAggregationFilter(plan.getFilter(), null)); return newAggregationCursor(plan, rootState); } Filter filter = plan.getFilter(); AggregateIndexPlan aggPlan = (AggregateIndexPlan) plan; FullTextExpression constraint = filter.getFullTextConstraint(); return flatten(constraint, aggPlan, filter, rootState, ""); }
@Override public Cursor query(IndexPlan plan, NodeState rootState) { if (getNodeAggregator() == null) { // path-though return baseIndex.query(plan, rootState); } else if (!(plan instanceof AggregateIndexPlan)) { // remove the node type restriction plan.setFilter(newAggregationFilter(plan.getFilter(), null)); return newAggregationCursor(plan, rootState); } Filter filter = plan.getFilter(); AggregateIndexPlan aggPlan = (AggregateIndexPlan) plan; FullTextExpression constraint = filter.getFullTextConstraint(); return flatten(constraint, aggPlan, filter, rootState, ""); }
@Test public void copy() throws Exception{ Filter f = new FilterImpl(null, "SELECT * FROM [nt:file]", new QueryEngineSettings()); IndexPlan.Builder b = new IndexPlan.Builder(); IndexPlan plan1 = b.setEstimatedEntryCount(10).setFilter(f).setDelayed(true).build(); IndexPlan plan2 = plan1.copy(); plan2.setFilter(new FilterImpl(null, "SELECT * FROM [oak:Unstructured]", new QueryEngineSettings())); assertEquals(plan1.getEstimatedEntryCount(), 10); assertEquals(plan2.getEstimatedEntryCount(), 10); assertTrue(plan1.isDelayed()); assertTrue(plan2.isDelayed()); assertEquals(plan1.getFilter().getQueryStatement(), "SELECT * FROM [nt:file]"); assertEquals(plan2.getFilter().getQueryStatement(), "SELECT * FROM [oak:Unstructured]"); }