fix(ui): cache total count once across CSV export pagination (#40232)#40832
Open
lbajsarowicz wants to merge 1 commit into
Open
fix(ui): cache total count once across CSV export pagination (#40232)#40832lbajsarowicz wants to merge 1 commit into
lbajsarowicz wants to merge 1 commit into
Conversation
ConvertToCsv::getCsvFile() called \$searchResult->setTotalCount(\$totalCount) on the search result *after* getItems(). DataProvider::getSearchResult() delegates to Reporting::search() which builds a fresh collection per call, so the cached count was discarded between iterations and each page paid another getSelectCountSql() round trip. With pageSize=1 this scales to N count queries for an N-row export. Compute total count once before the loop, reuse the first search result for iteration 1, and seed the cached total on every subsequent fresh result via setTotalCount() so downstream getTotalCount() callers skip the redundant aggregate query. Fixes magento#40232
|
Hi @lbajsarowicz. Thank you for your contribution!
Allowed build names are:
You can find more information about the builds here For more details, review the Code Contributions documentation. |
Contributor
Author
|
@magento run all tests |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
ConvertToCsv::getCsvFile()called$searchResult->setTotalCount($totalCount)on the search result after
getItems().DataProvider::getSearchResult()delegates to
Reporting::search()which builds a fresh collection per call,so the cached count was discarded between iterations and each page paid
another
getSelectCountSql()round trip. WithpageSize=1this scales toN count queries for an N-row export.
Computed total count once before the loop, reused the first search result
for iteration 1, and seeded the cached total on every subsequent fresh
result via
setTotalCount()so downstreamgetTotalCount()callers skipthe redundant aggregate query.
Fixes #40232
Fixed Issues
Manual testing scenarios
$pageSizeinMagento\Ui\Model\Export\ConvertToCsv::__constructto 1 to amplify the issue.SLEEP(1)to the order grid count query (or profile with Xdebug/SPX).getSelectCountSqlcall. Before: one per page.Contribution checklist