/** * Applies the optimization to a given subquery root (wrapper around * the main entry point). */ private IBindingSet[] optimize( final StaticAnalysis sa, final SubqueryRoot subqueryRoot, final StaticBindingInfo staticBindingInfo, final VariableUsageInfo ancestorVarUsageInfo, final Set<InlineTasks> inlineTasks) { final IBindingSet[] staticBindings = optimize( sa, subqueryRoot, staticBindingInfo, ancestorVarUsageInfo, inlineTasks, subqueryRoot.getBindingsClause()); // record static bindings in subquery VALUES clause, if any final LinkedHashSet<IVariable<?>> bcVars = new LinkedHashSet<IVariable<?>>(); bcVars.addAll(SolutionSetStatserator.get(staticBindings).getUsedVars()); final List<IBindingSet> bcBindings = Arrays.asList(staticBindings); if (!bcVars.isEmpty()) { final BindingsClause bc = new BindingsClause(bcVars,bcBindings); subqueryRoot.setBindingsClause(bc); } return staticBindings; }
/** * Applies the optimization to a given subquery root (wrapper around * the main entry point). */ private IBindingSet[] optimize( final StaticAnalysis sa, final SubqueryRoot subqueryRoot, final StaticBindingInfo staticBindingInfo, final VariableUsageInfo ancestorVarUsageInfo, final Set<InlineTasks> inlineTasks) { final IBindingSet[] staticBindings = optimize( sa, subqueryRoot, staticBindingInfo, ancestorVarUsageInfo, inlineTasks, subqueryRoot.getBindingsClause()); // record static bindings in subquery VALUES clause, if any final LinkedHashSet<IVariable<?>> bcVars = new LinkedHashSet<IVariable<?>>(); bcVars.addAll(SolutionSetStatserator.get(staticBindings).getUsedVars()); final List<IBindingSet> bcBindings = Arrays.asList(staticBindings); if (!bcVars.isEmpty()) { final BindingsClause bc = new BindingsClause(bcVars,bcBindings); subqueryRoot.setBindingsClause(bc); } return staticBindings; }
/** * Returns a {@link BindingsClause} binding the specified vars. */ BindingsClause bindingsClauseWithVars(final String... varNames) { final LinkedHashSet<IVariable<?>> declaredVars = new LinkedHashSet<IVariable<?>>(); for (String varName : varNames) { declaredVars.add(Var.var(varName)); } final List<IBindingSet> bindingSets = new ArrayList<IBindingSet>(); IBindingSet bs = new ListBindingSet(); for (String varName : varNames) { bs.set(Var.var(varName), new Constant<>(TermId.mockIV(VTE.URI))); } return new BindingsClause(declaredVars, bindingSets); }
/** * Returns a {@link BindingsClause} binding the specified vars. */ BindingsClause bindingsClauseWithVars(final String... varNames) { final LinkedHashSet<IVariable<?>> declaredVars = new LinkedHashSet<IVariable<?>>(); for (String varName : varNames) { declaredVars.add(Var.var(varName)); } final List<IBindingSet> bindingSets = new ArrayList<IBindingSet>(); IBindingSet bs = new ListBindingSet(); for (String varName : varNames) { bs.set(Var.var(varName), new Constant<>(TermId.mockIV(VTE.URI))); } return new BindingsClause(declaredVars, bindingSets); }
return new BindingsClause(vars, bindingSets);
return new BindingsClause(vars, bindingSets);
final BindingsClause bind = new BindingsClause(vars, bindingSets);
final BindingsClause bind = new BindingsClause(vars, bindingSets);
/** * Returns a {@link BindingsClause} binding the specified vars. */ BindingsClause bindingsClauseWithVars(final String... varNames) { final LinkedHashSet<IVariable<?>> declaredVars = new LinkedHashSet<IVariable<?>>(); for (String varName : varNames) { declaredVars.add(Var.var(varName)); } final List<IBindingSet> bindingSets = new ArrayList<IBindingSet>(); IBindingSet bs = new ListBindingSet(); for (String varName : varNames) { bs.set(Var.var(varName), new Constant<>(TermId.mockIV(VTE.URI))); } return new BindingsClause(declaredVars, bindingSets); }
/** * Test interface implementation for assignment nodes. */ @SuppressWarnings("serial") public void testBindingsClause() { final LinkedHashSet<IVariable<?>> declaredVars = new LinkedHashSet<IVariable<?>>() {{ add(Var.var("x")); add(Var.var("y")); }}; final List<IBindingSet> bindingSets = new ArrayList<IBindingSet>() {{ add(new ListBindingSet() {{ set(Var.var("x"), new Constant<>(TermId.mockIV(VTE.URI))); set(Var.var("y"), new Constant<>(TermId.mockIV(VTE.URI))); }}); }}; final BindingsClause bc = new BindingsClause(declaredVars, bindingSets); // dummy sa object final StaticAnalysis sa = new StaticAnalysis(new QueryRoot(QueryType.SELECT), null); // bindings clauses requires no variables to be bound before, as they // introduce constant values only; nothing is forbidden and nothing // desired here... assertEquals(new HashSet<IVariable<?>>(), bc.getRequiredBound(sa)); assertEquals(new HashSet<IVariable<?>>(), bc.getDesiredBound(sa)); }
/** * Test interface implementation for assignment nodes. */ @SuppressWarnings("serial") public void testBindingsClause() { final LinkedHashSet<IVariable<?>> declaredVars = new LinkedHashSet<IVariable<?>>() {{ add(Var.var("x")); add(Var.var("y")); }}; final List<IBindingSet> bindingSets = new ArrayList<IBindingSet>() {{ add(new ListBindingSet() {{ set(Var.var("x"), new Constant<>(TermId.mockIV(VTE.URI))); set(Var.var("y"), new Constant<>(TermId.mockIV(VTE.URI))); }}); }}; final BindingsClause bc = new BindingsClause(declaredVars, bindingSets); // dummy sa object final StaticAnalysis sa = new StaticAnalysis(new QueryRoot(QueryType.SELECT), null); // bindings clauses requires no variables to be bound before, as they // introduce constant values only; nothing is forbidden and nothing // desired here... assertEquals(new HashSet<IVariable<?>>(), bc.getRequiredBound(sa)); assertEquals(new HashSet<IVariable<?>>(), bc.getDesiredBound(sa)); }
final BindingsClause bindingsClause = new BindingsClause(vars, solutionsIn); expected.setBindingsClause(bindingsClause);
final BindingsClause bindingsClause = new BindingsClause(vars, solutionsIn); expected.setBindingsClause(bindingsClause);
/** * Test interface implementation for assignment nodes. */ @SuppressWarnings("serial") public void testBindingsClause() { final LinkedHashSet<IVariable<?>> declaredVars = new LinkedHashSet<IVariable<?>>() {{ add(Var.var("x")); add(Var.var("y")); }}; final List<IBindingSet> bindingSets = new ArrayList<IBindingSet>() {{ add(new ListBindingSet() {{ set(Var.var("x"), new Constant<>(TermId.mockIV(VTE.URI))); set(Var.var("y"), new Constant<>(TermId.mockIV(VTE.URI))); }}); }}; final BindingsClause bc = new BindingsClause(declaredVars, bindingSets); // dummy sa object final StaticAnalysis sa = new StaticAnalysis(new QueryRoot(QueryType.SELECT), null); // bindings clauses requires no variables to be bound before, as they // introduce constant values only; nothing is forbidden and nothing // desired here... assertEquals(new HashSet<IVariable<?>>(), bc.getRequiredBound(sa)); assertEquals(new HashSet<IVariable<?>>(), bc.getDesiredBound(sa)); }
final BindingsClause bindingsClause = new BindingsClause( declaredVars, bindings);
final BindingsClause bindingsClause = new BindingsClause( declaredVars, bindings);
final BindingsClause bindingsClause = new BindingsClause(vars, solutionsIn); expected.setBindingsClause(bindingsClause);
final BindingsClause bindingsClause = new BindingsClause( declaredVars, bindings);
final BindingsClause bindingsClause = new BindingsClause( declaredVars, bindings);
final BindingsClause bindingsClause = new BindingsClause( declaredVars, bindings);