PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.7.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.7.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 / Tidb.php
matomo / app / core / Db / Schema Last commit date
Mariadb.php 8 months ago Mysql.php 6 months ago Tidb.php 8 months ago
Tidb.php
86 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 * @return bool
25 */
26 public function supportsComplexColumnUpdates() : bool
27 {
28 return \false;
29 }
30 public function getDefaultCollationForCharset(string $charset) : string
31 {
32 $collation = parent::getDefaultCollationForCharset($charset);
33 if ('utf8mb4' === $charset && 'utf8mb4_bin' === $collation) {
34 // replace the TiDB default "utf8mb4_bin" with a better default
35 return 'utf8mb4_0900_ai_ci';
36 }
37 return $collation;
38 }
39 public function getDefaultPort() : int
40 {
41 return 4000;
42 }
43 public function getTableCreateOptions() : string
44 {
45 $engine = $this->getTableEngine();
46 $charset = $this->getUsedCharset();
47 $collation = $this->getUsedCollation();
48 $rowFormat = $this->getTableRowFormat();
49 if ('utf8mb4' === $charset && '' === $collation) {
50 $collation = 'utf8mb4_0900_ai_ci';
51 }
52 $options = "ENGINE={$engine} DEFAULT CHARSET={$charset}";
53 if ('' !== $collation) {
54 $options .= " COLLATE={$collation}";
55 }
56 if ('' !== $rowFormat) {
57 $options .= " {$rowFormat}";
58 }
59 return $options;
60 }
61 public function isOptimizeInnoDBSupported() : bool
62 {
63 return \false;
64 }
65 public function optimizeTables(array $tables, bool $force = \false) : bool
66 {
67 // OPTIMIZE TABLE not supported for TiDb
68 return \false;
69 }
70 public function supportsSortingInSubquery() : bool
71 {
72 // TiDb optimizer removes all sorting from subqueries
73 return \false;
74 }
75 public function getSupportedReadIsolationTransactionLevel() : string
76 {
77 // TiDB doesn't support READ UNCOMMITTED
78 return 'READ COMMITTED';
79 }
80 public function hasReachedEOL() : bool
81 {
82 // ignore in EOL checks
83 return \false;
84 }
85 }
86