Ejemplo n.º 1
0
 /**
  * Drop changelog table
  *
  * @return void
  * @throws \Exception
  */
 public function drop()
 {
     $changelogTableName = $this->resource->getTableName($this->getName());
     if (!$this->connection->isTableExists($changelogTableName)) {
         throw new \Exception("Table {$changelogTableName} does not exist");
     }
     $this->connection->dropTable($changelogTableName);
 }
Ejemplo n.º 2
0
 /**
  * Drop changelog table
  *
  * @return void
  * @throws ChangelogTableNotExistsException
  */
 public function drop()
 {
     $changelogTableName = $this->resource->getTableName($this->getName());
     if (!$this->connection->isTableExists($changelogTableName)) {
         throw new ChangelogTableNotExistsException(new Phrase("Table %1 does not exist", [$changelogTableName]));
     }
     $this->connection->dropTable($changelogTableName);
 }
Ejemplo n.º 3
0
 /**
  * @inheritdoc
  */
 public function deleteBackup($documentName)
 {
     $backupTableName = self::BACKUP_DOCUMENT_PREFIX . $documentName;
     if ($this->resourceAdapter->isTableExists($backupTableName)) {
         $this->resourceAdapter->dropTable($backupTableName);
     }
 }
Ejemplo n.º 4
0
 /**
  * Drop temporary tables created by reindex process
  *
  * @param array $tablesList
  * @param int|string $storeId
  * @return void
  * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  */
 protected function _cleanOnFailure(array $tablesList, $storeId)
 {
     foreach ($tablesList as $table => $columns) {
         $this->_connection->dropTemporaryTable($table);
     }
     $tableName = $this->_getTemporaryTableName($this->_productIndexerHelper->getFlatTableName($storeId));
     $this->_connection->dropTable($tableName);
 }
Ejemplo n.º 5
0
 /**
  * Prepare flat table for store
  *
  * @param int|string $storeId
  * @return void
  * @throws \Magento\Framework\Exception\LocalizedException
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 protected function _createTemporaryFlatTable($storeId)
 {
     $columns = $this->_productIndexerHelper->getFlatColumns();
     $indexesNeed = $this->_productIndexerHelper->getFlatIndexes();
     $maxIndex = $this->_config->getValue(self::XML_NODE_MAX_INDEX_COUNT);
     if ($maxIndex && count($indexesNeed) > $maxIndex) {
         throw new \Magento\Framework\Exception\LocalizedException(__('The Flat Catalog module has a limit of %2$d filterable and/or sortable attributes.' . 'Currently there are %1$d of them.' . 'Please reduce the number of filterable/sortable attributes in order to use this module', count($indexesNeed), $maxIndex));
     }
     $indexKeys = [];
     $indexProps = array_values($indexesNeed);
     $upperPrimaryKey = strtoupper(\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_PRIMARY);
     foreach ($indexProps as $i => $indexProp) {
         $indexName = $this->_connection->getIndexName($this->_getTemporaryTableName($this->_productIndexerHelper->getFlatTableName($storeId)), $indexProp['fields'], $indexProp['type']);
         $indexProp['type'] = strtoupper($indexProp['type']);
         if ($indexProp['type'] == $upperPrimaryKey) {
             $indexKey = $upperPrimaryKey;
         } else {
             $indexKey = $indexName;
         }
         $indexProps[$i] = ['KEY_NAME' => $indexName, 'COLUMNS_LIST' => $indexProp['fields'], 'INDEX_TYPE' => strtolower($indexProp['type'])];
         $indexKeys[$i] = $indexKey;
     }
     $indexesNeed = array_combine($indexKeys, $indexProps);
     /** @var $table \Magento\Framework\DB\Ddl\Table */
     $table = $this->_connection->newTable($this->_getTemporaryTableName($this->_productIndexerHelper->getFlatTableName($storeId)));
     foreach ($columns as $fieldName => $fieldProp) {
         $columnLength = isset($fieldProp['length']) ? $fieldProp['length'] : null;
         $columnDefinition = ['nullable' => isset($fieldProp['nullable']) ? (bool) $fieldProp['nullable'] : false, 'unsigned' => isset($fieldProp['unsigned']) ? (bool) $fieldProp['unsigned'] : false, 'default' => isset($fieldProp['default']) ? $fieldProp['default'] : false, 'primary' => false];
         $columnComment = isset($fieldProp['comment']) ? $fieldProp['comment'] : $fieldName;
         $table->addColumn($fieldName, $fieldProp['type'], $columnLength, $columnDefinition, $columnComment);
     }
     foreach ($indexesNeed as $indexProp) {
         $table->addIndex($indexProp['KEY_NAME'], $indexProp['COLUMNS_LIST'], ['type' => $indexProp['INDEX_TYPE']]);
     }
     $table->setComment("Catalog Product Flat (Store {$storeId})");
     $this->_connection->dropTable($this->_getTemporaryTableName($this->_productIndexerHelper->getFlatTableName($storeId)));
     $this->_connection->createTable($table);
 }
Ejemplo n.º 6
0
 /**
  * @param AdapterInterface $connection
  * @param string $tableName
  * @return void
  */
 private function dropTable(AdapterInterface $connection, $tableName)
 {
     if ($connection->isTableExists($tableName)) {
         $connection->dropTable($tableName);
     }
 }
Ejemplo n.º 7
0
 /**
  * Cleanup DDL cache for the fixture table
  */
 protected function tearDown()
 {
     $this->_connection->dropTable($this->_tableName);
     $this->_connection->resetDdlCache($this->_tableName);
     $this->_connection = null;
 }
Ejemplo n.º 8
0
 /**
  * @param AdapterInterface $adapter
  * @param string $tableName
  * @return void
  */
 private function dropTable(AdapterInterface $adapter, $tableName)
 {
     if ($adapter->isTableExists($tableName)) {
         $adapter->dropTable($tableName);
     }
 }