PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Db / Schema / Mariadb.php
matomo / app / core / Db / Schema Last commit date
Mariadb.php 3 months ago Mysql.php 3 weeks ago Tidb.php 1 month ago
Mariadb.php
75 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Db\Schema;
10
11 use Piwik\Date;
12 /**
13 * Mariadb schema
14 */
15 class Mariadb extends \Piwik\Db\Schema\Mysql
16 {
17 protected $minimumSupportedVersion = '5.5';
18 public function getDatabaseType() : string
19 {
20 return 'MariaDB';
21 }
22 /**
23 * Adds a max_statement_time hint into a SELECT query if $limit is bigger than 0
24 *
25 * @param string $sql query to add hint to
26 * @param float $limit time limit in seconds
27 */
28 public function addMaxExecutionTimeHintToQuery(string $sql, float $limit) : string
29 {
30 if ($limit <= 0) {
31 return $sql;
32 }
33 $sql = trim($sql);
34 $pos = stripos($sql, 'SELECT');
35 $isMaxExecutionTimeoutAlreadyPresent = stripos($sql, 'max_statement_time=') !== \false;
36 if ($pos !== \false && !$isMaxExecutionTimeoutAlreadyPresent) {
37 $maxExecutionTimeHint = 'SET STATEMENT max_statement_time=' . ceil($limit) . ' FOR ';
38 $sql = substr_replace($sql, $maxExecutionTimeHint . 'SELECT', $pos, strlen('SELECT'));
39 }
40 return $sql;
41 }
42 public function isOptimizeInnoDBSupported() : bool
43 {
44 $version = strtolower($this->getVersion());
45 $semanticVersion = strstr($version, '-', $beforeNeedle = \true);
46 return version_compare($semanticVersion, '10.1.1', '>=');
47 }
48 public function supportsRankingRollupWithoutExtraSorting() : bool
49 {
50 return \false;
51 }
52 public function hasReachedEOL() : bool
53 {
54 $currentVersion = $this->getVersion();
55 // End of security update for certain MariaDb versions as of https://mariadb.org/about/#maintenance-policy
56 // Support for 10.6 LTS ends on 6th July 2026
57 if (version_compare($currentVersion, '10.6', '>=') && version_compare($currentVersion, '10.7', '<') && Date::today()->isEarlier(Date::factory('2026-07-07'))) {
58 return \false;
59 }
60 // Support for 10.11 LTS ends on 16th February 2028
61 if (version_compare($currentVersion, '10.11', '>=') && version_compare($currentVersion, '10.12', '<') && Date::today()->isEarlier(Date::factory('2028-02-17'))) {
62 return \false;
63 }
64 // Support for 11.4 LTS ends on 29th May 2029
65 if (version_compare($currentVersion, '11.4', '>=') && version_compare($currentVersion, '11.5', '<') && Date::today()->isEarlier(Date::factory('2029-05-30'))) {
66 return \false;
67 }
68 // Support for all versions prior to 11.8 (not covered by conditions above) already ended
69 if (version_compare($currentVersion, '11.8', '<')) {
70 return \true;
71 }
72 return \false;
73 }
74 }
75