PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.13.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.13.0
5.13.0 5.12.1 5.12.0 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 6 days ago Mysql.php 1 month ago Tidb.php 1 month ago
Mariadb.php
76 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 $isEnterprise = \false !== strpos($currentVersion, 'enterprise');
56 // End of security update for certain MariaDb versions as of https://mariadb.org/about/#maintenance-policy
57 // Community Support for 10.6 LTS ends on 6th July 2026, Enterprise on 23rd August 2029
58 if (version_compare($currentVersion, '10.6', '>=') && version_compare($currentVersion, '10.7', '<') && Date::today()->isEarlier(Date::factory($isEnterprise ? '2029-08-24' : '2026-07-07'))) {
59 return \false;
60 }
61 // Support for 10.11 LTS ends on 16th February 2028
62 if (version_compare($currentVersion, '10.11', '>=') && version_compare($currentVersion, '10.12', '<') && Date::today()->isEarlier(Date::factory('2028-02-17'))) {
63 return \false;
64 }
65 // Community Support for 11.4 LTS ends on 29th May 2029, Enterprise on 16th January 2033
66 if (version_compare($currentVersion, '11.4', '>=') && version_compare($currentVersion, '11.5', '<') && Date::today()->isEarlier(Date::factory($isEnterprise ? '2033-01-17' : '2029-05-30'))) {
67 return \false;
68 }
69 // Support for all versions prior to 11.8 (not covered by conditions above) already ended
70 if (version_compare($currentVersion, '11.8', '<')) {
71 return \true;
72 }
73 return \false;
74 }
75 }
76