@Override public void restrict(FilterImpl f) { if (f.getSelector().isOuterJoinRightHandSide()) { // we need to be careful with the condition // "NOT (property IS NOT NULL)" // (which is the same as "property IS NULL") // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where not b.y is not null" // must not result in the index to check for // "b.y is null", because that would alter the // result return; } // ignore // TODO convert NOT conditions }
@Override public void restrict(FilterImpl f) { if (f.getSelector().isOuterJoinRightHandSide()) { // we need to be careful with the condition // "NOT (property IS NOT NULL)" // (which is the same as "property IS NULL") // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where not b.y is not null" // must not result in the index to check for // "b.y is null", because that would alter the // result return; } // ignore // TODO convert NOT conditions }
@Override public void restrict(FilterImpl f) { if (f.getSelector().isOuterJoinRightHandSide()) { // we need to be careful with the condition // "NOT (property IS NOT NULL)" // (which is the same as "property IS NULL") // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where not b.y is not null" // must not result in the index to check for // "b.y is null", because that would alter the // result return; } // ignore // TODO convert NOT conditions }
@Override public void restrictPushDown(SelectorImpl s) { if (s.isOuterJoinRightHandSide()) { // we need to be careful with "property IS NULL" // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where b.y is null" // must not check for "b.y is null" too early, // because that would alter the result return; } if (s.equals(selector)) { s.restrictSelector(this); } }
@Override public void restrictPushDown(SelectorImpl s) { if (s.isOuterJoinRightHandSide()) { // we need to be careful with "property IS NULL" // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where b.y is null" // must not check for "b.y is null" too early, // because that would alter the result return; } if (s.equals(selector)) { s.restrictSelector(this); } }
@Override public void restrictPushDown(SelectorImpl s) { if (s.isOuterJoinRightHandSide()) { // we need to be careful with "property IS NULL" // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where b.y is null" // must not check for "b.y is null" too early, // because that would alter the result return; } if (s.equals(selector)) { s.restrictSelector(this); } }
@Override public void restrict(FilterImpl f) { // we need to be careful with "property IS NULL" // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where b.y is null" // must not result in the index to check for // "b.y is null", because that would alter the // result if (selector.isOuterJoinRightHandSide()) { return; } if (f.getSelector().equals(selector)) { String pn = normalizePropertyName(propertyName); f.restrictProperty(pn, Operator.EQUAL, null); } }
@Override public void restrict(FilterImpl f) { // we need to be careful with "property IS NULL" // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where b.y is null" // must not result in the index to check for // "b.y is null", because that would alter the // result if (selector.isOuterJoinRightHandSide()) { return; } if (f.getSelector().equals(selector)) { String pn = normalizePropertyName(propertyName); f.restrictProperty(pn, Operator.EQUAL, null); } }
@Override public void restrict(FilterImpl f) { // we need to be careful with "property IS NULL" // because this might cause an index // to ignore the join condition "property = x" // for example in: // "select * from a left outer join b on a.x = b.y // where b.y is null" // must not result in the index to check for // "b.y is null", because that would alter the // result if (selector.isOuterJoinRightHandSide()) { return; } if (f.getSelector().equals(selector)) { String pn = normalizePropertyName(propertyName); f.restrictProperty(pn, Operator.EQUAL, null); } }