Index: include/schema/pgTable.h
===================================================================
--- include/schema/pgTable.h	(revision 7602)
+++ include/schema/pgTable.h	(working copy)
@@ -118,6 +118,8 @@
     void iSetAutoVacuumFreezeMaxAge(const wxString& s) { custom_autovacuum_enabled |= !s.IsEmpty(); autovacuum_freeze_max_age = s; }
     wxString GetAutoVacuumFreezeTableAge() { return autovacuum_freeze_table_age; }
     void iSetAutoVacuumFreezeTableAge(const wxString& s) { custom_autovacuum_enabled |= !s.IsEmpty(); autovacuum_freeze_table_age = s; }
+    void iSetHasToastTable(bool b) { hasToastTable = b; }
+    bool GetHasToastTable() { return hasToastTable; }
 
     bool HasStats() { return true; }
     bool HasDepends() { return true; }
@@ -148,7 +150,7 @@
              autovacuum_vacuum_cost_limit, autovacuum_freeze_min_age,
              autovacuum_freeze_max_age, autovacuum_freeze_table_age;
     bool hasOids, hasSubclass, rowsCounted, isReplicated, showExtendedStatistics;
-    bool autovacuum_enabled, custom_autovacuum_enabled;
+    bool autovacuum_enabled, custom_autovacuum_enabled, hasToastTable;
     long inheritedTableCount;
     wxString quotedInheritedTables, inheritedTables, primaryKey, quotedPrimaryKey,
              primaryKeyName, primaryKeyColNumbers, tablespace;
Index: include/dlg/dlgTable.h
===================================================================
--- include/dlg/dlgTable.h	(revision 7602)
+++ include/dlg/dlgTable.h	(working copy)
@@ -77,6 +77,12 @@
     double settingVacFactor, settingAnlFactor;
     double tableVacFactor, tableAnlFactor;
 
+    /* Toast Table */
+    bool toastTableVacEnabled, toastTableHasVacuum;
+    long toastTableVacBaseThr, toastTableAnlBaseThr, toastTableCostDelay, toastTableCostLimit,
+         toastTableFreezeMinAge, toastTableFreezeMaxAge, toastTableFreezeTableAge;
+    double toastTableVacFactor, toastTableAnlFactor;
+
     DECLARE_EVENT_TABLE()
 };
 
Index: schema/pgTable.cpp
===================================================================
--- schema/pgTable.cpp	(revision 7602)
+++ schema/pgTable.cpp	(working copy)
@@ -987,16 +987,17 @@
             query += wxT(", substring(array_to_string(reloptions, ',') from 'fillfactor=([0-9]*)') AS fillfactor \n");
         if (collection->GetConnection()->BackendMinimumVersion(8, 4))
         {
-            query += wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') AS autovacuum_enabled \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.][0-9]*)') AS autovacuum_vacuum_scale_factor \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS autovacuum_analyze_threshold \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.][0-9]*)') AS autovacuum_analyze_scale_factor \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS autovacuum_vacuum_cost_delay \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS autovacuum_vacuum_cost_limit \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS autovacuum_freeze_min_age \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS autovacuum_freeze_max_age \n")
-                     wxT(", substring(array_to_string(reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS autovacuum_freeze_table_age \n");
+            query += wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') AS autovacuum_enabled \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.][0-9]*)') AS autovacuum_vacuum_scale_factor \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS autovacuum_analyze_threshold \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.][0-9]*)') AS autovacuum_analyze_scale_factor \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS autovacuum_vacuum_cost_delay \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS autovacuum_vacuum_cost_limit \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS autovacuum_freeze_min_age \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS autovacuum_freeze_max_age \n")
+                     wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS autovacuum_freeze_table_age \n")
+                     wxT(", (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable\n");
         }
 
         query += wxT("  FROM pg_class rel\n")
@@ -1065,6 +1066,7 @@
                 table->iSetAutoVacuumFreezeMinAge(tables->GetVal(wxT("autovacuum_freeze_min_age")));
                 table->iSetAutoVacuumFreezeMaxAge(tables->GetVal(wxT("autovacuum_freeze_max_age")));
                 table->iSetAutoVacuumFreezeTableAge(tables->GetVal(wxT("autovacuum_freeze_table_age")));
+                table->iSetHasToastTable(tables->GetBool(wxT("hastoasttable")));
             }
             table->iSetHasSubclass(tables->GetBool(wxT("relhassubclass")));
             table->iSetPrimaryKeyName(tables->GetVal(wxT("conname")));
Index: dlg/dlgTable.cpp
===================================================================
--- dlg/dlgTable.cpp	(revision 7602)
+++ dlg/dlgTable.cpp	(working copy)
@@ -51,6 +51,8 @@
 #define cbConstrType    CTRL_COMBOBOX("cbConstrType")
 #define btnRemoveConstr CTRL_BUTTON("btnRemoveConstr")
 
+/* AutoVacuum Settings */
+#define nbVaccum            CTRL_NOTEBOOK("nbVacuum")
 #define chkCustomVac        CTRL_CHECKBOX("chkCustomVac")
 #define chkVacEnabled       CTRL_CHECKBOX("chkVacEnabled")
 #define txtBaseVac          CTRL_TEXT("txtBaseVac")
@@ -72,6 +74,29 @@
 #define txtFreezeTableAge   CTRL_TEXT("txtFreezeTableAge")
 #define stFreezeTableAgeCurr CTRL_STATIC("stFreezeTableAgeCurr")
 
+/* TOAST TABLE AutoVacuum Settings */
+#define chkCustomToastVac         CTRL_CHECKBOX("chkCustomToastVac")
+#define chkToastVacEnabled        CTRL_CHECKBOX("chkToastVacEnabled")
+#define txtBaseToastVac           CTRL_TEXT("txtBaseToastVac")
+#define stBaseToastVacCurr        CTRL_STATIC("stBaseToastVacCurr")
+#define txtBaseToastAn            CTRL_TEXT("txtBaseToastAn")
+#define stBaseToastAnCurr         CTRL_STATIC("stBaseToastAnCurr")
+#define txtFactorToastVac         CTRL_TEXT("txtFactorToastVac")
+#define stFactorToastVacCurr      CTRL_STATIC("stFactorToastVacCurr")
+#define txtFactorToastAn          CTRL_TEXT("txtFactorToastAn")
+#define stFactorToastAnCurr       CTRL_STATIC("stFactorToastAnCurr")
+#define txtToastVacDelay          CTRL_TEXT("txtToastVacDelay")
+#define stToastVacDelayCurr       CTRL_STATIC("stToastVacDelayCurr")
+#define txtToastVacLimit          CTRL_TEXT("txtToastVacLimit")
+#define stToastVacLimitCurr       CTRL_STATIC("stToastVacLimitCurr")
+#define txtToastFreezeMinAge      CTRL_TEXT("txtToastFreezeMinAge")
+#define stToastFreezeMinAgeCurr   CTRL_STATIC("stToastFreezeMinAgeCurr")
+#define txtToastFreezeMaxAge      CTRL_TEXT("txtToastFreezeMaxAge")
+#define stToastFreezeMaxAgeCurr   CTRL_STATIC("stToastFreezeMaxAgeCurr")
+#define txtToastFreezeTableAge    CTRL_TEXT("txtToastFreezeTableAge")
+#define stToastFreezeTableAgeCurr CTRL_STATIC("stToastFreezeTableAgeCurr")
+
+
 BEGIN_EVENT_TABLE(dlgTable, dlgSecurityProperty)
     EVT_CHECKBOX(XRCID("chkHasOids"),               dlgProperty::OnChange)
     EVT_TEXT(XRCID("cbTablespace"),                 dlgProperty::OnChange)
