Commit 205c5b24 authored by Dries's avatar Dries

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

parent 9b391c2e
......@@ -210,6 +210,13 @@ abstract class DatabaseConnection extends PDO {
*/
protected $transactionClass = NULL;
/**
* The name of the Statement class for this connection.
*
* @var string
*/
protected $statementClass = NULL;
/**
* The schema object for this connection.
*
......@@ -219,8 +226,9 @@ abstract class DatabaseConnection extends PDO {
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 @@ function __construct($dsn, $username, $password, $driver_options = array()) {
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)));
}
}
......
......@@ -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(
......
......@@ -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,
......
......@@ -27,11 +27,11 @@ class DatabaseConnection_sqlite extends DatabaseConnection {
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,
));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment