![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog/Model/Indexer/Product/Flat/Action/Rows/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Model\Indexer\Product\Flat\Action\Rows; use Magento\Framework\App\ResourceConnection; /** * Class TableData */ class TableData implements \Magento\Catalog\Model\Indexer\Product\Flat\TableDataInterface { /** * @var \Magento\Framework\DB\Adapter\AdapterInterface */ protected $_connection; /** * @var \Magento\Catalog\Helper\Product\Flat\Indexer */ protected $_productIndexerHelper; /** * @var \Magento\Framework\App\ResourceConnection */ protected $_resource; /** * @param \Magento\Framework\App\ResourceConnection $resource * @param \Magento\Catalog\Helper\Product\Flat\Indexer $productIndexerHelper */ public function __construct( \Magento\Framework\App\ResourceConnection $resource, \Magento\Catalog\Helper\Product\Flat\Indexer $productIndexerHelper ) { $this->_resource = $resource; $this->_productIndexerHelper = $productIndexerHelper; } /** * Move data from temporary tables to flat * * @param string $flatTable * @param string $flatDropName * @param string $temporaryFlatTableName * @return void */ public function move($flatTable, $flatDropName, $temporaryFlatTableName) { $connection = $this->_resource->getConnection(); if (!$connection->isTableExists($flatTable)) { $connection->dropTable($flatDropName); $connection->renameTablesBatch([['oldName' => $temporaryFlatTableName, 'newName' => $flatTable]]); $connection->dropTable($flatDropName); } else { $describe = $connection->describeTable($flatTable); $columns = $this->_productIndexerHelper->getFlatColumns(); $columns = array_keys(array_intersect_key($describe, $columns)); $select = $connection->select(); $select->from(['tf' => sprintf('%s_tmp_indexer', $flatTable)], $columns); $sql = $select->insertFromSelect($flatTable, $columns); $connection->query($sql); $connection->dropTable(sprintf('%s_tmp_indexer', $flatTable)); } } }