|
Server : Apache System : Linux s1230 5.15.0-139-generic #149~20.04.1 SMP Tue Jul 14 11:21:49 UTC 2026 x86_64 User : p141464 ( 418825) PHP Version : 7.4.33.12 Disable Function : NONE Directory : /html/KMU-CSR-PLANER/wp-content/plugins/matomo/app/core/Db/Schema/ |
Upload File : |
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Db\Schema;
/**
* Mariadb schema
*/
class Tidb extends \Piwik\Db\Schema\Mysql
{
public function getDatabaseType() : string
{
return 'TiDb';
}
/**
* TiDB performs a sanity check before performing e.g. ALTER TABLE statements. If any of the used columns does not
* exist before the query fails. This also happens if the column would be added in the same query.
*
*/
public function supportsComplexColumnUpdates() : bool
{
return \false;
}
public function getDefaultCollationForCharset(string $charset) : string
{
$collation = parent::getDefaultCollationForCharset($charset);
if ('utf8mb4' === $charset && 'utf8mb4_bin' === $collation) {
// replace the TiDB default "utf8mb4_bin" with a better default
return 'utf8mb4_0900_ai_ci';
}
return $collation;
}
public function getDefaultPort() : int
{
return 4000;
}
public function getTableCreateOptions() : string
{
$engine = $this->getTableEngine();
$charset = $this->getUsedCharset();
$collation = $this->getUsedCollation();
$rowFormat = $this->getTableRowFormat();
if ('utf8mb4' === $charset && '' === $collation) {
$collation = 'utf8mb4_0900_ai_ci';
}
$options = "ENGINE={$engine} DEFAULT CHARSET={$charset}";
if ('' !== $collation) {
$options .= " COLLATE={$collation}";
}
if ('' !== $rowFormat) {
$options .= " {$rowFormat}";
}
return $options;
}
public function isOptimizeInnoDBSupported() : bool
{
return \false;
}
public function optimizeTables(array $tables, bool $force = \false) : bool
{
// OPTIMIZE TABLE not supported for TiDb
return \false;
}
public function supportsSortingInSubquery() : bool
{
// TiDb optimizer removes all sorting from subqueries
return \false;
}
public function getSupportedReadIsolationTransactionLevel() : string
{
// TiDB doesn't support READ UNCOMMITTED
return 'READ COMMITTED';
}
public function hasReachedEOL() : bool
{
// ignore in EOL checks
return \false;
}
}