/** * Add conditions to a table filter if they can be evaluated. * * @param filter the table filter * @param outerJoin if the expression is part of an outer join */ public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (!addedToFilter && !outerJoin && isEverything(ExpressionVisitor.EVALUATABLE_VISITOR)) { filter.addFilterCondition(this, false); addedToFilter = true; } }
/** * Map the columns and add the join condition. * * @param on the condition */ public void mapAndAddFilter(Expression on) { on.mapColumns(this, 0); addFilterCondition(on, true); on.createIndexConditions(session, this); if (nestedJoin != null) { on.mapColumns(nestedJoin, 0); on.createIndexConditions(session, nestedJoin); } if (join != null) { join.mapAndAddFilter(on); } }
/** * Add conditions to a table filter if they can be evaluated. * * @param filter the table filter * @param outerJoin if the expression is part of an outer join */ public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (!addedToFilter && !outerJoin && isEverything(ExpressionVisitor.EVALUATABLE)) { filter.addFilterCondition(this, false); addedToFilter = true; } }
/** * Add conditions to a table filter if they can be evaluated. * * @param filter the table filter * @param outerJoin if the expression is part of an outer join */ public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (!addedToFilter && !outerJoin && isEverything(ExpressionVisitor.EVALUATABLE_VISITOR)) { filter.addFilterCondition(this, false); addedToFilter = true; } }
/** * Add conditions to a table filter if they can be evaluated. * * @param filter the table filter * @param outerJoin if the expression is part of an outer join */ public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (!addedToFilter && !outerJoin && isEverything(ExpressionVisitor.EVALUATABLE_VISITOR)) { filter.addFilterCondition(this, false); addedToFilter = true; } }
private void mapAndAddFilter(Expression on) throws SQLException { on.mapColumns(this, 0); addFilterCondition(on, true); on.createIndexConditions(session, this); if (join != null) { join.mapAndAddFilter(on); } }
/** * Map the columns and add the join condition. * * @param on the condition */ public void mapAndAddFilter(Expression on) { on.mapColumns(this, 0); addFilterCondition(on, true); on.createIndexConditions(session, this); if (nestedJoin != null) { on.mapColumns(nestedJoin, 0); on.createIndexConditions(session, nestedJoin); } if (join != null) { join.mapAndAddFilter(on); } }
/** * Map the columns and add the join condition. * * @param on the condition */ public void mapAndAddFilter(Expression on) { on.mapColumns(this, 0); addFilterCondition(on, true); on.createIndexConditions(session, this); if (nestedJoin != null) { on.mapColumns(nestedJoin, 0); on.createIndexConditions(session, nestedJoin); } if (join != null) { join.mapAndAddFilter(on); } }
public Expression optimizeInJoin(Session session, Select select) throws SQLException { if (all || compareType != Comparison.EQUAL) { return this; } if (!query.isEverything(ExpressionVisitor.EVALUATABLE)) { return this; } String alias = query.getFirstColumnAlias(session); query.setDistinct(true); if (alias == null) { return this; } TableView view = TableView.createTempView(session, session.getUser(), query); TableFilter filter = new TableFilter(session, view, view.getName(), false, select); select.addTableFilter(filter, true); ExpressionColumn column = new ExpressionColumn(session.getDatabase(), null, view.getName(), alias); Expression on = new Comparison(session, Comparison.EQUAL, left, column); on.mapColumns(filter, 0); on.createIndexConditions(session, filter); filter.addFilterCondition(on, true); return ValueExpression.get(ValueBoolean.get(true)); }
Comparison on = new Comparison(session, Comparison.EQUAL, left, column); on.mapColumns(filter, 0); filter.addFilterCondition(on, true); return ValueExpression.get(ValueBoolean.get(true));