@@ -91,6 +116,7 @@
     EVT_BUTTON(XRCID("btnRemoveConstr"),            dlgTable::OnRemoveConstr)
     EVT_LIST_ITEM_SELECTED(XRCID("lstConstraints"), dlgTable::OnSelChangeConstr)
 
+    /* AutoVacuum Settings */
     EVT_CHECKBOX(XRCID("chkCustomVac"),             dlgTable::OnChangeVacuum)
     EVT_CHECKBOX(XRCID("chkVacEnabled"),            dlgTable::OnChangeVacuum)
     EVT_TEXT(XRCID("txtBaseVac"),                   dlgTable::OnChangeVacuum)
@@ -103,6 +129,19 @@
     EVT_TEXT(XRCID("txtFreezeMaxAge"),              dlgTable::OnChangeVacuum)
     EVT_TEXT(XRCID("txtFreezeTableAge"),            dlgTable::OnChangeVacuum)
 
+    /* TOAST TABLE AutoVacuum Settings */
+    EVT_CHECKBOX(XRCID("chkCustomToastVac"),            dlgTable::OnChangeVacuum)
+    EVT_CHECKBOX(XRCID("chkToastVacEnabled"),           dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtBaseToastVac"),                  dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtBaseToastAn"),                   dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtFactorToastVac"),                dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtFactorToastAn"),                 dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtToastVacDelay"),                 dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtToastVacLimit"),                 dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtToastFreezeMinAge"),             dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtToastFreezeMaxAge"),             dlgTable::OnChangeVacuum)
+    EVT_TEXT(XRCID("txtToastFreezeTableAge"),           dlgTable::OnChangeVacuum)
+
     EVT_BUTTON(wxID_OK,                             dlgTable::OnOK)
 
 #ifdef __WXMAC__
@@ -359,9 +398,25 @@
         txtFreezeMinAge->SetValidator(numericValidator);
         txtFreezeMaxAge->SetValidator(numericValidator);
         if (connection->BackendMinimumVersion(8,4))
+        {
             txtFreezeTableAge->SetValidator(numericValidator);
+
+            txtBaseToastVac->SetValidator(numericValidator);
+            txtBaseToastAn->SetValidator(numericValidator);
+            txtFactorToastVac->SetValidator(numericValidator);
+            txtFactorToastAn->SetValidator(numericValidator);
+            txtToastVacDelay->SetValidator(numericValidator);
+            txtToastVacLimit->SetValidator(numericValidator);
+            txtToastFreezeMinAge->SetValidator(numericValidator);
+            txtToastFreezeMaxAge->SetValidator(numericValidator);
+            txtToastFreezeTableAge->SetValidator(numericValidator);
+        }
         else
+        {
             txtFreezeTableAge->Disable();
+            /* Remove Toast Table AutoVacuume setting page */
+            nbVaccum->DeletePage(1);
+        }
 
         settingAutoVacuum = false;
 
@@ -414,6 +469,19 @@
         tableAnlFactor = -1;
         tableFreezeTableAge = -1;
 
