Verified Commit 97db62a1 authored by Dave Long's avatar Dave Long
Browse files

Issue #3217531 by mondrake, daffie, longwave: Deprecate usage of...

Issue #3217531 by mondrake, daffie, longwave: Deprecate usage of Connection::getDriverClass for some classes, and use standard autoloading instead
parent 4b0e8708
Loading
Loading
Loading
Loading
+38 −0
Changes for core/lib/Drupal/Core/Database/Connection.php: 38 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -899,6 +899,20 @@ protected function expandArguments(&$query, &$args) {
   *   The name of the class that should be used for this driver.
   */
  public function getDriverClass($class) {
    match($class) {
      'ExceptionHandler',
      'Select',
      'Insert',
      'Merge',
      'Upsert',
      'Update',
      'Delete',
      'Truncate',
      'Schema',
      'Condition',
      'Transaction' => @trigger_error('Calling ' . __METHOD__ . '() for \'' . $class . '\' is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use standard autoloading in the methods that return database operations. See https://www.drupal.org/node/3217534', E_USER_DEPRECATED),
      default => NULL,
    };
    if (empty($this->driverClasses[$class])) {
      $driver_class = $this->connectionOptions['namespace'] . '\\' . $class;
      if (class_exists($driver_class)) {
@@ -963,6 +977,8 @@ public function getDriverClass($class) {
   *
   * @return \Drupal\Core\Database\ExceptionHandler
   *   The database exceptions handler.
   *
   * @todo in drupal:11.0.0, return a new ExceptionHandler instance directly.
   */
  public function exceptionHandler() {
    $class = $this->getDriverClass('ExceptionHandler');
@@ -987,6 +1003,8 @@ public function exceptionHandler() {
   *   driver.
   *
   * @see \Drupal\Core\Database\Query\Select
   *
   * @todo in drupal:11.0.0, return a new Query\Select instance directly.
   */
  public function select($table, $alias = NULL, array $options = []) {
    assert(is_string($alias) || $alias === NULL, 'The \'$alias\' argument to ' . __METHOD__ . '() must be a string or NULL');
@@ -1009,6 +1027,8 @@ public function select($table, $alias = NULL, array $options = []) {
   *
   * @see \Drupal\Core\Database\Query\Insert
   * @see \Drupal\Core\Database\Connection::defaultOptions()
   *
   * @todo in drupal:11.0.0, return a new Query\Insert instance directly.
   */
  public function insert($table, array $options = []) {
    $class = $this->getDriverClass('Insert');
@@ -1057,6 +1077,8 @@ public function lastInsertId(?string $name = NULL): string {
   *   A new Merge query object.
   *
   * @see \Drupal\Core\Database\Query\Merge
   *
   * @todo in drupal:11.0.0, return a new Query\Merge instance directly.
   */
  public function merge($table, array $options = []) {
    $class = $this->getDriverClass('Merge');
@@ -1075,6 +1097,9 @@ public function merge($table, array $options = []) {
   *   A new Upsert query object.
   *
   * @see \Drupal\Core\Database\Query\Upsert
   *
   * @todo in drupal:11.0.0, make this method abstract since Query\Upsert is
   *   an abstract class.
   */
  public function upsert($table, array $options = []) {
    $class = $this->getDriverClass('Upsert');
@@ -1096,6 +1121,8 @@ public function upsert($table, array $options = []) {
   *
   * @see \Drupal\Core\Database\Query\Update
   * @see \Drupal\Core\Database\Connection::defaultOptions()
   *
   * @todo in drupal:11.0.0, return a new Query\Update instance directly.
   */
  public function update($table, array $options = []) {
    $class = $this->getDriverClass('Update');
@@ -1117,6 +1144,8 @@ public function update($table, array $options = []) {
   *
   * @see \Drupal\Core\Database\Query\Delete
   * @see \Drupal\Core\Database\Connection::defaultOptions()
   *
   * @todo in drupal:11.0.0, return a new Query\Delete instance directly.
   */
  public function delete($table, array $options = []) {
    $class = $this->getDriverClass('Delete');
@@ -1135,6 +1164,8 @@ public function delete($table, array $options = []) {
   *   A new Truncate query object.
   *
   * @see \Drupal\Core\Database\Query\Truncate
   *
   * @todo in drupal:11.0.0, return a new Query\Truncate instance directly.
   */
  public function truncate($table, array $options = []) {
    $class = $this->getDriverClass('Truncate');
@@ -1148,6 +1179,9 @@ public function truncate($table, array $options = []) {
   *
   * @return \Drupal\Core\Database\Schema
   *   The database Schema object for this connection.
   *
   * @todo in drupal:11.0.0, make this method abstract since Schema is
   *   an abstract class.
   */
  public function schema() {
    if (empty($this->schema)) {
@@ -1167,6 +1201,8 @@ public function schema() {
   *   A new Condition query object.
   *
   * @see \Drupal\Core\Database\Query\Condition
   *
   * @todo in drupal:11.0.0, return a new Condition instance directly.
   */
  public function condition($conjunction) {
    $class = $this->getDriverClass('Condition');
@@ -1324,6 +1360,8 @@ public function transactionDepth() {
   *   A Transaction object.
   *
   * @see \Drupal\Core\Database\Transaction
   *
   * @todo in drupal:11.0.0, return a new Transaction instance directly.
   */
  public function startTransaction($name = '') {
    $class = $this->getDriverClass('Transaction');
+87 −5
Changes for core/modules/mysql/src/Driver/Database/mysql/Connection.php: 87 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -2,15 +2,17 @@

namespace Drupal\mysql\Driver\Database\mysql;

use Drupal\Core\Database\Connection as DatabaseConnection;
use Drupal\Core\Database\Database;
use Drupal\Core\Database\DatabaseAccessDeniedException;
use Drupal\Core\Database\DatabaseConnectionRefusedException;
use Drupal\Core\Database\DatabaseException;
use Drupal\Core\Database\DatabaseExceptionWrapper;
use Drupal\Core\Database\StatementWrapperIterator;
use Drupal\Core\Database\Database;
use Drupal\Core\Database\DatabaseNotFoundException;
use Drupal\Core\Database\DatabaseException;
use Drupal\Core\Database\Connection as DatabaseConnection;
use Drupal\Core\Database\DatabaseConnectionRefusedException;
use Drupal\Core\Database\Query\Condition;
use Drupal\Core\Database\StatementWrapperIterator;
use Drupal\Core\Database\SupportsTemporaryTablesInterface;
use Drupal\Core\Database\Transaction;
use Drupal\Core\Database\TransactionNoActiveException;

/**
@@ -511,6 +513,86 @@ protected function doCommit() {
    return $success;
  }

  /**
   * {@inheritdoc}
   */
  public function exceptionHandler() {
    return new ExceptionHandler();
  }

  /**
   * {@inheritdoc}
   */
  public function select($table, $alias = NULL, array $options = []) {
    return new Select($this, $table, $alias, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function insert($table, array $options = []) {
    return new Insert($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function merge($table, array $options = []) {
    return new Merge($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function upsert($table, array $options = []) {
    return new Upsert($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function update($table, array $options = []) {
    return new Update($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function delete($table, array $options = []) {
    return new Delete($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function truncate($table, array $options = []) {
    return new Truncate($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function schema() {
    if (empty($this->schema)) {
      $this->schema = new Schema($this);
    }
    return $this->schema;
  }

  /**
   * {@inheritdoc}
   */
  public function condition($conjunction) {
    return new Condition($conjunction);
  }

  /**
   * {@inheritdoc}
   */
  public function startTransaction($name = '') {
    return new Transaction($this, $name);
  }

}


+84 −1
Changes for core/modules/pgsql/src/Driver/Database/pgsql/Connection.php: 84 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -2,13 +2,16 @@

namespace Drupal\pgsql\Driver\Database\pgsql;

use Drupal\Core\Database\Database;
use Drupal\Core\Database\Connection as DatabaseConnection;
use Drupal\Core\Database\Database;
use Drupal\Core\Database\DatabaseAccessDeniedException;
use Drupal\Core\Database\DatabaseNotFoundException;
use Drupal\Core\Database\ExceptionHandler;
use Drupal\Core\Database\Query\Condition;
use Drupal\Core\Database\StatementInterface;
use Drupal\Core\Database\StatementWrapperIterator;
use Drupal\Core\Database\SupportsTemporaryTablesInterface;
use Drupal\Core\Database\Transaction;

// cSpell:ignore ilike nextval

@@ -404,6 +407,86 @@ public function hasJson(): bool {
    }
  }

  /**
   * {@inheritdoc}
   */
  public function exceptionHandler() {
    return new ExceptionHandler();
  }

  /**
   * {@inheritdoc}
   */
  public function select($table, $alias = NULL, array $options = []) {
    return new Select($this, $table, $alias, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function insert($table, array $options = []) {
    return new Insert($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function merge($table, array $options = []) {
    return new Merge($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function upsert($table, array $options = []) {
    return new Upsert($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function update($table, array $options = []) {
    return new Update($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function delete($table, array $options = []) {
    return new Delete($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function truncate($table, array $options = []) {
    return new Truncate($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function schema() {
    if (empty($this->schema)) {
      $this->schema = new Schema($this);
    }
    return $this->schema;
  }

  /**
   * {@inheritdoc}
   */
  public function condition($conjunction) {
    return new Condition($conjunction);
  }

  /**
   * {@inheritdoc}
   */
  public function startTransaction($name = '') {
    return new Transaction($this, $name);
  }

}

/**
+84 −1
Changes for core/modules/sqlite/src/Driver/Database/sqlite/Connection.php: 84 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -2,11 +2,14 @@

namespace Drupal\sqlite\Driver\Database\sqlite;

use Drupal\Core\Database\Connection as DatabaseConnection;
use Drupal\Core\Database\DatabaseExceptionWrapper;
use Drupal\Core\Database\DatabaseNotFoundException;
use Drupal\Core\Database\Connection as DatabaseConnection;
use Drupal\Core\Database\ExceptionHandler;
use Drupal\Core\Database\Query\Condition;
use Drupal\Core\Database\StatementInterface;
use Drupal\Core\Database\SupportsTemporaryTablesInterface;
use Drupal\Core\Database\Transaction;

/**
 * SQLite implementation of \Drupal\Core\Database\Connection.
@@ -508,4 +511,84 @@ public static function createUrlFromConnectionOptions(array $connection_options)
    return $db_url;
  }

  /**
   * {@inheritdoc}
   */
  public function exceptionHandler() {
    return new ExceptionHandler();
  }

  /**
   * {@inheritdoc}
   */
  public function select($table, $alias = NULL, array $options = []) {
    return new Select($this, $table, $alias, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function insert($table, array $options = []) {
    return new Insert($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function merge($table, array $options = []) {
    return new Merge($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function upsert($table, array $options = []) {
    return new Upsert($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function update($table, array $options = []) {
    return new Update($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function delete($table, array $options = []) {
    return new Delete($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function truncate($table, array $options = []) {
    return new Truncate($this, $table, $options);
  }

  /**
   * {@inheritdoc}
   */
  public function schema() {
    if (empty($this->schema)) {
      $this->schema = new Schema($this);
    }
    return $this->schema;
  }

  /**
   * {@inheritdoc}
   */
  public function condition($conjunction) {
    return new Condition($conjunction);
  }

  /**
   * {@inheritdoc}
   */
  public function startTransaction($name = '') {
    return new Transaction($this, $name);
  }

}
+0 −10
Changes for core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestMysql/Delete.php: 0 added lines, 10 removed lines.
Original line number Diff line number Diff line
<?php

namespace Drupal\driver_test\Driver\Database\DrivertestMysql;

use Drupal\mysql\Driver\Database\mysql\Delete as CoreDelete;

/**
 * MySQL test implementation of \Drupal\Core\Database\Query\Delete.
 */
class Delete extends CoreDelete {}
Loading