public void prepare(){
  for (int i=0; i < indexConditions.size(); i++) {
    IndexCondition condition=indexConditions.get(i);
    if (!condition.isAlwaysFalse()) {
      Column col=condition.getColumn();
      if (col.getColumnId() >= 0) {
        if (index.getColumnIndex(col) < 0) {
          indexConditions.remove(i);
          i--;
        }
      }
    }
  }
  if (nestedJoin != null) {
    if (SysProperties.CHECK && nestedJoin == this) {
      DbException.throwInternalError("self join");
    }
    nestedJoin.prepare();
  }
  if (join != null) {
    if (SysProperties.CHECK && join == this) {
      DbException.throwInternalError("self join");
    }
    join.prepare();
  }
  if (filterCondition != null) {
    filterCondition=filterCondition.optimize(session);
  }
  if (joinCondition != null) {
    joinCondition=joinCondition.optimize(session);
  }
}

public void prepare ( ) { for ( int i = 0 ; i < indexConditions . size ( ) ; i ++ ) { IndexCondition condition = indexConditions . get ( i ) ; if ( ! condition . isAlwaysFalse ( ) ) { Column col = condition . getColumn ( ) ; if ( col . getColumnId ( ) >= 0 ) { if ( index . getColumnIndex ( col ) < 0 ) { indexConditions . remove ( i ) ; i -- ; } } } } if ( nestedJoin != null ) { if ( SysProperties . CHECK && nestedJoin == this ) { DbException . throwInternalError ( "self join" ) ; } nestedJoin . prepare ( ) ; } if ( join != null ) { if ( SysProperties . CHECK && join == this ) { DbException . throwInternalError ( "self join" ) ; } join . prepare ( ) ; } if ( filterCondition != null ) { filterCondition = filterCondition . optimize ( session ) ; } if ( joinCondition != null ) { joinCondition = joinCondition . optimize ( session ) ; } }
prepare reading rows . this method will remove all index conditions that can not be used , and optimize the conditions .
