1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\ImportExport\Model\ResourceModel;
/**
* ImportExport MySQL resource helper model
*
* @api
* @since 100.0.2
*/
class Helper extends \Magento\Framework\DB\Helper
{
/**
* Constants to be used for DB
*/
const DB_MAX_PACKET_SIZE = 1048576;
// Maximal packet length by default in MySQL
const DB_MAX_PACKET_COEFFICIENT = 0.85;
// The coefficient of useful data from maximum packet length
/**
* @param \Magento\Framework\App\ResourceConnection $resource
* @param string $modulePrefix
*/
public function __construct(\Magento\Framework\App\ResourceConnection $resource, $modulePrefix = 'importexport')
{
parent::__construct($resource, $modulePrefix);
}
/**
* Returns maximum size of packet, that we can send to DB
*
* @return int
*/
public function getMaxDataSize()
{
$maxPacketData = $this->getConnection()->fetchRow('SHOW VARIABLES LIKE "max_allowed_packet"');
$maxPacket = empty($maxPacketData['Value']) ? self::DB_MAX_PACKET_SIZE : $maxPacketData['Value'];
return floor($maxPacket * self::DB_MAX_PACKET_COEFFICIENT);
}
/**
* Returns next autoincrement value for a table
*
* @param string $tableName Real table name in DB
* @return int
*/
public function getNextAutoincrement($tableName)
{
$connection = $this->getConnection();
$entityStatus = $connection->showTableStatus($tableName);
if (empty($entityStatus['Auto_increment'])) {
throw new \Magento\Framework\Exception\LocalizedException(__('Cannot get autoincrement value'));
}
return $entityStatus['Auto_increment'];
}
}