Changeset 4951 for trunk/lib/Doctrine
- Timestamp:
- 09/12/08 18:25:38 (4 months ago)
- Location:
- trunk/lib/Doctrine
- Files:
-
- 8 added
- 6 removed
- 17 modified
-
Connection (deleted)
-
Connection.php (deleted)
-
DBAL/Connection.php (added)
-
DBAL/Driver.php (modified) (1 diff)
-
DBAL/Driver/Connection.php (added)
-
DBAL/Driver/PDOConnection.php (added)
-
DBAL/Driver/PDOMsSql/Connection.php (modified) (1 diff)
-
DBAL/Driver/PDOMsSql/Driver.php (modified) (1 diff)
-
DBAL/Driver/PDOMySql/Connection.php (deleted)
-
DBAL/Driver/PDOMySql/Driver.php (modified) (1 diff)
-
DBAL/Driver/PDOOracle/Driver.php (modified) (1 diff)
-
DBAL/Driver/PDOPgSql/Driver.php (modified) (1 diff)
-
DBAL/Driver/PDOSqlite/Driver.php (modified) (2 diffs)
-
DBAL/Driver/PDOStatement.php (added)
-
DBAL/Driver/Statement.php (added)
-
DBAL/DriverManager.php (added)
-
DBAL/Exceptions/DBALException.php (added)
-
DBAL/Platforms/AbstractPlatform.php (modified) (1 diff)
-
DBAL/Platforms/FirebirdPlatform.php (modified) (1 diff)
-
DBAL/Platforms/MsSqlPlatform.php (modified) (1 diff)
-
DBAL/Platforms/MySqlPlatform.php (modified) (1 diff)
-
DBAL/Platforms/OraclePlatform.php (modified) (1 diff)
-
DBAL/Platforms/PostgreSqlPlatform.php (modified) (1 diff)
-
DBAL/Platforms/SqlitePlatform.php (modified) (1 diff)
-
DBAL/Statement.php (deleted)
-
ORM/EntityManager.php (modified) (2 diffs)
-
ORM/UnitOfWork.php (added)
-
Query/Parser.php (modified) (1 diff)
-
Query/SqlBuilder.php (modified) (4 diffs)
-
Sequence (deleted)
-
Transaction (deleted)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/Doctrine/DBAL/Driver.php
r4910 r4951 33 33 * @return Doctrine::DBAL::SchemaManager 34 34 */ 35 public function getSchemaManager( );35 public function getSchemaManager(Doctrine_DBAL_Connection $conn); 36 36 } 37 37 -
trunk/lib/Doctrine/DBAL/Driver/PDOMsSql/Connection.php
r4910 r4951 8 8 * @since 2.0 9 9 */ 10 class Doctrine_DBAL_Driver_PDOMsSql_Connection extends PDO implements Doctrine_DBAL_ Connection10 class Doctrine_DBAL_Driver_PDOMsSql_Connection extends PDO implements Doctrine_DBAL_Driver_Connection 11 11 { 12 private $_isolationLevel = Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED;13 14 /**15 * Set the transacton isolation level.16 *17 * @param string standard isolation level (SQL-92)18 * portable modes:19 * READ UNCOMMITTED (allows dirty reads)20 * READ COMMITTED (prevents dirty reads)21 * REPEATABLE READ (prevents nonrepeatable reads)22 * SERIALIZABLE (prevents phantom reads)23 *24 * @link http://msdn2.microsoft.com/en-us/library/ms173763.aspx25 * @throws PDOException if something fails at the PDO level26 * @throws Doctrine_Transaction_Exception if using unknown isolation level or unknown wait option27 * @return void28 * @override29 */30 public function setTransactionIsolation($level, $options = array()) {31 $sql = "";32 switch ($level) {33 case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED:34 $sql = 'READ UNCOMMITTED';35 break;36 case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED:37 $sql = 'READ COMMITTED';38 break;39 case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ:40 $sql = 'REPEATABLE READ';41 break;42 case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE:43 $sql = 'SERIALIZABLE';44 break;45 default:46 throw new Doctrine_Transaction_Exception('isolation level is not supported: ' . $isolation);47 }48 49 $this->_isolationLevel = $level;50 $this->exec('SET TRANSACTION ISOLATION LEVEL ' . $sql);51 }52 53 public function getTransactionIsolation()54 {55 return $this->_isolationLevel;56 }57 58 12 /** 59 13 * Performs the rollback. -
trunk/lib/Doctrine/DBAL/Driver/PDOMsSql/Driver.php
r4910 r4951 10 10 public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 11 11 { 12 return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 12 return new Doctrine_DBAL_Driver_MsSql_Connection( 13 $this->_constructPdoDsn($params), 14 $username, 15 $password, 16 $driverOptions); 13 17 } 14 18 -
trunk/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
r4910 r4951 10 10 public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 11 11 { 12 return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 12 return new Doctrine_DBAL_Driver_PDOConnection( 13 $this->_constructPdoDsn($params), 14 $username, 15 $password, 16 $driverOptions); 13 17 } 14 18 -
trunk/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php
r4910 r4951 10 10 public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 11 11 { 12 return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 12 return new Doctrine_DBAL_Driver_PDOConnection( 13 $this->_constructPdoDsn($params), 14 $username, 15 $password, 16 $driverOptions); 13 17 } 14 18 -
trunk/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php
r4910 r4951 13 13 public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 14 14 { 15 return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 15 return new Doctrine_DBAL_Driver_PDOConnection( 16 $this->_constructPdoDsn($params), 17 $username, 18 $password, 19 $driverOptions); 16 20 } 17 21 -
trunk/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php
r4910 r4951 10 10 public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 11 11 { 12 return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 12 return new Doctrine_DBAL_Driver_PDOConnection( 13 $this->_constructPdoDsn($params), 14 $username, 15 $password, 16 $driverOptions); 13 17 } 14 18 … … 33 37 public function getDatabasePlatform() 34 38 { 35 return new Doctrine_D atabasePlatform_SqlitePlatform();39 return new Doctrine_DBAL_Platforms_SqlitePlatform(); 36 40 } 37 41 38 public function getSchemaManager(Doctrine_ Connection $conn)42 public function getSchemaManager(Doctrine_DBAL_Connection $conn) 39 43 { 40 return new Doctrine_ Schema_SqliteSchemaManager($conn);44 return new Doctrine_DBAL_Schema_SqliteSchemaManager($conn); 41 45 } 42 46 -
trunk/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php
r4910 r4951 1775 1775 } 1776 1776 1777 /** 1778 * Enter description here... 1779 * 1780 * @param unknown_type $level 1781 */ 1782 protected function _getTransactionIsolationLevelSql($level) 1783 { 1784 switch ($level) { 1785 case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 1786 return 'READ UNCOMMITTED'; 1787 case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 1788 return 'READ COMMITTED'; 1789 case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 1790 return 'REPEATABLE READ'; 1791 case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 1792 return 'SERIALIZABLE'; 1793 default: 1794 throw new Doctrine_Common_Exceptions_DoctrineException('isolation level is not supported: ' . $isolation); 1795 } 1796 } 1797 1798 /** 1799 * Enter description here... 1800 * 1801 * @param unknown_type $level 1802 */ 1803 public function getSetTransactionIsolationSql($level) 1804 { 1805 throw new Doctrine_Export_Exception('Set transaction isolation not supported by this platform.'); 1806 } 1807 1808 /** 1809 * Gets the default transaction isolation level of the platform. 1810 * 1811 * @return integer The default isolation level. 1812 * @see Doctrine::DBAL::Connection::TRANSACTION_* constants. 1813 */ 1814 public function getDefaultTransactionIsolationLevel() 1815 { 1816 return Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED; 1817 } 1818 1777 1819 1778 1820 /* supports*() metods */ -
trunk/lib/Doctrine/DBAL/Platforms/FirebirdPlatform.php
r4910 r4951 258 258 } 259 259 260 /** 261 * Enter description here... 262 * 263 * @param unknown_type $level 264 * @override 265 */ 266 protected function _getTransactionIsolationLevelSql($level) 267 { 268 switch ($level) { 269 case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 270 return 'READ COMMITTED RECORD_VERSION'; 271 case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 272 return 'READ COMMITTED NO RECORD_VERSION'; 273 case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 274 return 'SNAPSHOT'; 275 case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 276 return 'SNAPSHOT TABLE STABILITY'; 277 default: 278 return parent::_getTransactionIsolationLevelSql($level); 279 } 280 } 281 282 /** 283 * Enter description here... 284 * 285 * @param unknown_type $level 286 * @override 287 */ 288 public function getSetTransactionIsolationSql($level) 289 { 290 return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 291 } 292 260 293 } 261 294 -
trunk/lib/Doctrine/DBAL/Platforms/MsSqlPlatform.php
r4910 r4951 312 312 } 313 313 314 /** 315 * Enter description here... 316 * 317 * @param unknown_type $level 318 * @override 319 */ 320 public function getSetTransactionIsolationSql($level) 321 { 322 return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 323 } 324 314 325 } 315 326 -
trunk/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
r4910 r4951 1235 1235 return 'DROP TABLE ' . $table; 1236 1236 } 1237 1238 /** 1239 * Enter description here... 1240 * 1241 * @param unknown_type $level 1242 * @override 1243 */ 1244 public function getSetTransactionIsolationSql($level) 1245 { 1246 return 'SET SESSION TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 1247 } 1237 1248 } 1238 1249 -
trunk/lib/Doctrine/DBAL/Platforms/OraclePlatform.php
r4910 r4951 345 345 return 'SELECT ' . $this->quoteIdentifier($sequenceName) . '.nextval FROM DUAL'; 346 346 } 347 348 /** 349 * Enter description here... 350 * 351 * @param unknown_type $level 352 * @override 353 */ 354 public function getSetTransactionIsolationSql($level) 355 { 356 return 'ALTER SESSION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 357 } 358 359 /** 360 * Enter description here... 361 * 362 * @param unknown_type $level 363 * @override 364 */ 365 protected function _getTransactionIsolationLevelSql($level) 366 { 367 switch ($level) { 368 case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 369 return 'READ COMMITTED'; 370 case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 371 case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 372 case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 373 return 'SERIALIZABLE'; 374 default: 375 return parent::_getTransactionIsolationLevelSql($level); 376 } 377 } 347 378 } 348 379 -
trunk/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php
r4910 r4951 990 990 return "SELECT NEXTVAL('" . $sequenceName . "')"; 991 991 } 992 993 /** 994 * Enter description here... 995 * 996 * @param unknown_type $level 997 * @override 998 */ 999 public function getSetTransactionIsolationSql($level) 1000 { 1001 return 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' 1002 . $this->_getTransactionIsolationLevelSql($level); 1003 } 992 1004 } 993 1005 -
trunk/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php
r4910 r4951 361 361 'fixed' => $fixed); 362 362 } 363 364 /** 365 * Enter description here... 366 * 367 * @param unknown_type $level 368 * @override 369 */ 370 protected function _getTransactionIsolationLevelSql($level) 371 { 372 switch ($level) { 373 case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 374 return 0; 375 case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 376 case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 377 case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 378 return 1; 379 default: 380 return parent::_getTransactionIsolationLevelSql($level); 381 } 382 } 383 384 /** 385 * Enter description here... 386 * 387 * @param unknown_type $level 388 * @override 389 */ 390 public function getSetTransactionIsolationSql($level) 391 { 392 return 'PRAGMA read_uncommitted = ' . $this->_getTransactionIsolationLevelSql($level); 393 } 363 394 } 364 395 -
trunk/lib/Doctrine/ORM/EntityManager.php
r4947 r4951 149 149 * @param string $name 150 150 */ 151 protected function __construct(Doctrine_ Connection $conn, $name, Doctrine_Common_Configuration $config,151 protected function __construct(Doctrine_DBAL_Connection $conn, $name, Doctrine_Common_Configuration $config, 152 152 Doctrine_Common_EventManager $eventManager) 153 153 { … … 158 158 $this->_metadataFactory = new Doctrine_ClassMetadata_Factory( 159 159 $this, new Doctrine_ClassMetadata_CodeDriver()); 160 $this->_unitOfWork = new Doctrine_ Connection_UnitOfWork($this);160 $this->_unitOfWork = new Doctrine_ORM_UnitOfWork($this); 161 161 $this->_nullObject = Doctrine_ORM_Internal_Null::$INSTANCE; 162 162 } -
trunk/lib/Doctrine/Query/Parser.php
r4909 r4951 131 131 $this->_input = $query->getDql(); 132 132 $this->_scanner = new Doctrine_Query_Scanner($this->_input); 133 $this->_sqlBuilder = Doctrine_Query_SqlBuilder::fromConnection($this->_em);133 $this->_sqlBuilder = new Doctrine_Query_SqlBuilder($this->_em); 134 134 $this->_keywordTable = new Doctrine_Query_Token(); 135 135 -
trunk/lib/Doctrine/Query/SqlBuilder.php
r4947 r4951 22 22 23 23 /** 24 * Base class of each Sql Builder object 24 * The SqlBuilder. Creates SQL out of an AST. 25 * 26 * INTERNAL: For platform-specific SQL, the platform of the connection should be used. 27 * ($this->_connection->getDatabasePlatform()) 25 28 * 26 29 * @package Doctrine … … 33 36 * @version $Revision$ 34 37 */ 35 abstractclass Doctrine_Query_SqlBuilder38 class Doctrine_Query_SqlBuilder 36 39 { 37 /** 38 * The Connection object. 39 * 40 * @var Doctrine_Connection 41 */ 42 protected $_connection; 40 protected $_em; 41 protected $_conn; 43 42 44 45 public static function fromConnection(Doctrine_ORM_EntityManager $entityManager) 43 public function __construct(Doctrine_ORM_EntityManager $em) 46 44 { 47 $connection = $entityManager->getConnection(); 48 49 $className = "Doctrine_Query_SqlBuilder_" . $connection->getDriverName(); 50 $sqlBuilder = new $className(); 51 $sqlBuilder->_connection = $connection; 52 53 return $sqlBuilder; 45 $this->_em = $em; 46 $this->_conn = $this->_em->getConnection(); 54 47 } 55 56 48 57 49 /** … … 65 57 } 66 58 67 68 59 /** 69 60 * @nodoc … … 71 62 public function quoteIdentifier($identifier) 72 63 { 73 return $this->_conn ection->quoteIdentifier($identifier);64 return $this->_conn->quoteIdentifier($identifier); 74 65 } 75 76 77 78 // Start Common SQL generations79 // Here we follow the SQL-99 specifications available at:80 // http://savage.net.au/SQL/sql-99.bnf81 82 83 84 // End of Common SQL generations85 66 86 67 }