From 3c597dc22926db2b4f77a44015299500cfc338ed Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Thu, 9 Oct 2025 14:34:38 +0100 Subject: [PATCH] Fix warning when using roles in MariaDB Signed-off-by: Kamil Tekiela --- libraries/classes/DatabaseInterface.php | 6 +++--- phpstan-baseline.neon | 5 ----- psalm-baseline.xml | 8 +------- test/classes/DatabaseInterfaceTest.php | 2 +- 4 files changed, 5 insertions(+), 16 deletions(-) diff --git a/libraries/classes/DatabaseInterface.php b/libraries/classes/DatabaseInterface.php index 08c12c8959..761bb5600b 100644 --- a/libraries/classes/DatabaseInterface.php +++ b/libraries/classes/DatabaseInterface.php @@ -1806,7 +1806,7 @@ class DatabaseInterface implements DbalInterface if (! $hasGrantPrivilege) { foreach ($this->getCurrentRolesAndHost() as [$role, $roleHost]) { - $query = QueryGenerator::getInformationSchemaDataForGranteeRequest($role, $roleHost ?? '', $collation); + $query = QueryGenerator::getInformationSchemaDataForGranteeRequest($role, $roleHost, $collation); $result = $this->tryQuery($query); if ($result) { @@ -1865,7 +1865,7 @@ class DatabaseInterface implements DbalInterface if (! $hasCreatePrivilege) { foreach ($this->getCurrentRolesAndHost() as [$role, $roleHost]) { - $query = QueryGenerator::getInformationSchemaDataForCreateRequest($role, $roleHost ?? '', $collation); + $query = QueryGenerator::getInformationSchemaDataForCreateRequest($role, $roleHost, $collation); $result = $this->tryQuery($query); if ($result) { @@ -1919,7 +1919,7 @@ class DatabaseInterface implements DbalInterface $roles = $this->getCurrentRoles(); $this->currentRoleAndHost = array_map(static function (string $role) { - return explode('@', $role); + return str_contains($role, '@') ? explode('@', $role) : [$role, '']; }, $roles); } diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 850bb9e050..62e60fda60 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -15225,11 +15225,6 @@ parameters: count: 2 path: libraries/classes/DatabaseInterface.php - - - message: "#^Variable \\$roleHost on left side of \\?\\? always exists and is not nullable\\.$#" - count: 2 - path: libraries/classes/DatabaseInterface.php - - message: "#^Cannot call method escapeString\\(\\) on mixed\\.$#" count: 1 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index c6add47e70..73fa87c560 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -5684,10 +5684,8 @@ - + $this->extension === null - '' - '' $result_target[] @@ -5908,10 +5906,6 @@ $databases[$database_name]['SCHEMA_TABLES'] $databases[$database_name]['SCHEMA_TABLE_ROWS'] - - $roleHost - $roleHost - diff --git a/test/classes/DatabaseInterfaceTest.php b/test/classes/DatabaseInterfaceTest.php index 8d2722c697..b6fab1e98d 100644 --- a/test/classes/DatabaseInterfaceTest.php +++ b/test/classes/DatabaseInterfaceTest.php @@ -163,7 +163,7 @@ class DatabaseInterfaceTest extends AbstractTestCase [['role', 'localhost'], ['role2', 'localhost']], ], ['8.0.0 - MySQL Community Server - GPL', true, [['@`localhost`']], ['@localhost'], [['', 'localhost']]], - ['10.5.0-MariaDB', true, [['`role`@`localhost`']], ['role@localhost'], [['role', 'localhost']]], + ['10.5.0-MariaDB', true, [['`role`']], ['role'], [['role', '']]], [ '10.5.0-MariaDB', true,