From 535902c8f3baaa012c5fe9be25c4baba044d084f Mon Sep 17 00:00:00 2001 From: WuYongJie <549727955@qq.com> Date: Wed, 9 Sep 2026 19:34:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8C=89=E6=95=B0=E5=80=BC=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E8=BF=98=E5=8E=9F=E6=B1=87=E6=80=BB=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...urierFreightReconciliationMirrorRepository.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/EcommerceFinance/Repositories/CourierFreightReconciliationMirrorRepository.php b/modules/EcommerceFinance/Repositories/CourierFreightReconciliationMirrorRepository.php index ee27d9b0..a366da48 100644 --- a/modules/EcommerceFinance/Repositories/CourierFreightReconciliationMirrorRepository.php +++ b/modules/EcommerceFinance/Repositories/CourierFreightReconciliationMirrorRepository.php @@ -230,7 +230,7 @@ class CourierFreightReconciliationMirrorRepository } foreach ($settings as $name => $value) { $previousSettings[$name] = $this->connection->selectOne('SELECT @@SESSION.' . $name . ' AS value')->value; - $this->connection->statement('SET SESSION ' . $name . '=?', [$value]); + $this->setSummarySessionSetting($name, $value); } } $asOf = now()->toDateTimeString(); @@ -243,7 +243,7 @@ class CourierFreightReconciliationMirrorRepository } finally { try { foreach (array_reverse($previousSettings, true) as $name => $value) { - $this->connection->statement('SET SESSION ' . $name . '=?', [$value]); + $this->setSummarySessionSetting($name, $value); } } finally { $lock->release(); @@ -251,6 +251,17 @@ class CourierFreightReconciliationMirrorRepository } } + private function setSummarySessionSetting(string $name, mixed $value): void + { + if ($name === 'optimizer_switch') { + $this->connection->statement('SET SESSION optimizer_switch=?', [$value]); + return; + } + // MariaDB rejects quoted numeric values for these session variables. + // Names come only from the fixed settings map above. + $this->connection->statement('SET SESSION ' . $name . '=' . (float) $value); + } + private function summaryCacheKey(array $filters): string { $filters = array_filter(array_map(static fn ($value): string => trim((string) $value), $filters), static fn (string $value): bool => $value !== '');