Commit 3e3eab60 authored by catch's avatar catch
Browse files

Issue #2753971 by dagmar, alexpott, hampercm, Berdir, generalredneck, xjm,...

Issue #2753971 by dagmar, alexpott, hampercm, Berdir, generalredneck, xjm, catch: ContentEntityStorageBase::deleteRevision() function does not remove node_field_revision entries
parent 977da4b6
Loading
Loading
Loading
Loading
+7 −0
Changes for core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -603,6 +603,13 @@ protected function doDeleteRevisionFieldItems(ContentEntityInterface $revision)
    $this->database->delete($this->revisionTable)
      ->condition($this->revisionKey, $revision->getRevisionId())
      ->execute();

    if ($this->revisionDataTable) {
      $this->database->delete($this->revisionDataTable)
        ->condition($this->revisionKey, $revision->getRevisionId())
        ->execute();
    }

    $this->deleteRevisionFromDedicatedTables($revision);
  }

+1 −0
Changes for core/modules/node/src/Tests/NodeRevisionsTest.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -195,6 +195,7 @@ public function testRevisions() {
                        ['%revision-date' => format_date($nodes[1]->getRevisionCreationTime()),
                              '@type' => 'Basic page', '%title' => $nodes[1]->label()]), 'Revision deleted.');
    $this->assertTrue(db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid and vid = :vid', [':nid' => $node->id(), ':vid' => $nodes[1]->getRevisionId()])->fetchField() == 0, 'Revision not found.');
    $this->assertTrue(db_query('SELECT COUNT(vid) FROM {node_field_revision} WHERE nid = :nid and vid = :vid', [':nid' => $node->id(), ':vid' => $nodes[1]->getRevisionId()])->fetchField() == 0, 'Field revision not found.');

    // Set the revision timestamp to an older date to make sure that the
    // confirmation message correctly displays the stored revision date.
+6 −0
Changes for core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -101,6 +101,9 @@ protected function assertCRUD($entity_type, UserInterface $user1) {
    if ($revision_table = $definition->getRevisionTable()) {
      $this->assertEqual(0, db_query('SELECT COUNT(*) FROM {' . $revision_table . '}')->fetchField(), 'Data table was emptied');
    }
    if ($revision_data_table = $definition->getRevisionDataTable()) {
      $this->assertEqual(0, db_query('SELECT COUNT(*) FROM {' . $revision_data_table . '}')->fetchField(), 'Data table was emptied');
    }

    // Test deleting a list of entities not indexed by entity id.
    $entities = [];
@@ -126,6 +129,9 @@ protected function assertCRUD($entity_type, UserInterface $user1) {
    if ($revision_table = $definition->getRevisionTable()) {
      $this->assertEqual(0, db_query('SELECT COUNT(*) FROM {' . $revision_table . '}')->fetchField(), 'Data table was emptied');
    }
    if ($revision_data_table = $definition->getRevisionDataTable()) {
      $this->assertEqual(0, db_query('SELECT COUNT(*) FROM {' . $revision_data_table . '}')->fetchField(), 'Data table was emptied');
    }
  }

  /**