Example #1
0
 protected function tearDown()
 {
     foreach ($this->tmpFiles as $eachFile) {
         @unlink($eachFile);
     }
     $this->tmpFiles = array();
     // Only commit if the transaction hasn't failed.
     // This is because tearDown() is also executed on a failed tests,
     // and we don't want to call ConnectionInterface::commit() in that case
     // since it will trigger an exception on its own
     // ('Cannot commit because a nested transaction was rolled back')
     if (null !== $this->con) {
         if ($this->con->isCommitable()) {
             $this->con->commit();
         }
         $this->con = null;
     }
 }
Example #2
0
 /**
  * Do Explain Plan for query object or query string
  *
  * @param PropelPDO $con propel connection
  * @param ModelCriteria|string $query query the criteria or the query string
  * @throws PropelException
  * @return PDOStatement A PDO statement executed using the connection, ready to be fetched
  */
 public function doExplainPlan(PropelPDO $con, $query)
 {
     $con->beginTransaction();
     if ($query instanceof ModelCriteria) {
         $params = array();
         $dbMap = Propel::getDatabaseMap($query->getDbName());
         $sql = BasePeer::createSelectSql($query, $params);
     } else {
         $sql = $query;
     }
     // unique id for the query string
     $uniqueId = uniqid('Propel', true);
     $stmt = $con->prepare($this->getExplainPlanQuery($sql, $uniqueId));
     if ($query instanceof ModelCriteria) {
         $this->bindValues($stmt, $params, $dbMap);
     }
     $stmt->execute();
     // explain plan is save in a table, data must be commit
     $con->commit();
     $stmt = $con->prepare($this->getExplainPlanReadQuery($uniqueId));
     $stmt->execute();
     return $stmt;
 }