/** * 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); }
/** * 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); }
/** * @inheritdoc */ public function deleteBackup($documentName) { $backupTableName = self::BACKUP_DOCUMENT_PREFIX . $documentName; if ($this->resourceAdapter->isTableExists($backupTableName)) { $this->resourceAdapter->dropTable($backupTableName); } }
/** * 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); }
/** * 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); }
/** * @param AdapterInterface $connection * @param string $tableName * @return void */ private function dropTable(AdapterInterface $connection, $tableName) { if ($connection->isTableExists($tableName)) { $connection->dropTable($tableName); } }
/** * Cleanup DDL cache for the fixture table */ protected function tearDown() { $this->_connection->dropTable($this->_tableName); $this->_connection->resetDdlCache($this->_tableName); $this->_connection = null; }
/** * @param AdapterInterface $adapter * @param string $tableName * @return void */ private function dropTable(AdapterInterface $adapter, $tableName) { if ($adapter->isTableExists($tableName)) { $adapter->dropTable($tableName); } }