Unverified Commit 42b74814 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3259709 by mondrake, alexpott, fjgarlin, daffie, catch, andypost, chi,...

Issue #3259709 by mondrake, alexpott, fjgarlin, daffie, catch, andypost, chi, longwave: Create the database driver for MySQLi
parent b50c5edf
Loading
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -231,6 +231,8 @@ default:
  variables:
    _TARGET_PHP: "8.3-ubuntu"
    _TARGET_DB: "mysql-8"
    _TARGET_DB_DRIVER: "mysql"
    _TARGET_DB_DRIVER_MODULE: "mysql"
    PERFORMANCE_TEST: $PERFORMANCE_TEST
  # Run on MR, schedule, push, parent pipeline and performance test.
  rules:
@@ -265,6 +267,8 @@ default:
  variables:
    _TARGET_PHP: "8.3-ubuntu"
    _TARGET_DB: "mysql-8"
    _TARGET_DB_DRIVER: "mysql"
    _TARGET_DB_DRIVER_MODULE: "mysql"
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  trigger:
@@ -281,18 +285,40 @@ default:
  variables:
    _TARGET_PHP: "8.3-ubuntu"
    _TARGET_DB: "mariadb-10.6"
    _TARGET_DB_DRIVER: "mysql"
    _TARGET_DB_DRIVER_MODULE: "mysql"

'mysqli - PHP 8.3 MySQL 8.4':
  <<: [ *default-stage, *run-on-mr ]
  variables:
    _TARGET_PHP: "8.3-ubuntu"
    _TARGET_DB: "mysql-8.4"
    _TARGET_DB_DRIVER: "mysqli"
    _TARGET_DB_DRIVER_MODULE: "mysqli"

'mysqli - PHP 8.4 MySQL 9.3':
  <<: [ *default-stage, *run-on-mr ]
  variables:
    _TARGET_PHP: "8.4-ubuntu"
    _TARGET_DB: "mysql-9"
    _TARGET_DB_DRIVER: "mysqli"
    _TARGET_DB_DRIVER_MODULE: "mysqli"

'PHP 8.3 MySQL 8.4':
  <<: [ *default-stage, *run-on-mr ]
  variables:
    _TARGET_PHP: "8.3-ubuntu"
    _TARGET_DB: "mysql-8.4"
    _TARGET_DB_DRIVER: "mysql"
    _TARGET_DB_DRIVER_MODULE: "mysql"

'PHP 8.4 MySQL 9.3':
  <<: [ *default-stage, *run-on-mr ]
  variables:
    _TARGET_PHP: "8.4-ubuntu"
    _TARGET_DB: "mysql-9"
    _TARGET_DB_DRIVER: "mysql"
    _TARGET_DB_DRIVER_MODULE: "mysql"

'PHP 8.3 PostgreSQL 16':
  <<: [ *default-stage, *run-on-mr ]
+4 −4
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@ default:
  before_script:
    - |
      [[ $_TARGET_DB == sqlite* ]] && export SIMPLETEST_DB=sqlite://localhost/$CI_PROJECT_DIR/sites/default/files/db.sqlite?module=sqlite
      [[ $_TARGET_DB == mysql* ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=mysql
      [[ $_TARGET_DB == mariadb* ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=mysql
      [[ $_TARGET_DB == mysql* ]] && export SIMPLETEST_DB=$_TARGET_DB_DRIVER://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=$_TARGET_DB_DRIVER_MODULE
      [[ $_TARGET_DB == mariadb* ]] && export SIMPLETEST_DB=$_TARGET_DB_DRIVER://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=$_TARGET_DB_DRIVER_MODULE
      [[ $_TARGET_DB == pgsql* ]] && export SIMPLETEST_DB=pgsql://$POSTGRES_USER:$POSTGRES_PASSWORD@database/$POSTGRES_DB?module=pgsql
    - echo "SIMPLETEST_DB = $SIMPLETEST_DB"
    - $CI_PROJECT_DIR/.gitlab-ci/scripts/server-setup.sh
@@ -269,8 +269,8 @@ variables:
    #  Determine DB driver.
    - |
      [[ $_TARGET_DB == sqlite* ]] && export SIMPLETEST_DB=sqlite://localhost/subdirectory/sites/default/files/db.sqlite?module=sqlite
      [[ $_TARGET_DB == mysql* ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=mysql
      [[ $_TARGET_DB == mariadb* ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=mysql
      [[ $_TARGET_DB == mysql* ]] && export SIMPLETEST_DB=$_TARGET_DB_DRIVER://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=$_TARGET_DB_DRIVER_MODULE
      [[ $_TARGET_DB == mariadb* ]] && export SIMPLETEST_DB=$_TARGET_DB_DRIVER://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=$_TARGET_DB_DRIVER_MODULE
      [[ $_TARGET_DB == pgsql* ]] && export SIMPLETEST_DB=pgsql://$POSTGRES_USER:$POSTGRES_PASSWORD@database/$POSTGRES_DB?module=pgsql
    - composer install --optimize-autoloader
    - export OTEL_COLLECTOR="$OTEL_COLLECTOR"
+12 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\Core\Database\Exception;

use Drupal\Core\Database\DatabaseException;
use Drupal\Core\Database\SchemaException;

/**
 * Exception thrown if the Primary Key must be dropped before an operation.
 */
class SchemaPrimaryKeyMustBeDroppedException extends SchemaException implements DatabaseException {
}
+12 −0
Original line number Diff line number Diff line
@@ -30,6 +30,18 @@ public function __construct(
    parent::__construct($fetchMode, $fetchOptions);
  }

  /**
   * Returns the client-level database PDO statement object.
   *
   * This method should normally be used only within database driver code.
   *
   * @return \PDOStatement
   *   The client-level database PDO statement.
   */
  public function getClientStatement(): \PDOStatement {
    return $this->clientStatement;
  }

  /**
   * {@inheritdoc}
   */
+4 −10
Original line number Diff line number Diff line
@@ -49,23 +49,17 @@ protected function pdoToFetchAs(int $mode): FetchAs {
  }

  /**
   * Returns the client-level database PDO statement object.
   * Returns the client-level database statement object.
   *
   * This method should normally be used only within database driver code.
   *
   * @return \PDOStatement
   *   The client-level database PDO statement.
   * @return object
   *   The client-level database statement.
   *
   * @throws \RuntimeException
   *   If the client-level statement is not set.
   */
  public function getClientStatement(): \PDOStatement {
    if (isset($this->clientStatement)) {
      assert($this->clientStatement instanceof \PDOStatement);
      return $this->clientStatement;
    }
    throw new \LogicException('\\PDOStatement not initialized');
  }
  abstract public function getClientStatement(): object;

  /**
   * Sets the default fetch mode for the PDO statement.
Loading