- Patch #337926 by hswong3i, Dave Reid, Damien Tournoud: forced connection with PDF:CASE_LOWER.

merge-requests/26/head
Dries Buytaert 2008-11-29 09:30:36 +00:00
parent 9b391c2e6e
commit 205c5b2415
4 changed files with 22 additions and 25 deletions

View File

@ -210,6 +210,13 @@ abstract class DatabaseConnection extends PDO {
*/ */
protected $transactionClass = NULL; protected $transactionClass = NULL;
/**
* The name of the Statement class for this connection.
*
* @var string
*/
protected $statementClass = NULL;
/** /**
* The schema object for this connection. * The schema object for this connection.
* *
@ -219,8 +226,9 @@ abstract class DatabaseConnection extends PDO {
function __construct($dsn, $username, $password, $driver_options = array()) { function __construct($dsn, $username, $password, $driver_options = array()) {
// Fallback to DatabaseStatementBase if the driver has not specified one. // Fallback to DatabaseStatementBase if the driver has not specified one.
$statement_class = isset($driver_options['statement_class']) ? $driver_options['statement_class'] : 'DatabaseStatementBase'; if (empty($this->statementClass)) {
unset($driver_options['statement_class']); $this->statementClass = 'DatabaseStatementBase';
}
// Because the other methods don't seem to work right. // Because the other methods don't seem to work right.
$driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
@ -229,8 +237,8 @@ abstract class DatabaseConnection extends PDO {
parent::__construct($dsn, $username, $password, $driver_options); parent::__construct($dsn, $username, $password, $driver_options);
// Set a specific PDOStatement class if the driver requires that. // Set a specific PDOStatement class if the driver requires that.
if (!empty($statement_class)) { if ($this->statementClass != 'PDOStatement') {
$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($statement_class, array($this))); $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->statementClass, array($this)));
} }
} }

View File

@ -13,15 +13,11 @@
class DatabaseConnection_mysql extends DatabaseConnection { class DatabaseConnection_mysql extends DatabaseConnection {
protected $transactionSupport; protected $transactionSupport = FALSE;
public function __construct(Array $connection_options = array()) { public function __construct(Array $connection_options = array()) {
$this->transactionSupport = isset($connection_options['transactions']) ? $connection_options['transactions'] : FALSE;
$connection_options += array( $connection_options['port'] = !empty($connection_options['port']) ? $connection_options['port'] : 3306;
'transactions' => FALSE,
'port' => 3306,
);
$this->transactionSupport = $connection_options['transactions'];
$dsn = 'mysql:host=' . $connection_options['host'] . ';port=' . $connection_options['port'] . ';dbname=' . $connection_options['database']; $dsn = 'mysql:host=' . $connection_options['host'] . ';port=' . $connection_options['port'] . ';dbname=' . $connection_options['database'];
parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array( parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array(

View File

@ -13,20 +13,13 @@
class DatabaseConnection_pgsql extends DatabaseConnection { class DatabaseConnection_pgsql extends DatabaseConnection {
protected $transactionSupport; protected $transactionSupport = TRUE;
public function __construct(Array $connection_options = array()) { 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( $dsn = 'pgsql:host=' . $connection_options['host'] . ' dbname=' . $connection_options['database'] . ' port=' . $connection_options['port'];
'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'];
}
parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array( parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array(
// Convert numeric values to strings when fetching. // Convert numeric values to strings when fetching.
PDO::ATTR_STRINGIFY_FETCHES => TRUE, PDO::ATTR_STRINGIFY_FETCHES => TRUE,

View File

@ -27,11 +27,11 @@ class DatabaseConnection_sqlite extends DatabaseConnection {
public function __construct(Array $connection_options = array()) { public function __construct(Array $connection_options = array()) {
// We don't need a specific PDOStatement class here, we simulate it below. // 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; $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. // Force column names to lower case.
PDO::ATTR_CASE => PDO::CASE_LOWER, PDO::ATTR_CASE => PDO::CASE_LOWER,
)); ));