+        toastTableVacBaseThr = -1;
+        toastTableAnlBaseThr = -1;
+        toastTableCostDelay = -1;
+        toastTableCostLimit = -1;
+        toastTableFreezeMinAge = -1;
+        toastTableFreezeMaxAge = -1;
+        toastTableVacFactor = -1;
+        toastTableAnlFactor = -1;
+        toastTableFreezeTableAge = -1;
+
+        toastTableHasVacuum = false;
+        toastTableVacEnabled = false;
+
         if (!connection->BackendMinimumVersion(8,4))
         {
             pgSetIterator set(connection, wxT("SELECT * FROM pg_autovacuum WHERE vacrelid=") + table->GetOidStr());
@@ -467,6 +535,76 @@
 
             hasVacuum = table->GetCustomAutoVacuumEnabled();
             chkVacEnabled->SetValue(hasVacuum ? tableVacEnabled : settingAutoVacuum);
+
+            toastTableVacEnabled = false;
+
+            if (connection->BackendMinimumVersion(8,4))
+            {
+                if (!table->GetHasToastTable())
+                {
+                nbVaccum->GetPage(1)->Enable(false);
+                }
+                else
+                {
+                    pgSet *set = connection->ExecuteSet(
+                        wxT("SELECT \n")
+                        wxT("  substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_enabled=([a-z|0-9]*)') AS autovacuum_enabled \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_threshold=([0-9]*)') AS autovacuum_vacuum_threshold \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_scale_factor=([0-9]*[.][0-9]*)') AS autovacuum_vacuum_scale_factor \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_threshold=([0-9]*)') AS autovacuum_analyze_threshold \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_analyze_scale_factor=([0-9]*[.][0-9]*)') AS autovacuum_analyze_scale_factor \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_delay=([0-9]*)') AS autovacuum_vacuum_cost_delay \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_vacuum_cost_limit=([0-9]*)') AS autovacuum_vacuum_cost_limit \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_min_age=([0-9]*)') AS autovacuum_freeze_min_age \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_max_age=([0-9]*)') AS autovacuum_freeze_max_age \n")
+                        wxT(", substring(array_to_string(rel.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS autovacuum_freeze_table_age \n")
+                        wxT(", rel.reloptions AS hasautovacuum \n")
+                        wxT("FROM pg_catalog.pg_class rel \n")
+                        wxT("WHERE rel.oid=(SELECT org_tbl.reltoastrelid FROM pg_catalog.pg_class org_tbl WHERE org_tbl.oid=")
+                        + table->GetOidStr() + wxT(")"));
+
+                    if (set)
+                    {
+                        wxString val;
+
+                        val = set->GetVal(wxT("hasautovacuum"));
+                        if (!val.IsEmpty())
+                            toastTableHasVacuum = true;
+
+                        if (toastTableHasVacuum)
+                        {
+                            toastTableVacEnabled = set->GetBool(wxT("autovacuum_enabled"));
+                            val = set->GetVal(wxT("autovacuum_vacuum_threshold"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableVacBaseThr);
+                            val = set->GetVal(wxT("autovacuum_vacuum_scale_factor"));
+                            if (!val.IsEmpty())
+                                val.ToDouble(&toastTableVacFactor);
+                            val = set->GetVal(wxT("autovacuum_analyze_threshold"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableAnlBaseThr);
+                            val = set->GetVal(wxT("autovacuum_analyze_scale_factor"));
+                            if (!val.IsEmpty())
+                                val.ToDouble(&toastTableAnlFactor);
+                            val = set->GetVal(wxT("autovacuum_vacuum_cost_delay"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableCostDelay);
+                            val = set->GetVal(wxT("autovacuum_vacuum_cost_limit"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableCostLimit);
+                            val = set->GetVal(wxT("autovacuum_freeze_min_age"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableFreezeMinAge);
+                            val = set->GetVal(wxT("autovacuum_freeze_max_age"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableFreezeMaxAge);
+                            val = set->GetVal(wxT("autovacuum_freeze_table_age"));
+                            if (!val.IsEmpty())
+                                val.ToLong(&toastTableFreezeTableAge);
+                        }
+                    }
+                }
+            }
         }
         else
         {
@@ -522,6 +660,54 @@
                 txtFreezeTableAge->SetValue(NumToStr(tableFreezeTableAge));
             else
                 txtFreezeTableAge->SetValue(wxEmptyString);
+
+            if (toastTableVacBaseThr >= 0)
+                txtBaseToastVac->SetValue(NumToStr(toastTableVacBaseThr));
+            else
+                txtBaseToastVac->SetValue(wxEmptyString);
+    
+            if (toastTableAnlBaseThr >= 0)
+                txtBaseToastAn->SetValue(NumToStr(toastTableAnlBaseThr));
+            else
+                txtBaseToastAn->SetValue(wxEmptyString);
+    
+            if (toastTableVacFactor >= 0)
+                txtFactorToastVac->SetValue(NumToStr(toastTableVacFactor));
+            else
+                txtFactorToastVac->SetValue(wxEmptyString);
+    
+            if (toastTableAnlFactor >= 0)
+                txtFactorToastAn->SetValue(NumToStr(toastTableAnlFactor));
+            else
+              txtFactorToastAn->SetValue(wxEmptyString);
+    
+            if (toastTableCostDelay >= 0)
+                txtToastVacDelay->SetValue(NumToStr(toastTableCostDelay));
+            else
+                txtToastVacDelay->SetValue(wxEmptyString);
+    
+            if (toastTableCostLimit >= 0)
+                txtToastVacLimit->SetValue(NumToStr(toastTableCostLimit));
+            else
+                txtToastVacLimit->SetValue(wxEmptyString);
+    
+            if (toastTableFreezeMinAge >= 0)
+                txtToastFreezeMinAge->SetValue(NumToStr(toastTableFreezeMinAge));
+            else
+                txtToastFreezeMinAge->SetValue(wxEmptyString);
+
+            if (toastTableFreezeMaxAge >= 0)
+                txtToastFreezeMaxAge->SetValue(NumToStr(toastTableFreezeMaxAge));
+            else
+                txtToastFreezeMaxAge->SetValue(wxEmptyString);
+   
+            if (toastTableFreezeTableAge >= 0)
+                txtToastFreezeTableAge->SetValue(NumToStr(toastTableFreezeTableAge));
+            else
+                txtToastFreezeTableAge->SetValue(wxEmptyString);
+
+            chkCustomToastVac->SetValue(toastTableHasVacuum);
+            chkToastVacEnabled->SetValue(toastTableHasVacuum?toastTableVacEnabled:settingAutoVacuum);
         }
         chkCustomVac->SetValue(hasVacuum);
         wxCommandEvent ev;
@@ -529,6 +715,7 @@
     }
     else
     {
+        /* Remove 'Vacuum Settings' Page */
         nbNotebook->DeletePage(4);
     }
 
@@ -903,6 +1090,116 @@
                     sql += vacStr;
             }
         }
+        if (connection->BackendMinimumVersion(8, 4))
+        {
+            if (!chkCustomToastVac->GetValue())
+            {
+                if (toastTableHasVacuum)
+                {
+                    sql += wxT("ALTER TABLE ") + tabname
+                        +  wxT(" RESET(\n")
+                           wxT("  toast.autovacuum_enabled,\n")
+                           wxT("  toast.autovacuum_vacuum_threshold,\n")
+                           wxT("  toast.autovacuum_analyze_threshold,\n")
+                           wxT("  toast.autovacuum_vacuum_scale_factor,\n")
+                           wxT("  toast.autovacuum_analyze_scale_factor,\n")
+                           wxT("  toast.autovacuum_vacuum_cost_delay,\n")
+                           wxT("  toast.autovacuum_vacuum_cost_limit,\n")
+                           wxT("  toast.autovacuum_freeze_min_age,\n")
+                           wxT("  toast.autovacuum_freeze_max_age,\n")
+                           wxT("  toast.autovacuum_freeze_table_age\n")
+                           wxT(");\n");
+                }
+            }
+            else
+            {
+                wxString vacStr;
+                bool changed = (chkToastVacEnabled->GetValue() != toastTableVacEnabled);
+                bool valChanged = false;
+                wxString newVal;
+                wxString setStr;
+                wxString resetStr;
+                if (changed)
+                {
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_enabled"), BoolToStr(chkToastVacEnabled->GetValue()));
+                }
+                newVal =  AppendNum(valChanged, txtBaseToastVac, toastTableVacBaseThr);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_threshold"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtBaseToastAn, toastTableAnlBaseThr);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_analyze_threshold"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtFactorToastVac, toastTableVacFactor);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_scale_factor"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtFactorToastAn, toastTableAnlFactor);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_analyze_scale_factor"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtToastVacDelay, toastTableCostDelay);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_cost_delay"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtToastVacLimit, toastTableCostLimit);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_cost_limit"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtToastFreezeMinAge, toastTableFreezeMinAge);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_freeze_min_age"), newVal);
+                }
+                
+                newVal = AppendNum(valChanged, txtToastFreezeMaxAge, toastTableFreezeMaxAge);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_freeze_max_age"), newVal);
+                }
+                
+                newVal = AppendNum(valChanged, txtToastFreezeTableAge, toastTableFreezeTableAge);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_freeze_table_age"), newVal);
+                }
+
+                if (!setStr.IsEmpty())
+                {
+                    vacStr = wxT("ALTER TABLE ") + tabname + setStr + wxT("\n);\n");;
+                    changed = true;
+                }
+                if (!resetStr.IsEmpty())
+                {
+                    vacStr += wxT("ALTER TABLE ") + tabname + resetStr + wxT("\n);\n");;
+                    changed = true;
+                }
+                if (changed)
+                    sql += vacStr;
+            }
+        }
     }
     else
     {
@@ -1040,6 +1337,77 @@
                     FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_freeze_table_age"), newVal);
                 }
             }
