From 334790ce2dea3e58705ad0c67ba73688b01c904c Mon Sep 17 00:00:00 2001 From: catch Date: Fri, 1 Jul 2022 14:17:54 +0100 Subject: [PATCH] Issue #3259671 by alexpott, _KASH_, Lendude: Slow query in titleQuery Vid.php --- .../node/src/Plugin/views/argument/Vid.php | 1 + ...ws.view.test_node_revision_id_argument.yml | 112 +++++++++--------- .../Views/ArgumentNodeRevisionIdTest.php | 5 +- 3 files changed, 61 insertions(+), 57 deletions(-) diff --git a/core/modules/node/src/Plugin/views/argument/Vid.php b/core/modules/node/src/Plugin/views/argument/Vid.php index 10109c43dd1..d6ec6e160ed 100644 --- a/core/modules/node/src/Plugin/views/argument/Vid.php +++ b/core/modules/node/src/Plugin/views/argument/Vid.php @@ -59,6 +59,7 @@ class Vid extends NumericArgument { ->accessCheck(FALSE) ->allRevisions() ->groupBy('title') + ->condition('vid', $this->value, 'IN') ->execute(); foreach ($results as $result) { diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_id_argument.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_id_argument.yml index e2ac01afd90..bf13bdfad00 100644 --- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_id_argument.yml +++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_node_revision_id_argument.yml @@ -13,45 +13,12 @@ base_table: node_field_data base_field: nid display: default: - display_plugin: default id: default display_title: Default + display_plugin: default position: 0 display_options: - access: - type: perm - options: - perm: 'access content' - cache: - type: tag - options: { } - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - replica: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Apply - reset_button: false - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: none - options: - items_per_page: null - offset: 0 - style: - type: default - row: - type: fields + title: test_node_revision_id_argument fields: title: id: title @@ -60,6 +27,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: title + plugin_id: field label: '' exclude: false alter: @@ -115,16 +85,30 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: node - entity_field: title - plugin_id: field - filters: { } - sorts: { } - title: test_node_revision_id_argument - header: { } - footer: { } + pager: + type: none + options: + offset: 0 + items_per_page: null + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: { } empty: { } - relationships: { } + sorts: { } arguments: vid: id: vid @@ -133,13 +117,16 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: vid + plugin_id: node_vid default_action: ignore exception: value: all title_enable: false title: All - title_enable: false - title: '' + title_enable: true + title: '{{ arguments.vid }}' default_argument_type: fixed default_argument_options: argument: '' @@ -147,8 +134,8 @@ display: summary_options: base_path: '' count: true - items_per_page: 25 override: false + items_per_page: 25 summary: sort_order: asc number_of_records: 0 @@ -160,38 +147,51 @@ display: validate_options: { } break_phrase: false not: false - entity_type: node - entity_field: vid - plugin_id: node_vid - display_extenders: { } + filters: { } filter_groups: operator: AND groups: { } + style: + type: default + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + header: { } + footer: { } + display_extenders: { } cache_metadata: + max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions - cacheable: false - max-age: -1 tags: { } + cacheable: false page_1: - display_plugin: page id: page_1 display_title: Page + display_plugin: page position: 1 display_options: display_extenders: { } path: test-revision-vid-argument cache_metadata: + max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions - cacheable: false - max-age: -1 tags: { } + cacheable: false diff --git a/core/modules/node/tests/src/Kernel/Views/ArgumentNodeRevisionIdTest.php b/core/modules/node/tests/src/Kernel/Views/ArgumentNodeRevisionIdTest.php index 4fb270be599..6ca404e8903 100644 --- a/core/modules/node/tests/src/Kernel/Views/ArgumentNodeRevisionIdTest.php +++ b/core/modules/node/tests/src/Kernel/Views/ArgumentNodeRevisionIdTest.php @@ -45,13 +45,16 @@ class ArgumentNodeRevisionIdTest extends ViewsKernelTestBase { NodeType::create(['type' => 'page', 'name' => 'page'])->save(); $node = Node::create(['type' => 'page', 'title' => 'test1', 'uid' => 1]); $node->save(); + $first_revision_id = $node->getRevisionId(); $node->setNewRevision(); $node->setTitle('test2'); $node->save(); + $second_revision_id = $node->getRevisionId(); $view_nid = Views::getView('test_node_revision_id_argument'); - $this->executeView($view_nid, [$node->getRevisionId()]); + $this->executeView($view_nid, [$second_revision_id]); $this->assertIdenticalResultset($view_nid, [['title' => 'test2']]); + $this->assertSame('test2', $view_nid->getTitle()); } }