From 3b38bc4e4e493c12ed15da0529703e513201d7d6 Mon Sep 17 00:00:00 2001 From: sarwar <88341752+p1xel007@users.noreply.github.com> Date: Sun, 4 Jan 2026 10:41:53 +0600 Subject: [PATCH 1/2] feat: Add charset and collation support to PostgreSQLDatabaseManager --- .../TenantDatabaseManagers/PostgreSQLDatabaseManager.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php b/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php index 4fff7202a..496ece87c 100644 --- a/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php +++ b/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php @@ -10,7 +10,11 @@ class PostgreSQLDatabaseManager extends TenantDatabaseManager { public function createDatabase(TenantWithDatabase $tenant): bool { - return $this->connection()->statement("CREATE DATABASE \"{$tenant->database()->getName()}\" WITH TEMPLATE=template0"); + $database = $tenant->database()->getName(); + $charset = $this->connection()->getConfig('charset'); + $collation = $this->connection()->getConfig('collation'); + + return $this->connection()->statement("CREATE DATABASE \"{$database}\" WITH TEMPLATE=template0 ENCODING='{$charset}' LC_COLLATE='{$collation}' LC_CTYPE='{$collation}'"); } public function deleteDatabase(TenantWithDatabase $tenant): bool From 3b0c1b0988ab2b9fe8de77792f7e0bf85a9c5b1b Mon Sep 17 00:00:00 2001 From: sarwar <88341752+p1xel007@users.noreply.github.com> Date: Sun, 4 Jan 2026 10:58:44 +0600 Subject: [PATCH 2/2] Ensure tenant DB charset is uppercase and database name is validated --- .../TenantDatabaseManagers/PostgreSQLDatabaseManager.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php b/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php index 496ece87c..6b2b465ec 100644 --- a/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php +++ b/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php @@ -11,10 +11,9 @@ class PostgreSQLDatabaseManager extends TenantDatabaseManager public function createDatabase(TenantWithDatabase $tenant): bool { $database = $tenant->database()->getName(); - $charset = $this->connection()->getConfig('charset'); - $collation = $this->connection()->getConfig('collation'); + $charset = strtoupper($this->connection()->getConfig('charset') ?? 'UTF8'); - return $this->connection()->statement("CREATE DATABASE \"{$database}\" WITH TEMPLATE=template0 ENCODING='{$charset}' LC_COLLATE='{$collation}' LC_CTYPE='{$collation}'"); + return $this->connection()->statement("CREATE DATABASE \"{$database}\" WITH TEMPLATE=template0 ENCODING='{$charset}'"); } public function deleteDatabase(TenantWithDatabase $tenant): bool