protected SetCriteria setCriteria( DynamicOperand operand, Collection<? extends StaticOperand> values ) { return new SetCriteria(operand, values); }
protected SetCriteria setCriteria( DynamicOperand operand, Collection<? extends StaticOperand> values ) { return new SetCriteria(operand, values); }
protected SetCriteria in( DynamicOperand left, StaticOperand... right ) { return new SetCriteria(left, right); } }
@Override public SetCriteria in( javax.jcr.query.qom.DynamicOperand operand, javax.jcr.query.qom.StaticOperand... values ) { DynamicOperand jcrOperand = CheckArg.getInstanceOf(operand, DynamicOperand.class, "operand"); List<StaticOperand> jcrValues = new ArrayList<StaticOperand>(); for (javax.jcr.query.qom.StaticOperand value : values) { StaticOperand jcrValue = CheckArg.getInstanceOf(value, StaticOperand.class, "values"); jcrValues.add(jcrValue); } return new SetCriteria(jcrOperand, jcrValues); }
@Override public SetCriteria in( javax.jcr.query.qom.DynamicOperand operand, javax.jcr.query.qom.StaticOperand... values ) { DynamicOperand jcrOperand = CheckArg.getInstanceOf(operand, DynamicOperand.class, "operand"); List<StaticOperand> jcrValues = new ArrayList<StaticOperand>(); for (javax.jcr.query.qom.StaticOperand value : values) { StaticOperand jcrValue = CheckArg.getInstanceOf(value, StaticOperand.class, "values"); jcrValues.add(jcrValue); } return new SetCriteria(jcrOperand, jcrValues); }
public ConstraintBuilder isIn( Iterable<Object> literals ) { CheckArg.isNotNull(literals, "literals"); Collection<StaticOperand> right = new ArrayList<StaticOperand>(); for (Object literal : literals) { right.add(literal instanceof Literal ? (Literal)literal : new Literal(literal)); } return this.constraintBuilder.setConstraint(new SetCriteria(left, right)); }
public ConstraintBuilder isIn( Iterable<Object> literals ) { CheckArg.isNotNull(literals, "literals"); Collection<StaticOperand> right = new ArrayList<StaticOperand>(); for (Object literal : literals) { right.add(literal instanceof Literal ? (Literal)literal : new Literal(literal)); } return this.constraintBuilder.setConstraint(new SetCriteria(left, right)); }
public ConstraintBuilder isIn( Object... literals ) { CheckArg.isNotNull(literals, "literals"); Collection<StaticOperand> right = new ArrayList<StaticOperand>(); for (Object literal : literals) { right.add(literal instanceof Literal ? (Literal)literal : new Literal(literal)); } return this.constraintBuilder.setConstraint(new SetCriteria(left, right)); }
public ConstraintBuilder isInSubquery( Subquery subquery ) { CheckArg.isNotNull(subquery, "subquery"); return this.constraintBuilder.setConstraint(new SetCriteria(left, subquery)); }
public ConstraintBuilder isIn( Object... literals ) { CheckArg.isNotNull(literals, "literals"); Collection<StaticOperand> right = new ArrayList<StaticOperand>(); for (Object literal : literals) { right.add(literal instanceof Literal ? (Literal)literal : new Literal(literal)); } return this.constraintBuilder.setConstraint(new SetCriteria(left, right)); }
public ConstraintBuilder isInSubquery( Subquery subquery ) { CheckArg.isNotNull(subquery, "subquery"); return this.constraintBuilder.setConstraint(new SetCriteria(left, subquery)); }
public ConstraintBuilder isInSubquery( QueryCommand subquery ) { CheckArg.isNotNull(subquery, "subquery"); return this.constraintBuilder.setConstraint(new SetCriteria(left, new Subquery(subquery))); }
public ConstraintBuilder isInSubquery( QueryCommand subquery ) { CheckArg.isNotNull(subquery, "subquery"); return this.constraintBuilder.setConstraint(new SetCriteria(left, new Subquery(subquery))); }
@Test public void shouldNotTokenizeOnIntrawordDelimeter() { SetCriteria sc = new SetCriteria(propertyValue(def5), new Literal("asd-sdf-dfg")); validate(sc, "key7"); }
@Test public void shouldSupportSetConstraint() { SetCriteria sc = new SetCriteria(propertyValue(def3), new Literal("a")); validate(sc, "key1"); SetCriteria sc1 = new SetCriteria(propertyValue(def2), new Literal(3), new Literal(4)); validate(sc1, "key3", "key4"); }
@Test public void shouldSupportMultipleValues() { SetCriteria sc = new SetCriteria(propertyValue(def3), new Literal[]{new Literal("a"), new Literal("e")}); validate(sc, "key1", "key2"); }
@Test public void shouldConvertValuesToCoreTypes() { ExecutionContext ctx = new ExecutionContext(); Name n1 = ctx.getValueFactories().getNameFactory().create("mix:title"); Name n2 = ctx.getValueFactories().getNameFactory().create("mix:titl"); index.add(key("key8"), "mixinTypes", new Object[]{n1}); index.commit(); SetCriteria sc = new SetCriteria(propertyValue(def4), new Literal(n1), new Literal(n2)); validate(sc, "key8"); }
select1.setProperty(Property.SELECT_CRITERIA, new FullTextSearch(selector("type1"), "a2", "something")); PlanNode select2 = new PlanNode(Type.SELECT, select1, selector("type1")); select2.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("type1"), "primaryType"), new Literal("t1"), new Literal("t0"))); PlanNode select3 = new PlanNode(Type.SELECT, select2, selector("type1")); select3.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("type1"), "mixins"), new Literal("t3"), new Literal("t4"))); PlanNode select4 = new PlanNode(Type.SELECT, select3, selector("type1")); select4.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("type1"), "primaryType"), new Literal("t2"), new Literal("t0"))); PlanNode select5 = new PlanNode(Type.SELECT, select4, selector("type1")); select5.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("type1"), "mixins"), new Literal("t4"), new Literal("t5"))); PlanNode source = new PlanNode(Type.SOURCE, select5, selector("type1"));
@Test public void shouldOptimizePlanForQueryUsingTypeView() { node = optimize("SELECT type1.a1 AS a, type1.a2 AS b FROM type1 WHERE CONTAINS(type1.a2,'something')"); // Create the expected plan ... PlanNode access = new PlanNode(Type.ACCESS, selector("type1")); PlanNode project = new PlanNode(Type.PROJECT, access, selector("type1")); project.setProperty(Property.PROJECT_COLUMNS, columns(column("type1", "a1", "a"), column("type1", "a2", "b"))); PlanNode select1 = new PlanNode(Type.SELECT, project, selector("type1")); select1.setProperty(Property.SELECT_CRITERIA, new FullTextSearch(selector("type1"), "a2", "something")); PlanNode select2 = new PlanNode(Type.SELECT, select1, selector("type1")); select2.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("type1"), "primaryType"), new Literal("t1"), new Literal("t0"))); PlanNode select3 = new PlanNode(Type.SELECT, select2, selector("type1")); select3.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("type1"), "mixins"), new Literal("t3"), new Literal("t4"))); PlanNode source = new PlanNode(Type.SOURCE, select3, selector("type1")); source.setProperty(Property.SOURCE_NAME, selector("all")); source.setProperty(Property.SOURCE_ALIAS, selector("type1")); source.setProperty(Property.SOURCE_COLUMNS, context.getSchemata().getTable(selector("all")).getColumns()); // Compare the expected and actual plan ... assertPlanMatches(access); }
@FixFor( "MODE-869" ) @Test public void shouldOptimizePlanForSimpleQueryWithSubqueryInCriteria() { node = optimize("SELECT c11, c12 FROM t1 WHERE c13 IN (SELECT c21 FROM t2 WHERE c22 < CAST('3' AS LONG))"); // Create the expected plan ... PlanNode expected = new PlanNode(Type.DEPENDENT_QUERY, selector("t1"), selector("t2")); PlanNode subquery = new PlanNode(Type.ACCESS, expected, selector("t2")); subquery.setProperty(Property.VARIABLE_NAME, Subquery.VARIABLE_PREFIX + "1"); PlanNode project2 = new PlanNode(Type.PROJECT, subquery, selector("t2")); project2.setProperty(Property.PROJECT_COLUMNS, columns(column("t2", "c21"))); PlanNode select2 = new PlanNode(Type.SELECT, project2, selector("t2")); select2.setProperty(Property.SELECT_CRITERIA, new Comparison(new PropertyValue(selector("t2"), "c22"), Operator.LESS_THAN, new Literal(3L))); PlanNode source2 = new PlanNode(Type.SOURCE, select2, selector("t2")); source2.setProperty(Property.SOURCE_NAME, selector("t2")); source2.setProperty(Property.SOURCE_COLUMNS, context.getSchemata().getTable(selector("t2")).getColumns()); PlanNode mainQuery = new PlanNode(Type.ACCESS, expected, selector("t1")); PlanNode project = new PlanNode(Type.PROJECT, mainQuery, selector("t1")); project.setProperty(Property.PROJECT_COLUMNS, columns(column("t1", "c11"), column("t1", "c12"))); PlanNode select = new PlanNode(Type.SELECT, project, selector("t1")); select.setProperty(Property.SELECT_CRITERIA, new SetCriteria(new PropertyValue(selector("t1"), "c13"), new BindVariableName(Subquery.VARIABLE_PREFIX + "1"))); PlanNode source = new PlanNode(Type.SOURCE, select, selector("t1")); source.setProperty(Property.SOURCE_NAME, selector("t1")); source.setProperty(Property.SOURCE_COLUMNS, context.getSchemata().getTable(selector("t1")).getColumns()); // Compare the expected and actual plan ... assertPlanMatches(expected); }