PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.8.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.8.2
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 / Tidb.php
matomo / app / core / Db / Schema Last commit date
Mariadb.php 3 months ago Mysql.php 3 months ago Tidb.php 3 months ago
Tidb.php
85 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 /**
12 * Mariadb schema
13 */
14 class Tidb extends \Piwik\Db\Schema\Mysql
15 {
16 public function getDatabaseType() : string
17 {
18 return 'TiDb';
19 }
20 /**
21 * TiDB performs a sanity check before performing e.g. ALTER TABLE statements. If any of the used columns does not
22 * exist before the query fails. This also happens if the column would be added in the same query.
23 *
24 */
25 public function supportsComplexColumnUpdates() : bool
26 {
27 return \false;
28 }
29 public function getDefaultCollationForCharset(string $charset) : string
30 {
31 $collation = parent::getDefaultCollationForCharset($charset);
32 if ('utf8mb4' === $charset && 'utf8mb4_bin' === $collation) {
33 // replace the TiDB default "utf8mb4_bin" with a better default
34 return 'utf8mb4_0900_ai_ci';
35 }
36 return $collation;
37 }
38 public function getDefaultPort() : int
39 {
40 return 4000;
41 }
42 public function getTableCreateOptions() : string
43 {
44 $engine = $this->getTableEngine();
45 $charset = $this->getUsedCharset();
46 $collation = $this->getUsedCollation();
47 $rowFormat = $this->getTableRowFormat();
48 if ('utf8mb4' === $charset && '' === $collation) {
49 $collation = 'utf8mb4_0900_ai_ci';
50 }
51 $options = "ENGINE={$engine} DEFAULT CHARSET={$charset}";
52 if ('' !== $collation) {
53 $options .= " COLLATE={$collation}";
54 }
55 if ('' !== $rowFormat) {
56 $options .= " {$rowFormat}";
57 }
58 return $options;
59 }
60 public function isOptimizeInnoDBSupported() : bool
61 {
62 return \false;
63 }
64 public function optimizeTables(array $tables, bool $force = \false) : bool
65 {
66 // OPTIMIZE TABLE not supported for TiDb
67 return \false;
68 }
69 public function supportsSortingInSubquery() : bool
70 {
71 // TiDb optimizer removes all sorting from subqueries
72 return \false;
73 }
74 public function getSupportedReadIsolationTransactionLevel() : string
75 {
76 // TiDB doesn't support READ UNCOMMITTED
77 return 'READ COMMITTED';
78 }
79 public function hasReachedEOL() : bool
80 {
81 // ignore in EOL checks
82 return \false;
83 }
84 }
85