You are here

public function Connection::nextIdDelete in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Database/Driver/mysql/Connection.php \Drupal\Core\Database\Driver\mysql\Connection::nextIdDelete()
2 calls to Connection::nextIdDelete()
Connection::serialize in core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
Connection::__destruct in core/lib/Drupal/Core/Database/Driver/mysql/Connection.php

File

core/lib/Drupal/Core/Database/Driver/mysql/Connection.php, line 598

Class

Connection
MySQL implementation of \Drupal\Core\Database\Connection.

Namespace

Drupal\Core\Database\Driver\mysql

Code

public function nextIdDelete() {

  // While we want to clean up the table to keep it up from occupying too
  // much storage and memory, we must keep the highest value in the table
  // because InnoDB uses an in-memory auto-increment counter as long as the
  // server runs. When the server is stopped and restarted, InnoDB
  // reinitializes the counter for each table for the first INSERT to the
  // table based solely on values from the table so deleting all values would
  // be a problem in this case. Also, TRUNCATE resets the auto increment
  // counter.
  try {
    $max_id = $this
      ->query('SELECT MAX(value) FROM {sequences}')
      ->fetchField();

    // We know we are using MySQL here, no need for the slower ::delete().
    $this
      ->query('DELETE FROM {sequences} WHERE value < :value', [
      ':value' => $max_id,
    ]);
  } catch (DatabaseException $e) {
  }
}