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