+            if (connection->BackendMinimumVersion(8, 4) && chkCustomToastVac->GetValue())
+            {
+                bool valChanged = false;
+                wxString newVal;
+                wxString resetStr;
+
+                FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_enabled"), BoolToStr(chkToastVacEnabled->GetValue()));
+                newVal =  AppendNum(valChanged, txtBaseToastVac, toastTableVacBaseThr);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_threshold"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtBaseToastAn, toastTableAnlBaseThr);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_analyze_threshold"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtFactorToastVac, toastTableVacFactor);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_scale_factor"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtFactorToastAn, toastTableAnlFactor);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_analyze_scale_factor"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtToastVacDelay, toastTableCostDelay);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_cost_delay"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtToastVacLimit, toastTableCostLimit);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_cost_limit"), newVal);
+                }
+
+                newVal = AppendNum(valChanged, txtToastFreezeMinAge, toastTableFreezeMinAge);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_freeze_min_age"), newVal);
+                }
+                
+                newVal = AppendNum(valChanged, txtToastFreezeMaxAge, toastTableFreezeMaxAge);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_freeze_max_age"), newVal);
+                }
+                
+                newVal = AppendNum(valChanged, txtToastFreezeTableAge, toastTableFreezeTableAge);
+                if (valChanged)
+                {
+                    valChanged = false;
+                    FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_freeze_table_age"), newVal);
+                }
+            }
+
             sql += wxT("\n)\n");
         }
         else
