private boolean createCriteria(boolean copyingJoinCriteria, Collection<Criteria> toCopy, Set<Criteria> combinedCriteria, Map<Expression, Expression> srcToTgt, List<Criteria> newJoinCrits, QueryMetadataInterface metadata, boolean underAccess) { boolean changedTree = false; if (srcToTgt.size() == 0) { return changedTree; } Iterator<Criteria> i = toCopy.iterator(); while (i.hasNext()) { Criteria crit = i.next(); Integer endGroups = copyCriteria(crit, srcToTgt, newJoinCrits, combinedCriteria, copyingJoinCriteria, metadata, underAccess); if (endGroups != null) { changedTree = true; if (copyingJoinCriteria && endGroups < 2) { if (crit instanceof CompareCriteria) { CompareCriteria cc = (CompareCriteria)crit; //don't remove theta criteria, just mark it as optional cc.setOptional(null); continue; } i.remove(); } } } return changedTree; }
((CompareCriteria)newCrit).setOptional(true); crit.setOptional(null); //the original has been simplified
((CompareCriteria)newCrit).setOptional(true); crit.setOptional(null); //the original has been simplified
((CompareCriteria)newCrit).setOptional(true); crit.setOptional(null); //the original has been simplified
if (!EvaluatableVisitor.willBecomeConstant(cc.getRightExpression()) && !EvaluatableVisitor.willBecomeConstant(cc.getRightExpression())) { ((CompareCriteria)tgtCrit).setOptional(true);
if (!EvaluatableVisitor.willBecomeConstant(cc.getRightExpression()) && !EvaluatableVisitor.willBecomeConstant(cc.getRightExpression())) { ((CompareCriteria)tgtCrit).setOptional(true);
CompareCriteria cc = (CompareCriteria)crit; cc.setOptional(null); continue;
if (!EvaluatableVisitor.willBecomeConstant(cc.getRightExpression()) && !EvaluatableVisitor.willBecomeConstant(cc.getRightExpression())) { ((CompareCriteria)tgtCrit).setOptional(true);
CompareCriteria cc = (CompareCriteria)crit; cc.setOptional(null); continue;
CompareCriteria cc = (CompareCriteria) crit; if (cc.isOptional()) { cc.setOptional(true); continue; if (considerOptional) { for (CompareCriteria criteria : thetaCriteria) { criteria.setOptional(false);
CompareCriteria cc = (CompareCriteria) crit; if (cc.isOptional()) { cc.setOptional(true); continue; if (considerOptional) { for (CompareCriteria criteria : thetaCriteria) { criteria.setOptional(false);
CompareCriteria cc = (CompareCriteria) crit; if (cc.isOptional()) { cc.setOptional(true); continue; if (considerOptional) { for (CompareCriteria criteria : thetaCriteria) { criteria.setOptional(false);
cc.setOptional(false);
cc.setOptional(false);