[ticket/11295] Drop tables rather than database for postgres in test suite.

Doing so allows:

1. User running the tests no longer needs create database privilege.
2. Test database may be located in a non-default tablespace and generally
have site-specific options applied to it.

PHPBB3-11295
This commit is contained in:
Oleg Pudeyev 2012-12-26 00:30:20 -05:00
parent c701de695f
commit 02a1777fcb

View file

@ -186,6 +186,16 @@ class phpbb_database_test_connection_manager
$this->purge_extras(); $this->purge_extras();
break; break;
case 'postgres':
$this->connect();
// Drop all of the tables
foreach ($this->get_tables() as $table)
{
$this->pdo->exec('DROP TABLE ' . $table . ' CASCADE');
}
$this->purge_extras();
break;
default: default:
$this->connect(false); $this->connect(false);
@ -293,7 +303,7 @@ class phpbb_database_test_connection_manager
protected function load_schema_from_file($directory) protected function load_schema_from_file($directory)
{ {
$schema = $this->dbms['SCHEMA']; $schema = $this->dbms['SCHEMA'];
if ($this->config['dbms'] == 'mysql') if ($this->config['dbms'] == 'mysql')
{ {
$sth = $this->pdo->query('SELECT VERSION() AS version'); $sth = $this->pdo->query('SELECT VERSION() AS version');
@ -313,7 +323,7 @@ class phpbb_database_test_connection_manager
$queries = file_get_contents($filename); $queries = file_get_contents($filename);
$sql = phpbb_remove_comments($queries); $sql = phpbb_remove_comments($queries);
$sql = split_sql_file($sql, $this->dbms['DELIM']); $sql = split_sql_file($sql, $this->dbms['DELIM']);
foreach ($sql as $query) foreach ($sql as $query)
@ -419,6 +429,19 @@ class phpbb_database_test_connection_manager
$queries[] = 'DROP SEQUENCE ' . current($row); $queries[] = 'DROP SEQUENCE ' . current($row);
} }
break; break;
case 'postgres':
$sql = 'SELECT sequence_name
FROM information_schema.sequences';
$result = $this->pdo->query($sql);
while ($row = $result->fetch(PDO::FETCH_NUM))
{
$queries[] = 'DROP SEQUENCE ' . current($row);
}
$queries[] = 'DROP TYPE IF EXISTS varchar_ci CASCADE';
break;
} }
foreach ($queries as $query) foreach ($queries as $query)