25 private $allowedIndexMethods;
30 private $allowedEngines;
40 private $createdTableAdapters = [];
48 \
Magento\Framework\Math\Random $random,
49 $allowedIndexMethods = [],
52 $this->random = $random;
53 $this->allowedIndexMethods = $allowedIndexMethods;
54 $this->allowedEngines = $allowedEngines;
87 $indexMethod = self::INDEX_METHOD_HASH,
88 $dbEngine = self::DB_ENGINE_INNODB
90 if (!in_array($indexMethod, $this->allowedIndexMethods)) {
91 throw new \InvalidArgumentException(
92 sprintf(
'indexMethod must be one of %s', implode(
',', $this->allowedIndexMethods))
96 if (!in_array($dbEngine, $this->allowedEngines)) {
97 throw new \InvalidArgumentException(
98 sprintf(
'dbEngine must be one of %s', implode(
',', $this->allowedEngines))
102 $name = $this->random->getUniqueHash(
'tmp_select_');
104 $indexStatements = [];
105 foreach ($indexes as $indexName =>
$columns) {
106 $renderedColumns = implode(
',', array_map([
$adapter,
'quoteIdentifier'],
$columns));
108 $indexType = sprintf(
110 $adapter->quoteIdentifier($indexName),
114 if ($indexName ===
'PRIMARY') {
115 $indexType =
'PRIMARY KEY';
116 }
elseif (strpos($indexName,
'UNQ_') === 0) {
117 $indexType = sprintf(
'UNIQUE %s',
$adapter->quoteIdentifier($indexName));
120 $indexStatements[] = sprintf(
'%s(%s)', $indexType, $renderedColumns);
123 $statement = sprintf(
124 'CREATE TEMPORARY TABLE %s %s ENGINE=%s IGNORE (%s)',
126 $indexStatements ?
'(' . implode(
',', $indexStatements) .
')' :
'',
127 $adapter->quoteIdentifier($dbEngine),
156 if (!empty($this->createdTableAdapters)) {
157 if (isset($this->createdTableAdapters[
$name]) && !empty(
$name)) {
160 unset($this->createdTableAdapters[
$name]);
elseif(isset( $params[ 'redirect_parent']))
createFromSelect(Select $select, AdapterInterface $adapter, array $indexes=[], $indexMethod=self::INDEX_METHOD_HASH, $dbEngine=self::DB_ENGINE_INNODB)
__construct(\Magento\Framework\Math\Random $random, $allowedIndexMethods=[], $allowedEngines=[])
if(!isset($_GET['name'])) $name