Add ALTER DATABASE SET TABLESPACE support (8.4) and re-adds ALTER DATABASE RENAME...
authorguillaume <guillaume@a7884b65-44f6-0310-8a51-81a127f17b15>
Fri, 14 Nov 2008 21:40:26 +0000 (21:40 +0000)
committerguillaume <guillaume@a7884b65-44f6-0310-8a51-81a127f17b15>
Fri, 14 Nov 2008 21:40:26 +0000 (21:40 +0000)
git-svn-id: svn://svn.pgadmin.org/trunk/pgadmin3@7498 a7884b65-44f6-0310-8a51-81a127f17b15

CHANGELOG
pgadmin/dlg/dlgDatabase.cpp
pgadmin/dlg/dlgProperty.cpp
pgadmin/include/dlg/dlgDatabase.h
pgadmin/include/dlg/dlgProperty.h

index d5ff94f855007af553a99170369334f92cec4fad..282e453ec1dd16b5282131016de5b5bc59d24c1c 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -36,6 +36,8 @@ Changes
 \r
 Date       Dev Ver    Change details\r
 ---------- --- -----  --------------\r
+2008-11-14 GL  1.9.0  Add ALTER DATABASE SET TABLESPACE support (8.4)\r
+                      and re-adds ALTER DATABASE RENAME TO support.\r
 2008-11-07 DP  1.9.0  Fix the index UI to handle columns with commas in the\r
                       name [Quan Zongliang]\r
 2008-11-04 DP  1.9.0  Remove the un-maintained Tip of the Day feature [Ashesh \r
index 302bde2ab25198c76807cb7691544ba7d15922ff..823728de3abb486b4acbf2dcf0010010b37c826a 100644 (file)
@@ -139,9 +139,7 @@ int dlgDatabase::Go(bool modal)
     {
         // edit mode
 
-               // Even with 7.4+, we don't currently have a way to change the database name
-               // as it must be done from a different database.
-        // if (!connection->BackendMinimumVersion(7, 4))
+        if (!connection->BackendMinimumVersion(7, 4))
             txtName->Disable();
 
         if (!connection->BackendMinimumVersion(8, 0))
@@ -165,7 +163,10 @@ int dlgDatabase::Go(bool modal)
         }
 
         PrepareTablespace(cbTablespace, database->GetTablespaceOid());
-               cbTablespace->Disable();
+               if (connection->BackendMinimumVersion(8, 4))
+                   cbTablespace->Enable();
+               else
+                   cbTablespace->Disable();
         txtPath->SetValue(database->GetPath());
         txtPath->Disable();
 
@@ -311,6 +312,7 @@ void dlgDatabase::CheckChange()
                || txtComment->GetValue() != database->GetComment()
                           || txtName->GetValue() != database->GetName()
                || cbOwner->GetValue() != database->GetOwner()
+               || cbTablespace->GetValue() != database->GetTablespace()
                           || dirtyVars;
     }
 
@@ -428,6 +430,15 @@ wxString dlgDatabase::GetSql()
 
         AppendComment(sql, wxT("DATABASE"), 0, database);
 
+        if (connection->BackendMinimumVersion(8, 4))
+        {
+            if (cbTablespace->GetCurrentSelection() > 0 && cbTablespace->GetOIDKey() > 0
+                && cbTablespace->GetOIDKey() != database->GetTablespaceOid())
+               sql += wxT("ALTER DATABASE ") + qtIdent(name)
+                    +  wxT(" SET TABLESPACE ") + qtIdent(cbTablespace->GetValue())
+                    +  wxT(";\n");
+        }
+
         if (!connection->BackendMinimumVersion(8, 2))
             sql += GetGrant(wxT("CT"), wxT("DATABASE ") + qtIdent(name));
         else
@@ -528,4 +539,9 @@ wxString dlgDatabase::GetSql2()
     return sql;
 }
 
-
+bool dlgDatabase::GetDisconnectFirst()
+{
+    if (database)
+      return true;
+    return false;
+}
index 91083ba96ff434bd017768b831bdf4e826861da6..9a9faa6adb4b7c5a2fe0610ec96a2ef8f0fab6a6 100644 (file)
@@ -763,6 +763,14 @@ void dlgProperty::ShowObject()
 
 bool dlgProperty::apply(const wxString &sql, const wxString &sql2)
 {
+       pgConn *myConn = connection;
+
+    if (GetDisconnectFirst())
+    {
+               myConn = database->GetServer()->GetConnection();
+       database->Disconnect();
+    }
+
     if (!sql.IsEmpty())
     {
         wxString tmp;
@@ -788,7 +796,7 @@ bool dlgProperty::apply(const wxString &sql, const wxString &sql2)
         else
             tmp = sql;
 
-        if (!connection->ExecuteVoid(tmp))
+        if (!myConn->ExecuteVoid(tmp))
         {
             // error message is displayed inside ExecuteVoid
             return false;
@@ -826,7 +834,7 @@ bool dlgProperty::apply(const wxString &sql, const wxString &sql2)
         else
             tmp = sql2;
 
-        if (!connection->ExecuteVoid(tmp))
+        if (!myConn->ExecuteVoid(tmp))
         {
             // error message is displayed inside ExecuteVoid
             // Warn the user about partially applied changes, but don't bail out. 
@@ -883,7 +891,7 @@ void dlgProperty::OnOK(wxCommandEvent &ev)
         EndModal(0);
         return;
     }
-
+    
     wxString sql;
     wxString sql2;
     if (chkReadOnly->GetValue())
index 00caaec5655e3246ee2aa6856579438facea7569..dd12cafe9e71b79846274494904ece0f15eef688 100644 (file)
@@ -26,6 +26,7 @@ public:
     void CheckChange();
     wxString GetSql();
     wxString GetSql2();
+    bool GetDisconnectFirst();
     pgObject *CreateObject(pgCollection *collection);
     pgObject *GetObject();
     wxString GetHelpPage() const;
index 4f039fc54d3c7396b42951e6994c851100121751..d64663ee22a70fc741f58ad958c0ae36e5cdb249 100644 (file)
@@ -41,6 +41,7 @@ public:
 
     virtual wxString GetSql() =0;
     virtual wxString GetSql2() { return wxEmptyString; };
+    virtual bool GetDisconnectFirst() { return false; };
     virtual pgObject *CreateObject(pgCollection *collection) =0;
     virtual pgObject *GetObject() =0;
     virtual void SetObject(pgObject *obj) {} // only necessary if apply is implemented