Verified Commit 4d79b69a authored by godotislate's avatar godotislate
Browse files

fix: #3608374 Data for...

fix: #3608374 Data for non-revisionable/non-translatable/no-dedicated-field-tables entity types such as file is loaded twice

By: berdir
(cherry picked from commit 978748dd)
parent 99258a8a
Loading
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1314,13 +1314,17 @@ protected function loadFromDedicatedTables(array &$values, $load_from_revision,
    // combine the last two chunks. This means that 26 fields end up in a single
    // chunk of 26, instead of chunks of 25 and 1.
    $load_shared_table_fields = TRUE;
    $chunks = [];
    if (count($single_cardinality_fields) > static::FIELD_MINIMUM_CHUNK_SIZE) {
      $chunks = array_chunk($single_cardinality_fields, static::FIELD_MINIMUM_CHUNK_SIZE, TRUE);
      $last_chunk = array_pop($chunks);
      $last_key = array_key_last($chunks);
      $chunks[$last_key] = array_merge($chunks[$last_key], $last_chunk);
    }
    else {
    // If there are no fields, no data table and no revision tables, there
    // is nothing additional to load, the empty chunks array will skip the loop
    // below.
    elseif ($single_cardinality_fields || $this->dataTable || $this->revisionTable || $this->revisionDataTable) {
      $chunks = [$single_cardinality_fields];
    }
    foreach ($chunks as $fields) {
+1 −1
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ protected function doTestNodePageAdministrator(): void {
    }, 'administratorNodePage');

    $expected = [
      'QueryCount' => 279,
      'QueryCount' => 273,
      'CacheGetCount' => 268,
      'CacheGetCountByBin' => [
        'config' => 60,
+2 −2
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ protected function testFrontPageColdCache(): void {
    $this->assertSession()->pageTextContains('Umami');

    $expected = [
      'QueryCount' => 190,
      'QueryCount' => 184,
      'CacheGetCount' => 237,
      'CacheSetCount' => 241,
      'CacheDeleteCount' => 0,
@@ -122,7 +122,7 @@ protected function testFrontPageCoolCache(): void {
    }, 'umamiFrontPageCoolCache');

    $expected = [
      'QueryCount' => 65,
      'QueryCount' => 60,
      'CacheGetCount' => 174,
      'CacheSetCount' => 75,
      'CacheDeleteCount' => 0,
+3 −8
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ protected function testNodePageColdCache(): void {
    $this->assertSession()->pageTextContains('quiche');

    $expected = [
      'QueryCount' => 210,
      'QueryCount' => 204,
      'CacheGetCount' => 229,
      'CacheSetCount' => 227,
      'CacheDeleteCount' => 0,
@@ -118,7 +118,7 @@ protected function testNodePageCoolCache(): void {
    $this->assertSession()->pageTextContains('quiche');

    $expected = [
      'QueryCount' => 80,
      'QueryCount' => 75,
      'CacheGetCount' => 172,
      'CacheSetCount' => 59,
      'CacheDeleteCount' => 0,
@@ -182,27 +182,22 @@ protected function testNodePageWarmCache(): void {
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/taxonomy/term/22" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/taxonomy/term/13" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base"."fid" AS "fid", "base"."uuid" AS "uuid", "base"."langcode" AS "langcode", "base"."uid" AS "uid", "base"."filename" AS "filename", "base"."uri" AS "uri", "base"."filemime" AS "filemime", "base"."filesize" AS "filesize", "base"."status" AS "status", "base"."created" AS "created", "base"."changed" AS "changed" FROM "file_managed" "base" WHERE "base"."fid" IN (1)',
      'SELECT "file_managed".*, "file_managed"."langcode" AS "file_managed__langcode" FROM "file_managed" "file_managed" WHERE "file_managed"."fid" IN (1)',
      'SELECT "revision"."vid" AS "vid", "revision"."langcode" AS "langcode", "revision"."revision_user" AS "revision_user", "revision"."revision_created" AS "revision_created", "revision"."revision_log_message" AS "revision_log_message", "revision"."revision_default" AS "revision_default", "base"."mid" AS "mid", "base"."bundle" AS "bundle", "base"."uuid" AS "uuid", CASE "base"."vid" WHEN "revision"."vid" THEN 1 ELSE 0 END AS "isDefaultRevision" FROM "media" "base" INNER JOIN "media_revision" "revision" ON "revision"."vid" = "base"."vid" WHERE "base"."mid" IN (21)',
      'SELECT "media_field_data".*, "media_field_data"."langcode" AS "media_field_data__langcode", "media__field_media_image"."field_media_image_target_id" AS "field_media_image_target_id", "media__field_media_image"."field_media_image_alt" AS "field_media_image_alt", "media__field_media_image"."field_media_image_title" AS "field_media_image_title", "media__field_media_image"."field_media_image_width" AS "field_media_image_width", "media__field_media_image"."field_media_image_height" AS "field_media_image_height" FROM "media_field_data" "media_field_data" LEFT OUTER JOIN "media__field_media_image" "media__field_media_image" ON "media__field_media_image"."entity_id" = "media_field_data"."mid" AND "media__field_media_image"."langcode" = "media_field_data"."langcode" AND "media__field_media_image"."deleted" = 0 WHERE "media_field_data"."mid" IN (21)',
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/node/10" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base"."fid" AS "fid", "base"."uuid" AS "uuid", "base"."langcode" AS "langcode", "base"."uid" AS "uid", "base"."filename" AS "filename", "base"."uri" AS "uri", "base"."filemime" AS "filemime", "base"."filesize" AS "filesize", "base"."status" AS "status", "base"."created" AS "created", "base"."changed" AS "changed" FROM "file_managed" "base" WHERE "base"."fid" IN (41)',
      'SELECT "file_managed".*, "file_managed"."langcode" AS "file_managed__langcode" FROM "file_managed" "file_managed" WHERE "file_managed"."fid" IN (41)',
      'SELECT "revision"."vid" AS "vid", "revision"."langcode" AS "langcode", "revision"."revision_user" AS "revision_user", "revision"."revision_created" AS "revision_created", "revision"."revision_log_message" AS "revision_log_message", "revision"."revision_default" AS "revision_default", "base"."mid" AS "mid", "base"."bundle" AS "bundle", "base"."uuid" AS "uuid", CASE "base"."vid" WHEN "revision"."vid" THEN 1 ELSE 0 END AS "isDefaultRevision" FROM "media" "base" INNER JOIN "media_revision" "revision" ON "revision"."vid" = "base"."vid" WHERE "base"."mid" IN (7)',
      'SELECT "media_field_data".*, "media_field_data"."langcode" AS "media_field_data__langcode", "media__field_media_image"."field_media_image_target_id" AS "field_media_image_target_id", "media__field_media_image"."field_media_image_alt" AS "field_media_image_alt", "media__field_media_image"."field_media_image_title" AS "field_media_image_title", "media__field_media_image"."field_media_image_width" AS "field_media_image_width", "media__field_media_image"."field_media_image_height" AS "field_media_image_height" FROM "media_field_data" "media_field_data" LEFT OUTER JOIN "media__field_media_image" "media__field_media_image" ON "media__field_media_image"."entity_id" = "media_field_data"."mid" AND "media__field_media_image"."langcode" = "media_field_data"."langcode" AND "media__field_media_image"."deleted" = 0 WHERE "media_field_data"."mid" IN (7)',
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/node/7" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base"."fid" AS "fid", "base"."uuid" AS "uuid", "base"."langcode" AS "langcode", "base"."uid" AS "uid", "base"."filename" AS "filename", "base"."uri" AS "uri", "base"."filemime" AS "filemime", "base"."filesize" AS "filesize", "base"."status" AS "status", "base"."created" AS "created", "base"."changed" AS "changed" FROM "file_managed" "base" WHERE "base"."fid" IN (13)',
      'SELECT "file_managed".*, "file_managed"."langcode" AS "file_managed__langcode" FROM "file_managed" "file_managed" WHERE "file_managed"."fid" IN (13)',
      'SELECT "revision"."vid" AS "vid", "revision"."langcode" AS "langcode", "revision"."revision_user" AS "revision_user", "revision"."revision_created" AS "revision_created", "revision"."revision_log_message" AS "revision_log_message", "revision"."revision_default" AS "revision_default", "base"."mid" AS "mid", "base"."bundle" AS "bundle", "base"."uuid" AS "uuid", CASE "base"."vid" WHEN "revision"."vid" THEN 1 ELSE 0 END AS "isDefaultRevision" FROM "media" "base" INNER JOIN "media_revision" "revision" ON "revision"."vid" = "base"."vid" WHERE "base"."mid" IN (6)',
      'SELECT "media_field_data".*, "media_field_data"."langcode" AS "media_field_data__langcode", "media__field_media_image"."field_media_image_target_id" AS "field_media_image_target_id", "media__field_media_image"."field_media_image_alt" AS "field_media_image_alt", "media__field_media_image"."field_media_image_title" AS "field_media_image_title", "media__field_media_image"."field_media_image_width" AS "field_media_image_width", "media__field_media_image"."field_media_image_height" AS "field_media_image_height" FROM "media_field_data" "media_field_data" LEFT OUTER JOIN "media__field_media_image" "media__field_media_image" ON "media__field_media_image"."entity_id" = "media_field_data"."mid" AND "media__field_media_image"."langcode" = "media_field_data"."langcode" AND "media__field_media_image"."deleted" = 0 WHERE "media_field_data"."mid" IN (6)',
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/node/6" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base"."fid" AS "fid", "base"."uuid" AS "uuid", "base"."langcode" AS "langcode", "base"."uid" AS "uid", "base"."filename" AS "filename", "base"."uri" AS "uri", "base"."filemime" AS "filemime", "base"."filesize" AS "filesize", "base"."status" AS "status", "base"."created" AS "created", "base"."changed" AS "changed" FROM "file_managed" "base" WHERE "base"."fid" IN (11)',
      'SELECT "file_managed".*, "file_managed"."langcode" AS "file_managed__langcode" FROM "file_managed" "file_managed" WHERE "file_managed"."fid" IN (11)',
      'SELECT "revision"."vid" AS "vid", "revision"."langcode" AS "langcode", "revision"."revision_user" AS "revision_user", "revision"."revision_created" AS "revision_created", "revision"."revision_log_message" AS "revision_log_message", "revision"."revision_default" AS "revision_default", "base"."mid" AS "mid", "base"."bundle" AS "bundle", "base"."uuid" AS "uuid", CASE "base"."vid" WHEN "revision"."vid" THEN 1 ELSE 0 END AS "isDefaultRevision" FROM "media" "base" INNER JOIN "media_revision" "revision" ON "revision"."vid" = "base"."vid" WHERE "base"."mid" IN (3)',
      'SELECT "media_field_data".*, "media_field_data"."langcode" AS "media_field_data__langcode", "media__field_media_image"."field_media_image_target_id" AS "field_media_image_target_id", "media__field_media_image"."field_media_image_alt" AS "field_media_image_alt", "media__field_media_image"."field_media_image_title" AS "field_media_image_title", "media__field_media_image"."field_media_image_width" AS "field_media_image_width", "media__field_media_image"."field_media_image_height" AS "field_media_image_height" FROM "media_field_data" "media_field_data" LEFT OUTER JOIN "media__field_media_image" "media__field_media_image" ON "media__field_media_image"."entity_id" = "media_field_data"."mid" AND "media__field_media_image"."langcode" = "media_field_data"."langcode" AND "media__field_media_image"."deleted" = 0 WHERE "media_field_data"."mid" IN (3)',
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/node/3" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base"."fid" AS "fid", "base"."uuid" AS "uuid", "base"."langcode" AS "langcode", "base"."uid" AS "uid", "base"."filename" AS "filename", "base"."uri" AS "uri", "base"."filemime" AS "filemime", "base"."filesize" AS "filesize", "base"."status" AS "status", "base"."created" AS "created", "base"."changed" AS "changed" FROM "file_managed" "base" WHERE "base"."fid" IN (5)',
      'SELECT "file_managed".*, "file_managed"."langcode" AS "file_managed__langcode" FROM "file_managed" "file_managed" WHERE "file_managed"."fid" IN (5)',
      'SELECT "name", "value" FROM "key_value" WHERE "name" IN ( "theme:umami" ) AND "collection" = "config.entity.key_store.block"',
      'SELECT "base_table"."path" AS "path", "base_table"."alias" AS "alias" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."path" LIKE "/node/1" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("es", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
      'SELECT "base_table"."id" AS "id", "base_table"."path" AS "path", "base_table"."alias" AS "alias", "base_table"."langcode" AS "langcode" FROM "path_alias" "base_table" WHERE ("base_table"."status" = 1) AND ("base_table"."alias" LIKE "/recipes" ESCAPE \'\\\\\') AND ("base_table"."langcode" IN ("en", "und")) ORDER BY "base_table"."langcode" ASC, "base_table"."id" DESC',
@@ -226,7 +221,7 @@ protected function testNodePageWarmCache(): void {
    $this->assertSame($expected_queries, $recorded_queries);

    $expected = [
      'QueryCount' => 65,
      'QueryCount' => 60,
      'CacheGetCount' => 167,
      'CacheGetCountByBin' => [
        'page' => 1,