- Patch #337926 by hswong3i, Dave Reid, Damien Tournoud: forced connection with PDF:CASE_LOWER.
parent
9b391c2e6e
commit
205c5b2415
|
@ -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)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
));
|
));
|
||||||
|
|
Loading…
Reference in New Issue