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