Hi,

Here is a quick path that adds the handling of the new INPLACE parameter
for VACUUM. It uses the new VACUUM syntax because new parameters are
only available through it.

Comments?


-- 
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com
diff --git a/pgadmin/frm/frmMaintenance.cpp b/pgadmin/frm/frmMaintenance.cpp
index 0784850..8e6b5bc 100644
--- a/pgadmin/frm/frmMaintenance.cpp
+++ b/pgadmin/frm/frmMaintenance.cpp
@@ -29,11 +29,13 @@
 
 BEGIN_EVENT_TABLE(frmMaintenance, ExecutionDialog)
     EVT_RADIOBOX(XRCID("rbxAction"),    frmMaintenance::OnAction)
+    EVT_CHECKBOX(XRCID("chkFull"),      frmMaintenance::OnChange)
 END_EVENT_TABLE()
 
 #define nbNotebook              CTRL_NOTEBOOK("nbNotebook")
 #define rbxAction               CTRL_RADIOBOX("rbxAction")
 #define chkFull                 CTRL_CHECKBOX("chkFull")
+#define chkInPlace              CTRL_CHECKBOX("chkInPlace")
 #define chkFreeze               CTRL_CHECKBOX("chkFreeze")
 #define chkAnalyze              CTRL_CHECKBOX("chkAnalyze")
 #define chkVerbose              CTRL_CHECKBOX("chkVerbose")
@@ -106,6 +108,12 @@ void frmMaintenance::OnAction(wxCommandEvent& ev)
 
 
 
+void frmMaintenance::OnChange(wxCommandEvent &ev)
+{
+    chkInPlace->Enable(object->GetConnection()->BackendMinimumVersion(8, 5) && chkFull->GetValue());
+}
+
+
 wxString frmMaintenance::GetSql()
 {
     wxString sql;
@@ -116,14 +124,28 @@ wxString frmMaintenance::GetSql()
         {
             sql=wxT("VACUUM ");
 
-            if (chkFull->GetValue())
-                sql += wxT("FULL ");
-            if (chkFreeze->GetValue())
-                sql += wxT("FREEZE ");
-            if (chkVerbose->GetValue())
-                sql += wxT("VERBOSE ");
-            if (chkAnalyze->GetValue())
-                sql += wxT("ANALYZE ");
+            if (object->GetConnection()->BackendMinimumVersion(8, 5) && chkInPlace->GetValue())
+            {
+                sql += wxT("(FULL INPLACE");
+                if (chkFreeze->GetValue())
+                    sql += wxT(", FREEZE");
+                if (chkVerbose->GetValue())
+                    sql += wxT(", VERBOSE");
+                if (chkAnalyze->GetValue())
+                    sql += wxT(", ANALYZE");
+                sql += wxT(")");
+            }
+            else
+            {
+                if (chkFull->GetValue())
+                    sql += wxT("FULL ");
+                if (chkFreeze->GetValue())
+                    sql += wxT("FREEZE ");
+                if (chkVerbose->GetValue())
+                    sql += wxT("VERBOSE ");
+                if (chkAnalyze->GetValue())
+                    sql += wxT("ANALYZE ");
+            }
 
             if (object->GetMetaType() != PGM_DATABASE)
                 sql += object->GetQuotedFullIdentifier();
@@ -164,6 +186,9 @@ wxString frmMaintenance::GetSql()
 void frmMaintenance::Go()
 {
     chkFull->SetFocus();
+
+    chkInPlace->Enable(object->GetConnection()->BackendMinimumVersion(8, 5) && chkFull->GetValue());
+
     Show(true);
 }
 
diff --git a/pgadmin/include/frm/frmMaintenance.h b/pgadmin/include/frm/frmMaintenance.h
index e9e773f..0a63a73 100644
--- a/pgadmin/include/frm/frmMaintenance.h
+++ b/pgadmin/include/frm/frmMaintenance.h
@@ -28,6 +28,7 @@ public:
 private:
     wxString GetHelpPage() const;
     void OnAction(wxCommandEvent& ev);
+    void OnChange(wxCommandEvent& ev);
 
     DECLARE_EVENT_TABLE()
 };
diff --git a/pgadmin/ui/frmMaintenance.xrc b/pgadmin/ui/frmMaintenance.xrc
index 048ab00..41e2eb5 100644
--- a/pgadmin/ui/frmMaintenance.xrc
+++ b/pgadmin/ui/frmMaintenance.xrc
@@ -52,6 +52,13 @@
                       <border>4</border>
                     </object>
                     <object class="sizeritem">
+                      <object class="wxCheckBox" name="chkInPlace">
+                        <label>IN PLACE</label>
+                      </object>
+                      <flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
                       <object class="wxCheckBox" name="chkFreeze">
                         <label>FREEZE</label>
                       </object>
-- 
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

Reply via email to