/** * Compare this ConstraintSet with another AbstractConstraint, ignoring aliases in member * fields and tables. * * {@inheritDoc} */ @Override public int compare(AbstractConstraint obj, Map<AbstractTable, AbstractTable> tableMap, Map<AbstractTable, AbstractTable> reverseTableMap) { if (obj instanceof ConstraintSet) { return alterComparisonAnd(internalCompare(obj, tableMap, reverseTableMap), alterComparisonSwitch(((ConstraintSet) obj).internalCompare(this, reverseTableMap, tableMap))); } else if (obj instanceof NotConstraint) { NotConstraint objNC = (NotConstraint) obj; return alterComparisonNotObj(compare(objNC.con, tableMap, reverseTableMap)); } return internalCompare(obj, tableMap, reverseTableMap); }
currentComp = alterComparisonSwitch(alterComparisonAORB( alterComparisonSwitch(currentComp), alterComparisonSwitch(con.compare(obj, tableMap, reverseTableMap))));
nc5 = new NotConstraint(c5); nc6 = new NotConstraint(c6); cs1 = new ConstraintSet(); cs1.add(c1); cs2 = new ConstraintSet(); cs2.add(c2); cs2.add(c3); cs2.add(nc4); cs3 = new ConstraintSet(); cs3.add(c2); cs3.add(nc5); cs4 = new ConstraintSet(); cs4.add(c5); cs4.add(c2);
return new NotConstraint(inner); } else if (oldConstraint instanceof ConstraintSet) { Set<AbstractConstraint> cons = ((ConstraintSet) oldConstraint).getConstraints(); ConstraintSet retval = new ConstraintSet(); for (AbstractConstraint con : cons) { con = reconstructAbstractConstraint(con, precomputedSqlTable, valueMap, tableSet, groupBy, firstPrecompOrderBy, precompOrderBySize, orderByField, firstPrecompOrderByHasNoNulls, reverseOrderBy); retval.add(con);
assertEquals(AbstractConstraint.EQUAL, aC.compare(bC)); IdentityMap<AbstractTable> id = IdentityMap.getInstance(); assertEquals(AbstractConstraint.IMPLIES, a.internalCompare(b, id, id)); assertEquals(AbstractConstraint.IMPLIES, b.internalCompare(a, id, id)); assertEquals(AbstractConstraint.EQUAL, a.compare(b)); assertEquals(lq1.getSQLString(), lq2.getSQLString()); assertEquals(lq1, lq2);
public void testCompareSS() throws Exception { assertEquals(AbstractConstraint.EQUAL, cs1.compare(cs1)); assertEquals(AbstractConstraint.EXCLUDES, cs1.compare(cs2)); assertEquals(AbstractConstraint.IMPLIES, cs1.compare(cs3)); assertEquals(AbstractConstraint.EXCLUDES, cs1.compare(cs4)); assertEquals(AbstractConstraint.EXCLUDES, cs2.compare(cs1)); assertEquals(AbstractConstraint.EQUAL, cs2.compare(cs2)); assertEquals(AbstractConstraint.INDEPENDENT, cs2.compare(cs3)); assertEquals(AbstractConstraint.INDEPENDENT, cs2.compare(cs4)); assertEquals(AbstractConstraint.IMPLIED_BY, cs3.compare(cs1)); assertEquals(AbstractConstraint.INDEPENDENT, cs3.compare(cs2)); assertEquals(AbstractConstraint.EQUAL, cs3.compare(cs3)); assertEquals(AbstractConstraint.OR, cs3.compare(cs4)); assertEquals(AbstractConstraint.EXCLUDES, cs4.compare(cs1)); assertEquals(AbstractConstraint.INDEPENDENT, cs4.compare(cs2)); assertEquals(AbstractConstraint.OR, cs4.compare(cs3)); assertEquals(AbstractConstraint.EQUAL, cs4.compare(cs4)); }
public void testWhereConstraintSet() throws Exception { q1 = new Query("select table1.field1 from table1 where (table1.field1 = table1.field2 or table1.field1 = table1.field3)"); q2 = new Query(); Table t1 = new Table("table1"); Field f1 = new Field("field1", t1); Field f2 = new Field("field2", t1); Field f3 = new Field("field3", t1); SelectValue sv1 = new SelectValue(f1, null); q2.addSelect(sv1); q2.addFrom(t1); ConstraintSet cs1 = new ConstraintSet(); cs1.add(new Constraint(f1, Constraint.EQ, f2)); cs1.add(new Constraint(f1, Constraint.EQ, f3)); q2.addWhere(cs1); assertEquals(q2, q1); }
return new NotConstraint(inner); } else if (oldConstraint instanceof ConstraintSet) { Set<AbstractConstraint> cons = ((ConstraintSet) oldConstraint).getConstraints(); ConstraintSet retval = new ConstraintSet(); for (AbstractConstraint con : cons) { con = reconstructAbstractConstraint(con, precomputedSqlTable, valueMap, tableSet, groupBy, firstPrecompOrderBy, precompOrderBySize, orderByField, firstPrecompOrderByHasNoNulls, reverseOrderBy); retval.add(con);
assertEquals(AbstractConstraint.EQUAL, cs1.compare(c1)); assertEquals(AbstractConstraint.EXCLUDES, cs1.compare(c2)); assertEquals(AbstractConstraint.EXCLUDES, cs1.compare(c3)); assertEquals(AbstractConstraint.IMPLIES, cs1.compare(c4)); assertEquals(AbstractConstraint.EXCLUDES, cs1.compare(c5)); assertEquals(AbstractConstraint.INDEPENDENT, cs1.compare(c6)); assertEquals(AbstractConstraint.EXCLUDES, cs2.compare(c1)); assertEquals(AbstractConstraint.IMPLIED_BY, cs2.compare(c2)); assertEquals(AbstractConstraint.IMPLIED_BY, cs2.compare(c3)); assertEquals(AbstractConstraint.OR, cs2.compare(c4)); assertEquals(AbstractConstraint.INDEPENDENT, cs2.compare(c5)); assertEquals(AbstractConstraint.INDEPENDENT, cs2.compare(c6)); assertEquals(AbstractConstraint.IMPLIED_BY, cs3.compare(c1)); assertEquals(AbstractConstraint.IMPLIED_BY, cs3.compare(c2)); assertEquals(AbstractConstraint.IMPLIED_BY, cs3.compare(c3)); assertEquals(AbstractConstraint.INDEPENDENT, cs3.compare(c4)); assertEquals(AbstractConstraint.OR, cs3.compare(c5)); assertEquals(AbstractConstraint.INDEPENDENT, cs3.compare(c6)); assertEquals(AbstractConstraint.OPPOSITE, cs1.compare(nc1)); assertEquals(AbstractConstraint.IMPLIES, cs1.compare(nc2)); assertEquals(AbstractConstraint.IMPLIES, cs1.compare(nc3)); assertEquals(AbstractConstraint.EXCLUDES, cs1.compare(nc4)); assertEquals(AbstractConstraint.IMPLIES, cs1.compare(nc5)); assertEquals(AbstractConstraint.INDEPENDENT, cs1.compare(nc6)); assertEquals(AbstractConstraint.IMPLIES, cs2.compare(nc1));
/** * Compare this ConstraintSet with another AbstractConstraint, ignoring aliases in member * fields and tables. * * {@inheritDoc} */ @Override public int compare(AbstractConstraint obj, Map<AbstractTable, AbstractTable> tableMap, Map<AbstractTable, AbstractTable> reverseTableMap) { if (obj instanceof ConstraintSet) { return alterComparisonAnd(internalCompare(obj, tableMap, reverseTableMap), alterComparisonSwitch(((ConstraintSet) obj).internalCompare(this, reverseTableMap, tableMap))); } else if (obj instanceof NotConstraint) { NotConstraint objNC = (NotConstraint) obj; return alterComparisonNotObj(compare(objNC.con, tableMap, reverseTableMap)); } return internalCompare(obj, tableMap, reverseTableMap); }
NotConstraint c2 = new NotConstraint(c1); Constraint c3 = new Constraint(v3, Constraint.LT, v4); ConstraintSet c4 = new ConstraintSet(); c4.add(c1); c4.add(c3); ConstraintSet ec4 = new ConstraintSet(); ec4.add(ec1); ec4.add(ec3);
currentComp = alterComparisonSwitch(alterComparisonAORB( alterComparisonSwitch(currentComp), alterComparisonSwitch(con.compare(obj, tableMap, reverseTableMap))));
public void testHavingConstraintSet() throws Exception { q1 = new Query("select table1.field1 from table1 group by table1.field1 having (table1.field1 = table1.field2 or table1.field1 = table1.field3)"); q2 = new Query(); Table t1 = new Table("table1"); Field f1 = new Field("field1", t1); Field f2 = new Field("field2", t1); Field f3 = new Field("field3", t1); SelectValue sv1 = new SelectValue(f1, null); q2.addSelect(sv1); q2.addFrom(t1); q2.addGroupBy(f1); ConstraintSet cs1 = new ConstraintSet(); cs1.add(new Constraint(f1, Constraint.EQ, f2)); cs1.add(new Constraint(f1, Constraint.EQ, f3)); q2.addHaving(cs1); assertEquals(q2, q1); }
return new NotConstraint(a); case SqlTokenTypes.OR_CONSTRAINT_SET: ConstraintSet b = new ConstraintSet(); subAST = ast.getFirstChild(); do { b.add(processNewAbstractConstraint(subAST)); subAST = subAST.getNextSibling(); } while (subAST != null);
return new NotConstraint(a); case SqlTokenTypes.OR_CONSTRAINT_SET: ConstraintSet b = new ConstraintSet(); subAST = ast.getFirstChild(); do { b.add(processNewAbstractConstraint(subAST)); subAST = subAST.getNextSibling(); } while (subAST != null);
SelectValue sv4 = new SelectValue(func1, "mx"); ConstraintSet cs1 = new ConstraintSet(); cs1.add(new Constraint(t1f4, Constraint.EQ, t2f2)); cs1.add(new Constraint(t1f4, Constraint.EQ, t2f3)); ConstraintSet cs2 = new ConstraintSet(); cs2.add(new Constraint(t1f1, Constraint.EQ, t2f2)); cs2.add(new Constraint(t1f1, Constraint.EQ, t2f3));