From 33cea36b15c08c77ff00752bd18d821f285b0c63 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 25 Nov 2024 22:48:04 +0100 Subject: [PATCH] Fix columns order in unique_short_code_plus_domain index in MSSQL --- CHANGELOG.md | 17 +++++++++++ .../Core/migrations/Version20241125213106.php | 28 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 module/Core/migrations/Version20241125213106.php diff --git a/CHANGELOG.md b/CHANGELOG.md index be405837..5ef09752 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). +# [Unreleased] +### 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/module/Core/migrations/Version20241125213106.php b/module/Core/migrations/Version20241125213106.php new file mode 100644 index 00000000..a51f143b --- /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; + } +}