. */ Doctrine::autoload("Doctrine_Connection_Common"); /** * Doctrine_Connection_Pgsql * * @package Doctrine ORM * @url www.phpdoctrine.com * @license LGPL */ class Doctrine_Connection_Pgsql extends Doctrine_Connection_Common { /** * returns the next value in the given sequence * @param string $sequence * @return integer */ public function getNextID($sequence) { $stmt = $this->query("SELECT NEXTVAL('$sequence')"); $data = $stmt->fetch(PDO::FETCH_NUM); return $data[0]; } /** * Set the transacton isolation level. * * @param string standard isolation level * READ UNCOMMITTED (allows dirty reads) * READ COMMITTED (prevents dirty reads) * REPEATABLE READ (prevents nonrepeatable reads) * SERIALIZABLE (prevents phantom reads) * @return void */ function setTransactionIsolation($isolation) { switch ($isolation) { case 'READ UNCOMMITTED': case 'READ COMMITTED': case 'REPEATABLE READ': case 'SERIALIZABLE': break; throw new Doctrine_Connection_Pgsql_Exception('Isolation level '.$isolation.' is not supported.'); } $query = 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' . $isolation; return $this->dbh->query($query); } /** * getRegexpOperator * * @return string the regular expression operator */ public function getRegexpOperator() { return 'SIMILAR TO'; } /** * return string to call a function to get random value inside an SQL statement * * @return return string to generate float between 0 and 1 * @access public */ public function random() { return 'RANDOM()'; } }