1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-23 23:47:37 +00:00
Files
matomo/core/Db/Schema/Tidb.php
Stefan Giehl e93d1fbc5c Implement EOL warning for used database version (#23429)
* Implement EOL warning for used database version

* Apply suggestions from code review

Co-authored-by: Michal Kleiner <michal@innocraft.com>

* fix check for aurora

---------

Co-authored-by: Michal Kleiner <michal@innocraft.com>
2025-07-16 19:45:01 +12:00

103 خطوط
2.4 KiB
PHP

<?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 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.
*
* @return bool
*/
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;
}
}