Esempio n. 1
0
 @Override
 public void createIndexConditions(Session session, TableFilter filter) {
   TableFilter tf = getTableFilter();
   if (filter == tf && column.getType() == Value.BOOLEAN) {
     IndexCondition cond =
         IndexCondition.get(Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(true)));
     filter.addIndexCondition(cond);
   }
 }
Esempio n. 2
0
 public Expression optimize(Session session) {
   boolean allConst = isDeterministic();
   for (int i = 0, len = args.length; i < len; i++) {
     Expression e = args[i].optimize(session);
     args[i] = e;
     allConst &= e.isConstant();
   }
   if (allConst) {
     return ValueExpression.get(getValue(session));
   }
   return this;
 }
Esempio n. 3
0
 @Override
 public Expression optimize(Session session) {
   boolean allConst = true;
   for (int i = 0; i < list.length; i++) {
     Expression e = list[i].optimize(session);
     if (!e.isConstant()) {
       allConst = false;
     }
     list[i] = e;
   }
   if (allConst) {
     return ValueExpression.get(getValue(session));
   }
   return this;
 }
Esempio n. 4
0
 @Override
 public Expression optimize(Session session) {
   left = left.optimize(session);
   boolean constant = left.isConstant();
   if (constant && left == ValueExpression.getNull()) {
     return left;
   }
   boolean allValuesConstant = true;
   boolean allValuesNull = true;
   int size = valueList.size();
   for (int i = 0; i < size; i++) {
     Expression e = valueList.get(i);
     e = e.optimize(session);
     if (e.isConstant() && e.getValue(session) != ValueNull.INSTANCE) {
       allValuesNull = false;
     }
     if (allValuesConstant && !e.isConstant()) {
       allValuesConstant = false;
     }
     if (left instanceof ExpressionColumn && e instanceof Parameter) {
       ((Parameter) e).setColumn(((ExpressionColumn) left).getColumn());
     }
     valueList.set(i, e);
   }
   if (constant && allValuesConstant) {
     return ValueExpression.get(getValue(session));
   }
   if (size == 1) {
     Expression right = valueList.get(0);
     Expression expr = new Comparison(session, Comparison.EQUAL, left, right);
     expr = expr.optimize(session);
     return expr;
   }
   if (allValuesConstant && !allValuesNull) {
     int leftType = left.getType();
     if (leftType == Value.UNKNOWN) {
       return this;
     }
     Expression expr = new ConditionInConstantSet(session, left, valueList);
     expr = expr.optimize(session);
     return expr;
   }
   return this;
 }
Esempio n. 5
0
 @Override
 public Expression getNotIfPossible(Session session) {
   return new Comparison(
       session, Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(false)));
 }