diff --git a/src/Sql/SqlPgsql.php b/src/Sql/SqlPgsql.php index 6355ca77ce..203f8fe769 100644 --- a/src/Sql/SqlPgsql.php +++ b/src/Sql/SqlPgsql.php @@ -92,12 +92,20 @@ public function createdb(bool $quoted = false): ?bool public function drop(array $tables): ?bool { - $return = true; if ($tables) { - $sql = 'DROP TABLE ' . implode(', ', $tables) . ' CASCADE'; - $return = $this->query($sql); + $return = $this->alwaysQuery('DROP SCHEMA public CASCADE'); + if ($return) { + $return = $this->alwaysQuery('CREATE SCHEMA public'); + } + if ($return) { + $dbSpec = $this->getDbSpec(); + $username = $dbSpec['username'] ?? 'public'; + $this->alwaysQuery("GRANT ALL ON SCHEMA public TO {$username}"); + $this->alwaysQuery('GRANT ALL ON SCHEMA public TO public'); + } + return $return; } - return $return; + return true; } public function createdbSql($dbname, $quoted = false): string