From 01407167253250ea59d29b90d574f7dcae25c615 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Fri, 29 Dec 2023 00:10:10 +0100 Subject: [PATCH] Add error message to match the behaviour Signed-off-by: Kamil Tekiela --- src/Table/Indexes.php | 6 ++++++ tests/classes/Table/IndexesTest.php | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Table/Indexes.php b/src/Table/Indexes.php index cd22adf816..e4489b6dee 100644 --- a/src/Table/Indexes.php +++ b/src/Table/Indexes.php @@ -162,6 +162,12 @@ final class Indexes } } + if ($index->getName() === 'PRIMARY') { + $this->error = Message::error( + __('Can\'t rename index to PRIMARY!'), + ); + } + return QueryGenerator::getSqlQueryForIndexRename( $db, $table, diff --git a/tests/classes/Table/IndexesTest.php b/tests/classes/Table/IndexesTest.php index cada27e4ba..d55c2ad589 100644 --- a/tests/classes/Table/IndexesTest.php +++ b/tests/classes/Table/IndexesTest.php @@ -48,7 +48,13 @@ class IndexesTest extends AbstractTestCase // Error message $index->setName('NOT PRIMARY'); // Cannot rename primary so the operation should fail $indexes->getSqlQueryForRename('PRIMARY', $index, Current::$database, Current::$table); - $this->assertInstanceOf(Message::class, $indexes->getError()); + $error = $indexes->getError(); + $this->assertInstanceOf(Message::class, $error); + + $index->setName('PRIMARY'); // The new name cannot be PRIMARY so the operation should fail + $indexes->getSqlQueryForRename('NOT PRIMARY', $index, Current::$database, Current::$table); + $error = $indexes->getError(); + $this->assertInstanceOf(Message::class, $error); } public function testGetSqlQueryForIndexCreateOrEdit(): void