From 98fe71abe6fee8d84d6c2b3b6f29330f0f777134 Mon Sep 17 00:00:00 2001 From: Ariful Alam Date: Sat, 16 Mar 2024 00:07:11 +0600 Subject: [PATCH] [Cache][Lock] Identify missing table in pgsql correctly and address failing integration tests --- src/Symfony/Component/Cache/Adapter/PdoAdapter.php | 4 ++-- src/Symfony/Component/Lock/Store/PdoStore.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Cache/Adapter/PdoAdapter.php b/src/Symfony/Component/Cache/Adapter/PdoAdapter.php index 1674850350921..a2a275b861314 100644 --- a/src/Symfony/Component/Cache/Adapter/PdoAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/PdoAdapter.php @@ -600,10 +600,10 @@ private function getServerVersion(): string private function isTableMissing(\PDOException $exception): bool { $driver = $this->driver; - $code = $exception->errorInfo ? $exception->errorInfo[1] : $exception->getCode(); + [$sqlState, $code] = $exception->errorInfo ?? [null, $exception->getCode()]; switch (true) { - case 'pgsql' === $driver && '42P01' === $code: + case 'pgsql' === $driver && '42P01' === $sqlState: case 'sqlite' === $driver && str_contains($exception->getMessage(), 'no such table:'): case 'oci' === $driver && 942 === $code: case 'sqlsrv' === $driver && 208 === $code: diff --git a/src/Symfony/Component/Lock/Store/PdoStore.php b/src/Symfony/Component/Lock/Store/PdoStore.php index ba4965b0057f9..70c69919737ec 100644 --- a/src/Symfony/Component/Lock/Store/PdoStore.php +++ b/src/Symfony/Component/Lock/Store/PdoStore.php @@ -330,10 +330,10 @@ private function getCurrentTimestampStatement(): string private function isTableMissing(\PDOException $exception): bool { $driver = $this->getDriver(); - $code = $exception->errorInfo ? $exception->errorInfo[1] : $exception->getCode(); + [$sqlState, $code] = $exception->errorInfo ?? [null, $exception->getCode()]; switch (true) { - case 'pgsql' === $driver && '42P01' === $code: + case 'pgsql' === $driver && '42P01' === $sqlState: case 'sqlite' === $driver && str_contains($exception->getMessage(), 'no such table:'): case 'oci' === $driver && 942 === $code: case 'sqlsrv' === $driver && 208 === $code: