diff --git a/CHANGELOG.md b/CHANGELOG.md index be4058377..d8ac53d5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org). +# [4.3.1] - 2024-11-25 +### Added +* *Nothing* + +### Changed +* *Nothing* + +### Deprecated +* *Nothing* + +### Removed +* *Nothing* + +### Fixed +* [#2285](https://github.com/shlinkio/shlink/issues/2285) Fix performance degradation when using Microsoft SQL due to incorrect order of columns in `unique_short_code_plus_domain` index. + + ## [4.3.0] - 2024-11-24 ### Added * [#2159](https://github.com/shlinkio/shlink/issues/2159) Add support for PHP 8.4. diff --git a/composer.json b/composer.json index 6656c8eac..68f38f189 100644 --- a/composer.json +++ b/composer.json @@ -18,8 +18,7 @@ "ext-json": "*", "ext-mbstring": "*", "ext-pdo": "*", - "acelaya/crawler-detect": "^1.3", - "acelaya/ip-address-middleware": "^2.4", + "akrabat/ip-address-middleware": "^2.4", "cakephp/chronos": "^3.1", "doctrine/dbal": "^4.2", "doctrine/migrations": "^3.8", @@ -29,6 +28,7 @@ "geoip2/geoip2": "^3.0", "guzzlehttp/guzzle": "^7.9", "hidehalo/nanoid-php": "^2.0", + "jaybizzle/crawler-detect": "^1.3", "laminas/laminas-config-aggregator": "^1.15", "laminas/laminas-diactoros": "^3.5", "laminas/laminas-inputfilter": "^2.30", diff --git a/module/Core/migrations/Version20241125213106.php b/module/Core/migrations/Version20241125213106.php new file mode 100644 index 000000000..a51f143bd --- /dev/null +++ b/module/Core/migrations/Version20241125213106.php @@ -0,0 +1,28 @@ +skipIf(! $this->isMsSql()); + + // Recreate unique_short_code_plus_domain index in Microsoft SQL, as it accidentally has the columns defined in + // the wrong order after Version20230130090946 migration + $shortUrls = $schema->getTable('short_urls'); + $shortUrls->dropIndex('unique_short_code_plus_domain'); + $shortUrls->addUniqueIndex(['short_code', 'domain_id'], 'unique_short_code_plus_domain'); + } + + private function isMsSql(): bool + { + return $this->connection->getDatabasePlatform() instanceof SQLServerPlatform; + } +}