? profiles/simpletest ? sites/default/modules ? sites/default/settings.php Index: includes/database/database.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database/database.inc,v retrieving revision 1.29 diff -u -p -r1.29 database.inc --- includes/database/database.inc 22 Nov 2008 13:51:38 -0000 1.29 +++ includes/database/database.inc 29 Nov 2008 08:41:08 -0000 @@ -211,6 +211,13 @@ abstract class DatabaseConnection extend protected $transactionClass = NULL; /** + * The name of the Statement class for this connection. + * + * @var string + */ + protected $statementClass = NULL; + + /** * The schema object for this connection. * * @var object @@ -219,8 +226,9 @@ abstract class DatabaseConnection extend function __construct($dsn, $username, $password, $driver_options = array()) { // Fallback to DatabaseStatementBase if the driver has not specified one. - $statement_class = isset($driver_options['statement_class']) ? $driver_options['statement_class'] : 'DatabaseStatementBase'; - unset($driver_options['statement_class']); + if (empty($this->statementClass)) { + $this->statementClass = 'DatabaseStatementBase'; + } // Because the other methods don't seem to work right. $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; @@ -229,8 +237,8 @@ abstract class DatabaseConnection extend parent::__construct($dsn, $username, $password, $driver_options); // Set a specific PDOStatement class if the driver requires that. - if (!empty($statement_class)) { - $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($statement_class, array($this))); + if ($this->statementClass != 'PDOStatement') { + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->statementClass, array($this))); } } Index: includes/database/mysql/database.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database/mysql/database.inc,v retrieving revision 1.8 diff -u -p -r1.8 database.inc --- includes/database/mysql/database.inc 28 Nov 2008 09:27:57 -0000 1.8 +++ includes/database/mysql/database.inc 29 Nov 2008 08:41:08 -0000 @@ -13,15 +13,11 @@ class DatabaseConnection_mysql extends DatabaseConnection { - protected $transactionSupport; + protected $transactionSupport = FALSE; public function __construct(Array $connection_options = array()) { - - $connection_options += array( - 'transactions' => FALSE, - 'port' => 3306, - ); - $this->transactionSupport = $connection_options['transactions']; + $this->transactionSupport = isset($connection_options['transactions']) ? $connection_options['transactions'] : FALSE; + $connection_options['port'] = !empty($connection_options['port']) ? $connection_options['port'] : 3306; $dsn = 'mysql:host=' . $connection_options['host'] . ';port=' . $connection_options['port'] . ';dbname=' . $connection_options['database']; parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array( Index: includes/database/pgsql/database.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database/pgsql/database.inc,v retrieving revision 1.10 diff -u -p -r1.10 database.inc --- includes/database/pgsql/database.inc 28 Nov 2008 09:27:58 -0000 1.10 +++ includes/database/pgsql/database.inc 29 Nov 2008 08:41:08 -0000 @@ -13,20 +13,13 @@ class DatabaseConnection_pgsql extends DatabaseConnection { - protected $transactionSupport; + protected $transactionSupport = TRUE; public function __construct(Array $connection_options = array()) { + $this->transactionSupport = isset($connection_options['transactions']) ? $connection_options['transactions'] : TRUE; + $connection_options['port'] = !empty($connection_options['port']) ? $connection_options['port'] : 5432; - $connection_options += array( - 'transactions' => TRUE, - ); - $this->transactionSupport = $connection_options['transactions']; - - $dsn = 'pgsql:host=' . $connection_options['host'] . ' dbname=' . $connection_options['database']; - if (!empty($connection_options['port'])) { - $dsn .= ' port=' . $connection_options['port']; - } - + $dsn = 'pgsql:host=' . $connection_options['host'] . ' dbname=' . $connection_options['database'] . ' port=' . $connection_options['port']; parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array( // Convert numeric values to strings when fetching. PDO::ATTR_STRINGIFY_FETCHES => TRUE, Index: includes/database/sqlite/database.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database/sqlite/database.inc,v retrieving revision 1.2 diff -u -p -r1.2 database.inc --- includes/database/sqlite/database.inc 28 Nov 2008 09:27:58 -0000 1.2 +++ includes/database/sqlite/database.inc 29 Nov 2008 08:41:08 -0000 @@ -27,11 +27,11 @@ class DatabaseConnection_sqlite extends public function __construct(Array $connection_options = array()) { // We don't need a specific PDOStatement class here, we simulate it below. - $connection_options['statement_class'] = FALSE; - + $this->statementClass = 'PDOStatement'; $this->transactionSupport = isset($connection_options['transactions']) ? $connection_options['transactions'] : TRUE; - parent::__construct('sqlite:'. $connection_options['database'], '', '', array( + $dns = 'sqlite:'. $connection_options['database']; + parent::__construct($dns, '', '', array( // Force column names to lower case. PDO::ATTR_CASE => PDO::CASE_LOWER, ));