Issue #1894396 by Mile23, Crell, catch: Mark db_*() wrappers in database.inc as @deprecated for 9.x

8.0.x
Alex Pott 2015-07-28 15:48:37 +01:00
parent 0ba8bfe616
commit 43d4637f2f
1 changed files with 338 additions and 62 deletions

View File

@ -1,9 +1,5 @@
<?php <?php
use Drupal\Core\Database\Database;
use Drupal\Core\Database\Query\Condition;
use Drupal\Core\Site\Settings;
/** /**
* @file * @file
* Core systems for the database layer. * Core systems for the database layer.
@ -13,6 +9,10 @@ use Drupal\Core\Site\Settings;
* file only, as they cannot auto-load the way classes can. * file only, as they cannot auto-load the way classes can.
*/ */
use Drupal\Core\Database\Database;
use Drupal\Core\Database\Query\Condition;
use Drupal\Core\Site\Settings;
/** /**
* @addtogroup database * @addtogroup database
* @{ * @{
@ -28,23 +28,29 @@ use Drupal\Core\Site\Settings;
* Do not use this function for INSERT, UPDATE, or DELETE queries. Those should * Do not use this function for INSERT, UPDATE, or DELETE queries. Those should
* be handled via db_insert(), db_update() and db_delete() respectively. * be handled via db_insert(), db_update() and db_delete() respectively.
* *
* @param $query * @param string|\Drupal\Core\Database\StatementInterface $query
* The prepared statement query to run. Although it will accept both named and * The prepared statement query to run. Although it will accept both named and
* unnamed placeholders, named placeholders are strongly preferred as they are * unnamed placeholders, named placeholders are strongly preferred as they are
* more self-documenting. If the argument corresponding to a placeholder is * more self-documenting. If the argument corresponding to a placeholder is
* an array of values to be expanded, e.g. for an IN query, the placeholder * an array of values to be expanded, e.g. for an IN query, the placeholder
* should be named with a trailing bracket like :example[] * should be named with a trailing bracket like :example[]
* @param $args * @param array $args
* An array of values to substitute into the query. If the query uses named * An array of values to substitute into the query. If the query uses named
* placeholders, this is an associative array in any order. If the query uses * placeholders, this is an associative array in any order. If the query uses
* unnamed placeholders (?), this is an indexed array and the order must match * unnamed placeholders (?), this is an indexed array and the order must match
* the order of placeholders in the query string. * the order of placeholders in the query string.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\StatementInterface * @return \Drupal\Core\Database\StatementInterface
* A prepared statement object, already executed. * A prepared statement object, already executed.
* *
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call query() on it. E.g.
* $injected_database->query($query, $args, $options);
*
* @see \Drupal\Core\Database\Connection::query()
* @see \Drupal\Core\Database\Connection::defaultOptions() * @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_query($query, array $args = array(), array $options = array()) { function db_query($query, array $args = array(), array $options = array()) {
@ -58,7 +64,7 @@ function db_query($query, array $args = array(), array $options = array()) {
/** /**
* Executes a query against the active database, restricted to a range. * Executes a query against the active database, restricted to a range.
* *
* @param $query * @param string $query
* The prepared statement query to run. Although it will accept both named and * The prepared statement query to run. Although it will accept both named and
* unnamed placeholders, named placeholders are strongly preferred as they are * unnamed placeholders, named placeholders are strongly preferred as they are
* more self-documenting. * more self-documenting.
@ -66,17 +72,23 @@ function db_query($query, array $args = array(), array $options = array()) {
* The first record from the result set to return. * The first record from the result set to return.
* @param $count * @param $count
* The number of records to return from the result set. * The number of records to return from the result set.
* @param $args * @param array $args
* An array of values to substitute into the query. If the query uses named * An array of values to substitute into the query. If the query uses named
* placeholders, this is an associative array in any order. If the query uses * placeholders, this is an associative array in any order. If the query uses
* unnamed placeholders (?), this is an indexed array and the order must match * unnamed placeholders (?), this is an indexed array and the order must match
* the order of placeholders in the query string. * the order of placeholders in the query string.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\StatementInterface * @return \Drupal\Core\Database\StatementInterface
* A prepared statement object, already executed. * A prepared statement object, already executed.
* *
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call queryRange() on it. E.g.
* $injected_database->queryRange($query, $from, $count, $args, $options);
*
* @see \Drupal\Core\Database\Connection::queryRange()
* @see \Drupal\Core\Database\Connection::defaultOptions() * @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_query_range($query, $from, $count, array $args = array(), array $options = array()) { function db_query_range($query, $from, $count, array $args = array(), array $options = array()) {
@ -92,21 +104,27 @@ function db_query_range($query, $from, $count, array $args = array(), array $opt
* *
* The execution of the query string happens against the active database. * The execution of the query string happens against the active database.
* *
* @param $query * @param string $query
* The prepared SELECT statement query to run. Although it will accept both * The prepared SELECT statement query to run. Although it will accept both
* named and unnamed placeholders, named placeholders are strongly preferred * named and unnamed placeholders, named placeholders are strongly preferred
* as they are more self-documenting. * as they are more self-documenting.
* @param $args * @param array $args
* An array of values to substitute into the query. If the query uses named * An array of values to substitute into the query. If the query uses named
* placeholders, this is an associative array in any order. If the query uses * placeholders, this is an associative array in any order. If the query uses
* unnamed placeholders (?), this is an indexed array and the order must match * unnamed placeholders (?), this is an indexed array and the order must match
* the order of placeholders in the query string. * the order of placeholders in the query string.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return * @return
* The name of the temporary table. * The name of the temporary table.
* *
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call queryTemporary() on it. E.g.
* $injected_database->queryTemporary($query, $args, $options);
*
* @see \Drupal\Core\Database\Connection::queryTemporary()
* @see \Drupal\Core\Database\Connection::defaultOptions() * @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_query_temporary($query, array $args = array(), array $options = array()) { function db_query_temporary($query, array $args = array(), array $options = array()) {
@ -120,13 +138,20 @@ function db_query_temporary($query, array $args = array(), array $options = arra
/** /**
* Returns a new InsertQuery object for the active database. * Returns a new InsertQuery object for the active database.
* *
* @param $table * @param string $table
* The table into which to insert. * The table into which to insert.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\Query\Insert * @return \Drupal\Core\Database\Query\Insert
* A new Insert object for this connection. * A new Insert object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call insert() on it. E.g. $injected_database->insert($table, $options);
*
* @see \Drupal\Core\Database\Connection::insert()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_insert($table, array $options = array()) { function db_insert($table, array $options = array()) {
if (empty($options['target']) || $options['target'] == 'replica') { if (empty($options['target']) || $options['target'] == 'replica') {
@ -138,13 +163,20 @@ function db_insert($table, array $options = array()) {
/** /**
* Returns a new MergeQuery object for the active database. * Returns a new MergeQuery object for the active database.
* *
* @param $table * @param string $table
* The table into which to merge. * Name of the table to associate with this query.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\Query\Merge * @return \Drupal\Core\Database\Query\Merge
* A new Merge object for this connection. * A new Merge object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call merge() on it. E.g. $injected_database->merge($table, $options);
*
* @see \Drupal\Core\Database\Connection::merge()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_merge($table, array $options = array()) { function db_merge($table, array $options = array()) {
if (empty($options['target']) || $options['target'] == 'replica') { if (empty($options['target']) || $options['target'] == 'replica') {
@ -156,13 +188,20 @@ function db_merge($table, array $options = array()) {
/** /**
* Returns a new UpdateQuery object for the active database. * Returns a new UpdateQuery object for the active database.
* *
* @param $table * @param string $table
* The table to update. * The table to update.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\Query\Update * @return \Drupal\Core\Database\Query\Update
* A new Update object for this connection. * A new Update object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call update() on it. E.g. $injected_database->update($table, $options);
*
* @see \Drupal\Core\Database\Connection::update()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_update($table, array $options = array()) { function db_update($table, array $options = array()) {
if (empty($options['target']) || $options['target'] == 'replica') { if (empty($options['target']) || $options['target'] == 'replica') {
@ -174,13 +213,20 @@ function db_update($table, array $options = array()) {
/** /**
* Returns a new DeleteQuery object for the active database. * Returns a new DeleteQuery object for the active database.
* *
* @param $table * @param string $table
* The table from which to delete. * The table from which to delete.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\Query\Delete * @return \Drupal\Core\Database\Query\Delete
* A new Delete object for this connection. * A new Delete object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call delete() on it. E.g. $injected_database->delete($table, $options);
*
* @see \Drupal\Core\Database\Connection::delete()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_delete($table, array $options = array()) { function db_delete($table, array $options = array()) {
if (empty($options['target']) || $options['target'] == 'replica') { if (empty($options['target']) || $options['target'] == 'replica') {
@ -192,13 +238,20 @@ function db_delete($table, array $options = array()) {
/** /**
* Returns a new TruncateQuery object for the active database. * Returns a new TruncateQuery object for the active database.
* *
* @param $table * @param string $table
* The table from which to delete. * The table from which to truncate.
* @param $options * @param array $options
* An array of options to control how the query operates. * An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\Query\Truncate * @return \Drupal\Core\Database\Query\Truncate
* A new Truncate object for this connection. * A new Truncate object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call truncate() on it. E.g. $injected_database->truncate($table, $options);
*
* @see \Drupal\Core\Database\Connection::truncate()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_truncate($table, array $options = array()) { function db_truncate($table, array $options = array()) {
if (empty($options['target']) || $options['target'] == 'replica') { if (empty($options['target']) || $options['target'] == 'replica') {
@ -210,16 +263,25 @@ function db_truncate($table, array $options = array()) {
/** /**
* Returns a new SelectQuery object for the active database. * Returns a new SelectQuery object for the active database.
* *
* @param $table * @param string|\Drupal\Core\Database\Query\SelectInterface $table
* The base table for this query. May be a string or another SelectQuery * The base table for this query. May be a string or another SelectInterface
* object. If a query object is passed, it will be used as a subselect. * object. If a SelectInterface object is passed, it will be used as a
* @param $alias * subselect.
* @param string $alias
* (optional) The alias for the base table of this query. * (optional) The alias for the base table of this query.
* @param $options * @param array $options
* (optional) An array of options to control how the query operates. * (optional) An array of options to control how the query operates.
* *
* @return \Drupal\Core\Database\Query\Select * @return \Drupal\Core\Database\Query\Select
* A new Select object for this connection. * A new Select object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call select() on it. E.g.
* $injected_database->select($table, $alias, $options);
*
* @see \Drupal\Core\Database\Connection::select()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_select($table, $alias = NULL, array $options = array()) { function db_select($table, $alias = NULL, array $options = array()) {
if (empty($options['target'])) { if (empty($options['target'])) {
@ -239,6 +301,14 @@ function db_select($table, $alias = NULL, array $options = array()) {
* *
* @return \Drupal\Core\Database\Transaction * @return \Drupal\Core\Database\Transaction
* A new Transaction object for this connection. * A new Transaction object for this connection.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call startTransaction() on it. E.g.
* $injected_database->startTransaction($name);
*
* @see \Drupal\Core\Database\Connection::startTransaction()
* @see \Drupal\Core\Database\Connection::defaultOptions()
*/ */
function db_transaction($name = NULL, array $options = array()) { function db_transaction($name = NULL, array $options = array()) {
if (empty($options['target'])) { if (empty($options['target'])) {
@ -253,8 +323,11 @@ function db_transaction($name = NULL, array $options = array()) {
* @param $key * @param $key
* The key in the $databases array to set as the default database. * The key in the $databases array to set as the default database.
* *
* @return * @return string|null
* The key of the formerly active database. * The key of the formerly active database.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Use
* \Drupal\Core\Database\Database::setActiveConnection().
*/ */
function db_set_active($key = 'default') { function db_set_active($key = 'default') {
return Database::setActiveConnection($key); return Database::setActiveConnection($key);
@ -268,8 +341,14 @@ function db_set_active($key = 'default') {
* @param $table * @param $table
* The table name to escape. * The table name to escape.
* *
* @return * @return string
* The escaped table name as a string. * The escaped table name as a string.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call escapeTable() on it. E.g. $injected_database->escapeTable($table);
*
* @see \Drupal\Core\Database\Connection::escapeTable()
*/ */
function db_escape_table($table) { function db_escape_table($table) {
return Database::getConnection()->escapeTable($table); return Database::getConnection()->escapeTable($table);
@ -280,11 +359,17 @@ function db_escape_table($table) {
* *
* Only keeps alphanumeric and underscores. * Only keeps alphanumeric and underscores.
* *
* @param $field * @param string $field
* The field name to escape. * The field name to escape.
* *
* @return * @return string
* The escaped field name as a string. * The escaped field name as a string.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call escapeTable() on it. E.g. $injected_database->escapeTable($table);
*
* @see \Drupal\Core\Database\Connection::escapeField()
*/ */
function db_escape_field($field) { function db_escape_field($field) {
return Database::getConnection()->escapeField($field); return Database::getConnection()->escapeField($field);
@ -314,11 +399,17 @@ function db_escape_field($field) {
* Backslash is defined as escape character for LIKE patterns in * Backslash is defined as escape character for LIKE patterns in
* DatabaseCondition::mapConditionOperator(). * DatabaseCondition::mapConditionOperator().
* *
* @param $string * @param string $string
* The string to escape. * The string to escape.
* *
* @return * @return string
* The escaped string. * The escaped string.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call escapeLike() on it. E.g. $injected_database->escapeLike($string);
*
* @see \Drupal\Core\Database\Connection::escapeLike()
*/ */
function db_like($string) { function db_like($string) {
return Database::getConnection()->escapeLike($string); return Database::getConnection()->escapeLike($string);
@ -327,8 +418,14 @@ function db_like($string) {
/** /**
* Retrieves the name of the currently active database driver. * Retrieves the name of the currently active database driver.
* *
* @return * @return string
* The name of the currently active database driver. * The name of the currently active database driver.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call driver() on it. E.g. $injected_database->driver($string);
*
* @see \Drupal\Core\Database\Connection::driver()
*/ */
function db_driver() { function db_driver() {
return Database::getConnection()->driver(); return Database::getConnection()->driver();
@ -337,9 +434,14 @@ function db_driver() {
/** /**
* Closes the active database connection. * Closes the active database connection.
* *
* @param $options * @param array $options
* An array of options to control which connection is closed. Only the target * An array of options to control which connection is closed. Only the target
* key has any meaning in this case. * key has any meaning in this case.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Use
* \Drupal\Core\Database\Database::closeConnection($target).
*
* @see \Drupal\Core\Database\Database::closeConnection()
*/ */
function db_close(array $options = array()) { function db_close(array $options = array()) {
if (empty($options['target'])) { if (empty($options['target'])) {
@ -355,13 +457,19 @@ function db_close(array $options = array()) {
* serial field is preferred, and InsertQuery::execute() returns the value of * serial field is preferred, and InsertQuery::execute() returns the value of
* the last ID inserted. * the last ID inserted.
* *
* @param $existing_id * @param int $existing_id
* After a database import, it might be that the sequences table is behind, so * After a database import, it might be that the sequences table is behind, so
* by passing in a minimum ID, it can be assured that we never issue the same * by passing in a minimum ID, it can be assured that we never issue the same
* ID. * ID.
* *
* @return * @return int
* An integer number larger than any number returned before for this sequence. * An integer number larger than any number returned before for this sequence.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container and
* call nextId() on it. E.g. $injected_database->nextId($existing_id);
*
* @see \Drupal\Core\Database\Connection::nextId()
*/ */
function db_next_id($existing_id = 0) { function db_next_id($existing_id = 0) {
return Database::getConnection()->nextId($existing_id); return Database::getConnection()->nextId($existing_id);
@ -372,6 +480,12 @@ function db_next_id($existing_id = 0) {
* *
* @return \Drupal\Core\Database\Query\Condition * @return \Drupal\Core\Database\Query\Condition
* A new Condition object, set to "OR" all conditions together. * A new Condition object, set to "OR" all conditions together.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Create
* a \Drupal\Core\Database\Query\Condition object, specifying an OR
* conjunction: new Condition('OR');
*
* @see \Drupal\Core\Database\Query\Condition
*/ */
function db_or() { function db_or() {
return new Condition('OR'); return new Condition('OR');
@ -382,6 +496,12 @@ function db_or() {
* *
* @return \Drupal\Core\Database\Query\Condition * @return \Drupal\Core\Database\Query\Condition
* A new Condition object, set to "AND" all conditions together. * A new Condition object, set to "AND" all conditions together.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Create
* a \Drupal\Core\Database\Query\Condition object, specifying an AND
* conjunction: new Condition('AND');
*
* @see \Drupal\Core\Database\Query\Condition
*/ */
function db_and() { function db_and() {
return new Condition('AND'); return new Condition('AND');
@ -392,6 +512,12 @@ function db_and() {
* *
* @return \Drupal\Core\Database\Query\Condition * @return \Drupal\Core\Database\Query\Condition
* A new Condition object, set to "XOR" all conditions together. * A new Condition object, set to "XOR" all conditions together.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Create
* a \Drupal\Core\Database\Query\Condition object, specifying an XOR
* conjunction: new Condition('XOR');
*
* @see \Drupal\Core\Database\Query\Condition
*/ */
function db_xor() { function db_xor() {
return new Condition('XOR'); return new Condition('XOR');
@ -403,11 +529,17 @@ function db_xor() {
* Internal API function call. The db_and(), db_or(), and db_xor() * Internal API function call. The db_and(), db_or(), and db_xor()
* functions are preferred. * functions are preferred.
* *
* @param $conjunction * @param string $conjunction
* The conjunction to use for query conditions (AND, OR or XOR). * The conjunction to use for query conditions (AND, OR or XOR).
* *
* @return \Drupal\Core\Database\Query\Condition * @return \Drupal\Core\Database\Query\Condition
* A new Condition object, set to the specified conjunction. * A new Condition object, set to the specified conjunction.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Create
* a \Drupal\Core\Database\Query\Condition object, specifying the desired
* conjunction: new Condition($conjunctin);
*
* @see \Drupal\Core\Database\Query\Condition
*/ */
function db_condition($conjunction) { function db_condition($conjunction) {
return new Condition($conjunction); return new Condition($conjunction);
@ -426,10 +558,17 @@ function db_condition($conjunction) {
/** /**
* Creates a new table from a Drupal table definition. * Creates a new table from a Drupal table definition.
* *
* @param $name * @param string $name
* The name of the table to create. * The name of the table to create.
* @param $table * @param array $table
* A Schema API table definition array. * A Schema API table definition array.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call createTable() on it. E.g.
* $injected_database->schema()->createTable($name, $table);
*
* @see \Drupal\Core\Database\Schema::createTable()
*/ */
function db_create_table($name, $table) { function db_create_table($name, $table) {
return Database::getConnection()->schema()->createTable($name, $table); return Database::getConnection()->schema()->createTable($name, $table);
@ -441,11 +580,18 @@ function db_create_table($name, $table) {
* This is usually an identity function but if a key/index uses a column prefix * This is usually an identity function but if a key/index uses a column prefix
* specification, this function extracts just the name. * specification, this function extracts just the name.
* *
* @param $fields * @param array $fields
* An array of key/index column specifiers. * An array of key/index column specifiers.
* *
* @return * @return array
* An array of field names. * An array of field names.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call fieldNames() on it. E.g.
* $injected_database->schema()->fieldNames($fields);
*
* @see \Drupal\Core\Database\Schema::fieldNames()
*/ */
function db_field_names($fields) { function db_field_names($fields) {
return Database::getConnection()->schema()->fieldNames($fields); return Database::getConnection()->schema()->fieldNames($fields);
@ -454,13 +600,20 @@ function db_field_names($fields) {
/** /**
* Checks if an index exists in the given table. * Checks if an index exists in the given table.
* *
* @param $table * @param string $table
* The name of the table in drupal (no prefixing). * The name of the table in drupal (no prefixing).
* @param $name * @param string $name
* The name of the index in drupal (no prefixing). * The name of the index in drupal (no prefixing).
* *
* @return * @return bool
* TRUE if the given index exists, otherwise FALSE. * TRUE if the given index exists, otherwise FALSE.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call indexExists() on it. E.g.
* $injected_database->schema()->indexExists($table, $name);
*
* @see \Drupal\Core\Database\Schema::indexExists()
*/ */
function db_index_exists($table, $name) { function db_index_exists($table, $name) {
return Database::getConnection()->schema()->indexExists($table, $name); return Database::getConnection()->schema()->indexExists($table, $name);
@ -469,11 +622,18 @@ function db_index_exists($table, $name) {
/** /**
* Checks if a table exists. * Checks if a table exists.
* *
* @param $table * @param string $table
* The name of the table in drupal (no prefixing). * The name of the table in drupal (no prefixing).
* *
* @return * @return bool
* TRUE if the given table exists, otherwise FALSE. * TRUE if the given table exists, otherwise FALSE.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call tableExists() on it. E.g.
* $injected_database->schema()->tableExists($table);
*
* @see \Drupal\Core\Database\Schema::tableExists()
*/ */
function db_table_exists($table) { function db_table_exists($table) {
return Database::getConnection()->schema()->tableExists($table); return Database::getConnection()->schema()->tableExists($table);
@ -487,8 +647,15 @@ function db_table_exists($table) {
* @param $field * @param $field
* The name of the field. * The name of the field.
* *
* @return * @return bool
* TRUE if the given column exists, otherwise FALSE. * TRUE if the given column exists, otherwise FALSE.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call fieldExists() on it. E.g.
* $injected_database->schema()->fieldExists($table, $field);
*
* @see \Drupal\Core\Database\Schema::fieldExists()
*/ */
function db_field_exists($table, $field) { function db_field_exists($table, $field) {
return Database::getConnection()->schema()->fieldExists($table, $field); return Database::getConnection()->schema()->fieldExists($table, $field);
@ -497,21 +664,24 @@ function db_field_exists($table, $field) {
/** /**
* Finds all tables that are like the specified base table name. * Finds all tables that are like the specified base table name.
* *
* @param $table_expression * @param string $table_expression
* An SQL expression, for example "simpletest%" (without the quotes). * An SQL expression, for example "simpletest%" (without the quotes).
* BEWARE: this is not prefixed, the caller should take care of that. * BEWARE: this is not prefixed, the caller should take care of that.
* *
* @return * @return array
* Array, both the keys and the values are the matching tables. * Array, both the keys and the values are the matching tables.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call findTables() on it. E.g.
* $injected_database->schema()->findTables($table_expression);
*
* @see \Drupal\Core\Database\Schema::findTables()
*/ */
function db_find_tables($table_expression) { function db_find_tables($table_expression) {
return Database::getConnection()->schema()->findTables($table_expression); return Database::getConnection()->schema()->findTables($table_expression);
} }
function _db_create_keys_sql($spec) {
return Database::getConnection()->schema()->createKeysSql($spec);
}
/** /**
* Renames a table. * Renames a table.
* *
@ -519,6 +689,13 @@ function _db_create_keys_sql($spec) {
* The current name of the table to be renamed. * The current name of the table to be renamed.
* @param $new_name * @param $new_name
* The new name for the table. * The new name for the table.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call renameTable() on it. E.g.
* $injected_database->schema()->renameTable($table, $new_name);
*
* @see \Drupal\Core\Database\Schema::renameTable()
*/ */
function db_rename_table($table, $new_name) { function db_rename_table($table, $new_name) {
return Database::getConnection()->schema()->renameTable($table, $new_name); return Database::getConnection()->schema()->renameTable($table, $new_name);
@ -529,6 +706,13 @@ function db_rename_table($table, $new_name) {
* *
* @param $table * @param $table
* The table to be dropped. * The table to be dropped.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call dropTable() on it. E.g.
* $injected_database->schema()->dropTable($table);
*
* @see \Drupal\Core\Database\Schema::dropTable()
*/ */
function db_drop_table($table) { function db_drop_table($table) {
return Database::getConnection()->schema()->dropTable($table); return Database::getConnection()->schema()->dropTable($table);
@ -541,18 +725,24 @@ function db_drop_table($table) {
* Name of the table to be altered. * Name of the table to be altered.
* @param $field * @param $field
* Name of the field to be added. * Name of the field to be added.
* @param $spec * @param array $spec
* The field specification array, as taken from a schema definition. The * The field specification array, as taken from a schema definition. The
* specification may also contain the key 'initial'; the newly-created field * specification may also contain the key 'initial'; the newly-created field
* will be set to the value of the key in all rows. This is most useful for * will be set to the value of the key in all rows. This is most useful for
* creating NOT NULL columns with no default value in existing tables. * creating NOT NULL columns with no default value in existing tables.
* @param $keys_new * @param array $keys_new
* (optional) Keys and indexes specification to be created on the table along * (optional) Keys and indexes specification to be created on the table along
* with adding the field. The format is the same as a table specification, but * with adding the field. The format is the same as a table specification, but
* without the 'fields' element. If you are adding a type 'serial' field, you * without the 'fields' element. If you are adding a type 'serial' field, you
* MUST specify at least one key or index including it in this array. See * MUST specify at least one key or index including it in this array. See
* db_change_field() for more explanation why. * db_change_field() for more explanation why.
* *
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call addField() on it. E.g.
* $injected_database->schema()->addField($table, $field, $spec, $keys_new);
*
* @see \Drupal\Core\Database\Schema::addField()
* @see db_change_field() * @see db_change_field()
*/ */
function db_add_field($table, $field, $spec, $keys_new = array()) { function db_add_field($table, $field, $spec, $keys_new = array()) {
@ -566,6 +756,17 @@ function db_add_field($table, $field, $spec, $keys_new = array()) {
* The table to be altered. * The table to be altered.
* @param $field * @param $field
* The field to be dropped. * The field to be dropped.
*
* @return bool
* TRUE if the field was successfully dropped, FALSE if there was no field by
* that name to begin with.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call dropField() on it. E.g.
* $injected_database->schema()->dropField($table, $field);
*
* @see \Drupal\Core\Database\Schema::dropField()
*/ */
function db_drop_field($table, $field) { function db_drop_field($table, $field) {
return Database::getConnection()->schema()->dropField($table, $field); return Database::getConnection()->schema()->dropField($table, $field);
@ -580,6 +781,13 @@ function db_drop_field($table, $field) {
* The field to be altered. * The field to be altered.
* @param $default * @param $default
* Default value to be set. NULL for 'default NULL'. * Default value to be set. NULL for 'default NULL'.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call fieldSetDefault() on it. E.g.
* $injected_database->schema()->fieldSetDefault($table, $field, $default);
*
* @see \Drupal\Core\Database\Schema::fieldSetDefault()
*/ */
function db_field_set_default($table, $field, $default) { function db_field_set_default($table, $field, $default) {
return Database::getConnection()->schema()->fieldSetDefault($table, $field, $default); return Database::getConnection()->schema()->fieldSetDefault($table, $field, $default);
@ -592,6 +800,13 @@ function db_field_set_default($table, $field, $default) {
* The table to be altered. * The table to be altered.
* @param $field * @param $field
* The field to be altered. * The field to be altered.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call fieldSetNoDefault() on it. E.g.
* $injected_database->schema()->fieldSetNoDefault($table, $field);
*
* @see \Drupal\Core\Database\Schema::fieldSetNoDefault()
*/ */
function db_field_set_no_default($table, $field) { function db_field_set_no_default($table, $field) {
return Database::getConnection()->schema()->fieldSetNoDefault($table, $field); return Database::getConnection()->schema()->fieldSetNoDefault($table, $field);
@ -604,6 +819,13 @@ function db_field_set_no_default($table, $field) {
* Name of the table to be altered. * Name of the table to be altered.
* @param $fields * @param $fields
* Array of fields for the primary key. * Array of fields for the primary key.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call addPrimaryKey() on it. E.g.
* $injected_database->schema()->addPrimaryKey($table, $fields);
*
* @see \Drupal\Core\Database\Schema::addPrimaryKey()
*/ */
function db_add_primary_key($table, $fields) { function db_add_primary_key($table, $fields) {
return Database::getConnection()->schema()->addPrimaryKey($table, $fields); return Database::getConnection()->schema()->addPrimaryKey($table, $fields);
@ -614,6 +836,17 @@ function db_add_primary_key($table, $fields) {
* *
* @param $table * @param $table
* Name of the table to be altered. * Name of the table to be altered.
*
* @return bool
* TRUE if the primary key was successfully dropped, FALSE if there was no
* primary key on this table to begin with.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call dropPrimaryKey() on it. E.g.
* $injected_database->schema()->dropPrimaryKey($table);
*
* @see \Drupal\Core\Database\Schema::dropPrimaryKey()
*/ */
function db_drop_primary_key($table) { function db_drop_primary_key($table) {
return Database::getConnection()->schema()->dropPrimaryKey($table); return Database::getConnection()->schema()->dropPrimaryKey($table);
@ -626,8 +859,15 @@ function db_drop_primary_key($table) {
* The table to be altered. * The table to be altered.
* @param $name * @param $name
* The name of the key. * The name of the key.
* @param $fields * @param array $fields
* An array of field names. * An array of field names.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call addUniqueKey() on it. E.g.
* $injected_database->schema()->addUniqueKey($table, $name, $fields);
*
* @see \Drupal\Core\Database\Schema::addUniqueKey()
*/ */
function db_add_unique_key($table, $name, $fields) { function db_add_unique_key($table, $name, $fields) {
return Database::getConnection()->schema()->addUniqueKey($table, $name, $fields); return Database::getConnection()->schema()->addUniqueKey($table, $name, $fields);
@ -640,6 +880,17 @@ function db_add_unique_key($table, $name, $fields) {
* The table to be altered. * The table to be altered.
* @param $name * @param $name
* The name of the key. * The name of the key.
*
* @return bool
* TRUE if the key was successfully dropped, FALSE if there was no key by
* that name to begin with.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call dropUniqueKey() on it. E.g.
* $injected_database->schema()->dropUniqueKey($table, $name);
*
* @see \Drupal\Core\Database\Schema::dropUniqueKey()
*/ */
function db_drop_unique_key($table, $name) { function db_drop_unique_key($table, $name) {
return Database::getConnection()->schema()->dropUniqueKey($table, $name); return Database::getConnection()->schema()->dropUniqueKey($table, $name);
@ -652,8 +903,15 @@ function db_drop_unique_key($table, $name) {
* The table to be altered. * The table to be altered.
* @param $name * @param $name
* The name of the index. * The name of the index.
* @param $fields * @param array $fields
* An array of field names. * An array of field names.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call addIndex() on it. E.g.
* $injected_database->schema()->addIndex($table, $name, $fields);
*
* @see \Drupal\Core\Database\Schema::addIndex()
*/ */
function db_add_index($table, $name, $fields) { function db_add_index($table, $name, $fields) {
return Database::getConnection()->schema()->addIndex($table, $name, $fields); return Database::getConnection()->schema()->addIndex($table, $name, $fields);
@ -666,6 +924,17 @@ function db_add_index($table, $name, $fields) {
* The table to be altered. * The table to be altered.
* @param $name * @param $name
* The name of the index. * The name of the index.
*
* @return bool
* TRUE if the index was successfully dropped, FALSE if there was no index
* by that name to begin with.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call dropIndex() on it. E.g.
* $injected_database->schema()->dropIndex($table, $name);
*
* @see \Drupal\Core\Database\Schema::dropIndex()
*/ */
function db_drop_index($table, $name) { function db_drop_index($table, $name) {
return Database::getConnection()->schema()->dropIndex($table, $name); return Database::getConnection()->schema()->dropIndex($table, $name);
@ -726,10 +995,17 @@ function db_drop_index($table, $name) {
* change the name). * change the name).
* @param $spec * @param $spec
* The field specification for the new field. * The field specification for the new field.
* @param $keys_new * @param array $keys_new
* (optional) Keys and indexes specification to be created on the table along * (optional) Keys and indexes specification to be created on the table along
* with changing the field. The format is the same as a table specification * with changing the field. The format is the same as a table specification
* but without the 'fields' element. * but without the 'fields' element.
*
* @deprecated as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get
* a database connection injected into your service from the container, get
* its schema driver, and call changeField() on it. E.g.
* $injected_database->schema()->changeField($table, $field, $field_new, $spec, $keys_new);
*
* @see \Drupal\Core\Database\Schema::changeField()
*/ */
function db_change_field($table, $field, $field_new, $spec, $keys_new = array()) { function db_change_field($table, $field, $field_new, $spec, $keys_new = array()) {
return Database::getConnection()->schema()->changeField($table, $field, $field_new, $spec, $keys_new); return Database::getConnection()->schema()->changeField($table, $field, $field_new, $spec, $keys_new);