summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-03-07 08:03:45 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-03-07 08:03:45 +0000
commit9703e5d6e24fb8df2778c5d687128f90079aa023 (patch)
treed5b65057e4b50950991e688eab820de5f31003a0 /includes
parentc4ed4523bf7974355f72abd6218e86e7bed398a6 (diff)
downloadbrdo-9703e5d6e24fb8df2778c5d687128f90079aa023.tar.gz
brdo-9703e5d6e24fb8df2778c5d687128f90079aa023.tar.bz2
#715476 by Jeremy and Crell: Schema object should respect active database connection (with tests).
Diffstat (limited to 'includes')
-rw-r--r--includes/database/database.inc23
-rw-r--r--includes/database/mysql/database.inc2
-rw-r--r--includes/database/mysql/schema.inc4
-rw-r--r--includes/database/pgsql/database.inc2
-rw-r--r--includes/database/schema.inc4
-rw-r--r--includes/database/sqlite/database.inc2
6 files changed, 33 insertions, 4 deletions
diff --git a/includes/database/database.inc b/includes/database/database.inc
index e11129136..b988c83eb 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -309,6 +309,13 @@ abstract class DatabaseConnection extends PDO {
protected $temporaryNameIndex = 0;
/**
+ * The connection information for this connection object.
+ *
+ * @var array
+ */
+ protected $connectionOptions = array();
+
+ /**
* The schema object for this connection.
*
* @var object
@@ -391,6 +398,22 @@ abstract class DatabaseConnection extends PDO {
}
/**
+ * Return the connection information for this connection object.
+ *
+ * Note that Database::getConnectionInfo() is for requesting information
+ * about an arbitrary database connection that is defined. This method
+ * is for requesting the connection information of this specific
+ * open connection object.
+ *
+ * @return
+ * An array of the connection information. The exact list of
+ * properties is driver-dependent.
+ */
+ public function getConnectionOptions() {
+ return $this->connectionOptions;
+ }
+
+ /**
* Append a database prefix to all tables in a query.
*
* Queries sent to Drupal should wrap all table names in curly brackets. This
diff --git a/includes/database/mysql/database.inc b/includes/database/mysql/database.inc
index 46acb4dda..249db5234 100644
--- a/includes/database/mysql/database.inc
+++ b/includes/database/mysql/database.inc
@@ -25,6 +25,8 @@ class DatabaseConnection_mysql extends DatabaseConnection {
$connection_options['port'] = 3306;
}
+ $this->connectionOptions = $connection_options;
+
$dsn = 'mysql:host=' . $connection_options['host'] . ';port=' . $connection_options['port'] . ';dbname=' . $connection_options['database'];
parent::__construct($dsn, $connection_options['username'], $connection_options['password'], array(
// So we don't have to mess around with cursors and unbuffered queries by default.
diff --git a/includes/database/mysql/schema.inc b/includes/database/mysql/schema.inc
index ee2b3d373..0d3166f48 100644
--- a/includes/database/mysql/schema.inc
+++ b/includes/database/mysql/schema.inc
@@ -33,13 +33,13 @@ class DatabaseSchema_mysql extends DatabaseSchema {
* from the condition criteria.
*/
protected function buildTableNameCondition($table_name, $operator = '=') {
- $info = Database::getConnectionInfo();
+ $info = $this->connection->getConnectionOptions();
if (strpos($table_name, '.')) {
list($schema, $table_name) = explode('.', $table_name);
}
else {
- $schema = $info['default']['database'];
+ $schema = $info['database'];
}
$condition = new DatabaseCondition('AND');
diff --git a/includes/database/pgsql/database.inc b/includes/database/pgsql/database.inc
index f76fd95ee..f3ed30b57 100644
--- a/includes/database/pgsql/database.inc
+++ b/includes/database/pgsql/database.inc
@@ -36,6 +36,8 @@ class DatabaseConnection_pgsql extends DatabaseConnection {
$connection_options['password'] = null;
}
+ $this->connectionOptions = $connection_options;
+
$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.
diff --git a/includes/database/schema.inc b/includes/database/schema.inc
index b488af2cb..4cc45b59b 100644
--- a/includes/database/schema.inc
+++ b/includes/database/schema.inc
@@ -187,7 +187,7 @@ abstract class DatabaseSchema implements QueryPlaceholderInterface {
* A DatabaseCondition object.
*/
protected function buildTableNameCondition($table_name, $operator = '=') {
- $info = Database::getConnectionInfo();
+ $info = $this->connection->getConnectionOptions();
// The table name may describe the schema eg. schema.table.
if (strpos($table_name, '.')) {
@@ -198,7 +198,7 @@ abstract class DatabaseSchema implements QueryPlaceholderInterface {
}
$condition = new DatabaseCondition('AND');
- $condition->condition('table_catalog', $info['default']['database']);
+ $condition->condition('table_catalog', $info['database']);
$condition->condition('table_schema', $schema);
$condition->condition('table_name', $table_name, $operator);
return $condition;
diff --git a/includes/database/sqlite/database.inc b/includes/database/sqlite/database.inc
index dbfb4ef95..f3cb77a70 100644
--- a/includes/database/sqlite/database.inc
+++ b/includes/database/sqlite/database.inc
@@ -25,6 +25,8 @@ class DatabaseConnection_sqlite extends DatabaseConnection {
// This driver defaults to transaction support, except if explicitly passed FALSE.
$this->transactionSupport = !isset($connection_options['transactions']) || $connection_options['transactions'] !== FALSE;
+ $this->connectionOptions = $connection_options;
+
parent::__construct('sqlite:' . $connection_options['database'], '', '', array(
// Force column names to lower case.
PDO::ATTR_CASE => PDO::CASE_LOWER,