@Override public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (outerJoin) { // can not optimize: // select * from test t1 left join test t2 on t1.id = t2.id where // not t2.id is not null // to // select * from test t1 left join test t2 on t1.id = t2.id and // t2.id is not null return; } super.addFilterConditions(filter, outerJoin); }
@Override public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (compareType == IS_NULL && outerJoin) { // can not optimize: // select * from test t1 left join test t2 on t1.id = t2.id // where t2.id is null // to // select * from test t1 left join test t2 // on t1.id = t2.id and t2.id is null return; } super.addFilterConditions(filter, outerJoin); }
@Override public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (andOrType == AND) { left.addFilterConditions(filter, outerJoin); right.addFilterConditions(filter, outerJoin); } else { super.addFilterConditions(filter, outerJoin); } }