summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2008-11-29 09:30:36 +0000
committerDries Buytaert <dries@buytaert.net>2008-11-29 09:30:36 +0000
commit205c5b2415deb10d4afba32249e7f5f989a097b1 (patch)
treecb11740ba304151ee86922768e62d4a269e74d19
parent9b391c2e6ec9eee45a4ac701e3ee5104372b04d8 (diff)
downloadbrdo-205c5b2415deb10d4afba32249e7f5f989a097b1.tar.gz
brdo-205c5b2415deb10d4afba32249e7f5f989a097b1.tar.bz2
- Patch #337926 by hswong3i, Dave Reid, Damien Tournoud: forced connection with PDF:CASE_LOWER.
-rw-r--r--includes/database/database.inc16
-rw-r--r--includes/database/mysql/database.inc10
-rw-r--r--includes/database/pgsql/database.inc15
-rw-r--r--includes/database/sqlite/database.inc6
4 files changed, 22 insertions, 25 deletions
diff --git a/includes/database/database.inc b/includes/database/database.inc
index fc94e55e7..f05a71242 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -211,6 +211,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.
*
* @var object
@@ -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 @@ abstract class DatabaseConnection extends PDO {
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)));
}
}
diff --git a/includes/database/mysql/database.inc b/includes/database/mysql/database.inc
index 23470abc3..82c962929 100644
--- a/includes/database/mysql/database.inc
+++ b/includes/database/mysql/database.inc
@@ -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(
diff --git a/includes/database/pgsql/database.inc b/includes/database/pgsql/database.inc
index 04e403222..6fd15b2e7 100644
--- a/includes/database/pgsql/database.inc
+++ b/includes/database/pgsql/database.inc
@@ -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,
diff --git a/includes/database/sqlite/database.inc b/includes/database/sqlite/database.inc
index 7f3d521cf..2a69e131f 100644
--- a/includes/database/sqlite/database.inc
+++ b/includes/database/sqlite/database.inc
@@ -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,
));