Bug #99244
openDataMapper uses a lot of memory when retrieving MM-relations in workspaces
0%
Description
For example in the EXT:news domain model. The getCategories() method of the news domain model uses a lot of memory when previewing a page with news records. More precisely this happens when there are a lot of categorized news records. The cause seems to be TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::getConstraint(). Without workspaces the resulting constraint within a getCategories() call will be "uid_foreign = $newsUid" (line 532). But in workspaces the relation IDs get resolved in another manner (line 498) and will then be used in the constraint "uid_local IN ($categoryUids)" (line 505).
So in the first case all categories of a news are retrieved. In the second case all relations to the categories of the actual news are retrieved. So something completely different. Let's say we have 20000 news records and all share the same 3 categories. Without workspaces the query will return 3 records. Inside of a workspace this query will return 60000 records or even more in case of workspace versions of news. The output in the preview seems correct in both cases so I guess the obsolete records get sorted out at a later stage.
Is the behavior of TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::getConstraint() intended or buggy?