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 !== '');