/**
  * Prepares the Criteria object and uses the parent doSelect() method to execute a PDOStatement.
  *
  * Use this method directly if you want to work with an executed statement durirectly (for example
  * to perform your own object hydration).
  *
  * @param      Criteria $criteria The Criteria object used to build the SELECT statement.
  * @param      PropelPDO $con The connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  * @return     PDOStatement The executed PDOStatement object.
  * @see        BasePeer::doSelect()
  */
 public static function doSelectStmt(Criteria $criteria, PropelPDO $con = null)
 {
     foreach (sfMixer::getCallables('BaseRpMissionCostTrackingPeer:doSelectStmt:doSelectStmt') as $callable) {
         call_user_func($callable, 'BaseRpMissionCostTrackingPeer', $criteria, $con);
     }
     if ($con === null) {
         $con = Propel::getConnection(RpMissionCostTrackingPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     if (!$criteria->hasSelectClause()) {
         $criteria = clone $criteria;
         RpMissionCostTrackingPeer::addSelectColumns($criteria);
     }
     // Set the correct dbName
     $criteria->setDbName(self::DATABASE_NAME);
     // BasePeer returns a PDOStatement
     return BasePeer::doSelect($criteria, $con);
 }