Uninstall with purge won't clear all tables and indexes

-fixed
This commit is contained in:
Martin Konecny 2013-05-06 17:12:48 -04:00
parent 1895686c85
commit 582ddf7f40
2 changed files with 23 additions and 7 deletions

View File

@ -115,7 +115,7 @@ class AirtimeInstall
public static function DropSequence($p_sequenceName)
{
AirtimeInstall::InstallQuery("DROP SEQUENCE IF EXISTS $p_sequenceName");
AirtimeInstall::InstallQuery("DROP SEQUENCE IF EXISTS $p_sequenceName", false);
}
/**

View File

@ -51,10 +51,10 @@ $command = "su postgres -c \"dropdb ".$CC_CONFIG["dsn"]["database"]."\"";
// We do this if dropping the database fails above.
//------------------------------------------------------------------------
if ($dbDeleteFailed) {
echo " * Couldn't delete the database, so deleting all the DB tables...".PHP_EOL;
$connected = AirtimeInstall::DbConnect(false);
if ($connected) {
echo " * Couldn't delete the database, so deleting all the DB tables...".PHP_EOL;
$con = Propel::getConnection();
$sql = "select * from pg_tables where tableowner = 'airtime'";
try {
@ -67,11 +67,27 @@ if ($dbDeleteFailed) {
$tablename = $row["tablename"];
echo " * Removing database table $tablename...";
if (AirtimeInstall::DbTableExists($tablename)) {
$sql = "DROP TABLE $tablename CASCADE";
AirtimeInstall::InstallQuery($sql, false);
AirtimeInstall::DropSequence($tablename."_id");
}
$sql = "DROP TABLE $tablename CASCADE";
AirtimeInstall::InstallQuery($sql, false);
AirtimeInstall::DropSequence($tablename."_id");
echo "done.".PHP_EOL;
}
echo " * Deleting database sequences...".PHP_EOL;
$sql = "SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';";
try {
$rows = $con->query($sql)->fetchAll();
} catch (Exception $e) {
$rows = array();
}
foreach ($rows as $row) {
$sequence = $row["relname"];
echo " * Removing database sequence $sequence...";
$sql = "DROP SEQUENCE $sequence CASCADE";
AirtimeInstall::InstallQuery($sql, false);
echo "done.".PHP_EOL;
}
}