@@ -1205,10 +1573,35 @@
             stFreezeMinAgeCurr->SetLabel(NumToStr((tableFreezeMinAge == -1) ? settingFreezeMinAge : tableFreezeMinAge));
             stFreezeMaxAgeCurr->SetLabel(NumToStr((tableFreezeMaxAge == -1) ? settingFreezeMaxAge : tableFreezeMaxAge));
         }
-        if (connection->BackendMinimumVersion(8, 4))
+        if (connection->BackendMinimumVersion(8, 4) && table)
         {
             txtFreezeTableAge->Enable(vacEn);
             stFreezeTableAgeCurr->SetLabel(NumToStr((tableFreezeTableAge == -1) ? settingFreezeTableAge : tableFreezeTableAge));
+
+            /* Toast Table Vacuum Settings */
+            bool toastVacEn=chkCustomToastVac->GetValue() && chkToastVacEnabled->GetValue();
+            chkToastVacEnabled->Enable(chkCustomToastVac->GetValue());
+    
+            txtBaseToastVac->Enable(toastVacEn);
+            txtBaseToastAn->Enable(toastVacEn);
+            txtFactorToastVac->Enable(toastVacEn);
+            txtFactorToastAn->Enable(toastVacEn);
+            txtToastVacDelay->Enable(toastVacEn);
+            txtToastVacLimit->Enable(toastVacEn);
+            txtToastFreezeMinAge->Enable(toastVacEn);
+            txtToastFreezeMaxAge->Enable(toastVacEn);
+            txtToastFreezeTableAge->Enable(toastVacEn);
+    
+            stBaseToastVacCurr->SetLabel(NumToStr((toastTableVacBaseThr == -1) ? settingVacBaseThr : toastTableVacBaseThr));
+            stBaseToastAnCurr->SetLabel(NumToStr((toastTableAnlBaseThr == -1) ? settingAnlBaseThr : toastTableAnlBaseThr));
+            stFactorToastVacCurr->SetLabel(NumToStr((toastTableVacFactor == -1) ? settingVacFactor : toastTableVacFactor));
+            stFactorToastAnCurr->SetLabel(NumToStr((toastTableAnlFactor == -1) ? settingAnlFactor : toastTableAnlFactor));
+            stToastVacDelayCurr->SetLabel(NumToStr((toastTableCostDelay == -1) ? settingCostDelay : toastTableCostDelay));
+            stToastVacLimitCurr->SetLabel(NumToStr((toastTableCostLimit == -1) ? settingCostLimit : toastTableCostLimit));
+            stToastFreezeMinAgeCurr->SetLabel(NumToStr((toastTableFreezeMinAge == -1) ? settingFreezeMinAge : toastTableFreezeMinAge));
+            stToastFreezeMaxAgeCurr->SetLabel(NumToStr((toastTableFreezeMaxAge == -1) ? settingFreezeMaxAge : toastTableFreezeMaxAge));
+            txtToastFreezeTableAge->Enable(toastVacEn);
+            stToastFreezeTableAgeCurr->SetLabel(NumToStr((toastTableFreezeTableAge == -1) ? settingFreezeTableAge : toastTableFreezeTableAge));
         }
         else
         {
Index: ui/dlgTable.xrc
===================================================================
--- ui/dlgTable.xrc	(revision 7602)
+++ ui/dlgTable.xrc	(working copy)
@@ -292,227 +292,459 @@
           </object>
           <object class="notebookpage">
             <label>Vacuum settings</label>
-            <object class="wxPanel" name="pnlMaintenance">
-              <object class="wxFlexGridSizer">
-                <cols>3</cols>
-                <rows>11</rows>
-                <vgap>5</vgap>
-                <hgap>5</hgap>
-                <growablecols>1</growablecols>
-                <object class="spacer">
-                  <size>3,3d</size>
-                </object>
-                <object class="spacer">
-                  <size>3,3d</size>
-                </object>
-                <object class="spacer">
-                  <size>3,3d</size>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="chkCustomVac">
-                    <label>Custom autovacuum</label>
+            <object class="wxNotebook" name="nbVacuum">
+              <selected>0</selected>
+              <object class="notebookpage">
+                <label>Self</label>
+                <object class="wxPanel">
+                  <object class="wxFlexGridSizer">
+                    <cols>3</cols>
+                    <rows>11</rows>
+                    <vgap>5</vgap>
+                    <hgap>5</hgap>
+                    <growablecols>1</growablecols>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxCheckBox" name="chkCustomVac">
+                        <label>Custom autovacuum</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stVacEnabled">
+                        <label>Enabled</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxCheckBox" name="chkVacEnabled">
+                        <label></label>
+                      </object>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText">
+                        <label>Current value</label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseVac">
+                        <label>VACUUM base threshold</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtBaseVac"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseVacCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseAn">
+                        <label>ANALYZE base threshold</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtBaseAn"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseAnCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorVac">
+                        <label>VACUUM scale factor</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFactorVac"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorVacCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorAn">
+                        <label>ANALYZE scale factor</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFactorAn"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorAnCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stVacDelay">
+                        <label>VACUUM cost delay</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtVacDelay"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stVacDelayCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stVacLimit">
+                        <label>VACUUM cost limit</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtVacLimit"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stVacLimitCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFreezeMinAge">
+                        <label>FREEZE minimum age</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFreezeMinAge"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFreezeMinAgeCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFreezeMaxAge">
+                        <label>FREEZE maximum age</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFreezeMaxAge"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFreezeMaxAgeCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFreezeTableAge">
+                        <label>FREEZE table age</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFreezeTableAge"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFreezeTableAgeCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
                   </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
                 </object>
-                <object class="spacer">
-                  <size>3,3d</size>
-                </object>
-                <object class="spacer">
-                  <size>3,3d</size>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stVacEnabled">
-                    <label>Enabled</label>
+              </object>
+              <object class="notebookpage" name="nbpToastVacuum">
+                <label>Toast Table</label>
+                <object class="wxPanel">
+                  <object class="wxFlexGridSizer">
+                    <cols>3</cols>
+                    <rows>11</rows>
+                    <vgap>5</vgap>
+                    <hgap>5</hgap>
+                    <growablecols>1</growablecols>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxCheckBox" name="chkCustomToastVac">
+                        <label>Custom autovacuum</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="spacer">
+                      <size>3,3d</size>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastVacEnabled">
+                        <label>Enabled</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxCheckBox" name="chkToastVacEnabled">
+                        <label></label>
+                      </object>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText">
+                        <label>Current value</label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseToastVac">
+                        <label>VACUUM base threshold</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtBaseToastVac"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseToastVacCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseToastAn">
+                        <label>ANALYZE base threshold</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtBaseToastAn"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stBaseToastAnCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorToastVac">
+                        <label>VACUUM scale factor</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFactorToastVac"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorToastVacCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorToastAn">
+                        <label>ANALYZE scale factor</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtFactorToastAn"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stFactorToastAnCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastVacDelay">
+                        <label>VACUUM cost delay</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtToastVacDelay"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastVacDelayCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastVacLimit">
+                        <label>VACUUM cost limit</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtToastVacLimit"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastVacLimitCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastFreezeMinAge">
+                        <label>FREEZE minimum age</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtToastFreezeMinAge"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastFreezeMinAgeCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastFreezeMaxAge">
+                        <label>FREEZE maximum age</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtToastFreezeMaxAge"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastFreezeMaxAgeCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastFreezeTableAge">
+                        <label>FREEZE table age</label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxTextCtrl" name="txtToastFreezeTableAge"/>
+                      <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
+                    <object class="sizeritem">
+                      <object class="wxStaticText" name="stToastFreezeTableAgeCurr">
+                        <label></label>
+                      </object>
+                      <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+                      <border>4</border>
+                    </object>
                   </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
                 </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="chkVacEnabled">
-                    <label></label>
-                  </object>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stCurrent">
-                    <label>Current value</label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stBaseVac">
-                    <label>VACUUM base threshold</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtBaseVac"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stBaseVacCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stBaseAn">
-                    <label>ANALYZE base threshold</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtBaseAn"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stBaseAnCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFactorVac">
-                    <label>VACUUM scale factor</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtFactorVac"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFactorVacCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFactorAn">
-                    <label>ANALYZE scale factor</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtFactorAn"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFactorAnCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stVacDelay">
-                    <label>VACUUM cost delay</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtVacDelay"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stVacDelayCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stVacLimit">
-                    <label>VACUUM cost limit</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtVacLimit"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stVacLimitCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFreezeMinAge">
-                    <label>FREEZE minimum age</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtFreezeMinAge"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFreezeMinAgeCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFreezeMaxAge">
-                    <label>FREEZE maximum age</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtFreezeMaxAge"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFreezeMaxAgeCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFreezeTableAge">
-                    <label>FREEZE table age</label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="txtFreezeTableAge"/>
-                  <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
-                  <border>4</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxStaticText" name="stFreezeTableAgeCurr">
-                    <label></label>
-                  </object>
-                  <flag>wxALIGN_CENTRE_VERTICAL|wxALL</flag>
-                  <border>4</border>
-                </object>
               </object>
             </object>
           </object>
