Skip to content

Commit 66f503d

Browse files
Merge branch '2.2-develop' of github.com:magento/magento2ce into 2.2-develop-update
2 parents 67fe733 + 4bffc3a commit 66f503d

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -656,25 +656,43 @@ protected function makeTempCategoryTreeIndex()
656656
*/
657657
protected function fillTempCategoryTreeIndex($temporaryName)
658658
{
659-
// This finds all children (cc2) that descend from a parent (cc) by path.
660-
// For example, cc.path may be '1/2', and cc2.path may be '1/2/3/4/5'.
661-
$temporarySelect = $this->connection->select()->from(
662-
['cc' => $this->getTable('catalog_category_entity')],
663-
['parent_id' => 'entity_id']
664-
)->joinInner(
665-
['cc2' => $this->getTable('catalog_category_entity')],
666-
'cc2.path LIKE ' . $this->connection->getConcatSql(
667-
[$this->connection->quoteIdentifier('cc.path'), $this->connection->quote('/%')]
668-
),
669-
['child_id' => 'entity_id']
670-
);
659+
$offset = 0;
660+
$limit = 500;
671661

672-
$this->connection->query(
673-
$temporarySelect->insertFromSelect(
674-
$temporaryName,
675-
['parent_id', 'child_id']
676-
)
677-
);
662+
$categoryTable = $this->getTable('catalog_category_entity');
663+
664+
$categoriesSelect = $this->connection->select()
665+
->from(
666+
['c' => $categoryTable],
667+
['entity_id', 'path']
668+
)->limit($limit, $offset);
669+
670+
$categories = $this->connection->fetchAll($categoriesSelect);
671+
672+
while ($categories) {
673+
$values = [];
674+
675+
foreach ($categories as $category) {
676+
foreach (explode('/', $category['path']) as $parentId) {
677+
if ($parentId !== $category['entity_id']) {
678+
$values[] = [$parentId, $category['entity_id']];
679+
}
680+
}
681+
}
682+
683+
if (count($values) > 0) {
684+
$this->connection->insertArray($temporaryName, ['parent_id', 'child_id'], $values);
685+
}
686+
687+
$offset += $limit;
688+
$categoriesSelect = $this->connection->select()
689+
->from(
690+
['c' => $categoryTable],
691+
['entity_id', 'path']
692+
)->limit($limit, $offset);
693+
694+
$categories = $this->connection->fetchAll($categoriesSelect);
695+
}
678696
}
679697

680698
/**

0 commit comments

Comments
 (0)