diff --git a/pgadmin/ctl/ctlSeclabelPanel.cpp b/pgadmin/ctl/ctlSeclabelPanel.cpp
index a5be9a1..74697b2 100644
--- a/pgadmin/ctl/ctlSeclabelPanel.cpp
+++ b/pgadmin/ctl/ctlSeclabelPanel.cpp
@@ -29,6 +29,8 @@ BEGIN_EVENT_TABLE(ctlSeclabelPanel, wxPanel)
 	EVT_LIST_ITEM_SELECTED(CTL_LBSECLABEL,  ctlSeclabelPanel::OnSeclabelSelChange)
 	EVT_BUTTON(CTL_ADDSECLABEL,             ctlSeclabelPanel::OnAddSeclabel)
 	EVT_BUTTON(CTL_DELSECLABEL,             ctlSeclabelPanel::OnDelSeclabel)
+	EVT_TEXT(CTL_PROVIDER,			        ctlSeclabelPanel::OnChange)
+	EVT_TEXT(CTL_SECLABEL,			        ctlSeclabelPanel::OnChange)
 END_EVENT_TABLE();
 
 DEFINE_LOCAL_EVENT_TYPE(EVT_SECLABELPANEL_CHANGE)
@@ -84,6 +86,8 @@ ctlSeclabelPanel::ctlSeclabelPanel(wxNotebook *nb)
 	// compute sizes
 	this->SetSizer(sizer0);
 	sizer0->Fit(this);
+
+	btnAddSeclabel->Enable(false);
 }
 
 
@@ -101,7 +105,6 @@ void ctlSeclabelPanel::Disable()
 	txtSeclabel->Disable();
 }
 
-
 void ctlSeclabelPanel::SetConnection(pgConn *conn)
 {
 	connection = conn;
@@ -170,6 +173,10 @@ void ctlSeclabelPanel::OnAddSeclabel(wxCommandEvent &ev)
 	ev.Skip();
 }
 
+void ctlSeclabelPanel::OnChange(wxCommandEvent &event)
+{
+	btnAddSeclabel->Enable(!txtProvider->IsEmpty() && !txtSeclabel->IsEmpty());
+}
 
 void ctlSeclabelPanel::OnSeclabelSelChange(wxListEvent &ev)
 {
@@ -180,6 +187,15 @@ void ctlSeclabelPanel::OnSeclabelSelChange(wxListEvent &ev)
 	txtSeclabel->SetValue(lbSeclabels->GetText(lbSeclabels->GetSelection(), 1));
 }
 
+void ctlSeclabelPanel::GetCUrrentProviderLabelArray(wxArrayString& secLabels)
+{
+	for(int indexList = 0; indexList < lbSeclabels->GetItemCount(); indexList++)
+	{
+		secLabels.Add(lbSeclabels->GetText(indexList));
+		secLabels.Add(lbSeclabels->GetText(indexList,1));
+	}
+	return;
+}
 
 wxString ctlSeclabelPanel::GetSqlForSecLabels(wxString objecttype, wxString objectname)
 {
@@ -270,4 +286,4 @@ wxString ctlSeclabelPanel::GetSqlForSecLabels(wxString objecttype, wxString obje
 	}
 
 	return sql;
-}
+}
\ No newline at end of file
diff --git a/pgadmin/ctl/ctlSecurityPanel.cpp b/pgadmin/ctl/ctlSecurityPanel.cpp
index 8c46e12..5a7905c 100644
--- a/pgadmin/ctl/ctlSecurityPanel.cpp
+++ b/pgadmin/ctl/ctlSecurityPanel.cpp
@@ -162,6 +162,26 @@ void ctlSecurityPanel::SetConnection(pgConn *conn)
 		stGroup->SetLabel(_("Role"));
 }
 
+wxString ctlSecurityPanel::GetUserPrivileges()
+{
+	wxString strPrivilages;
+	int cnt = lbPrivileges->GetItemCount();
+	int pos;
+	if(cnt > 0)
+	{
+		strPrivilages += wxT("{");
+		for (pos = 0 ; pos < cnt ; pos++)
+		{
+			wxString name = lbPrivileges->GetText(pos);
+			wxString value = lbPrivileges->GetText(pos, 1);
+
+			strPrivilages += (pos == 0) ? name + wxT("=") + value : wxT(",") + name + wxT("=") + value;
+			strPrivilages += wxT("/") + connection->GetUser();
+		}
+		strPrivilages += wxT("}");
+	}
+	return strPrivilages;
+}
 
 wxString ctlSecurityPanel::GetGrant(const wxString &allPattern, const wxString &grantObject, wxArrayString *currentAcl, wxString column)
 {
diff --git a/pgadmin/dlg/dlgColumn.cpp b/pgadmin/dlg/dlgColumn.cpp
index 7df7930..d5deae4 100644
--- a/pgadmin/dlg/dlgColumn.cpp
+++ b/pgadmin/dlg/dlgColumn.cpp
@@ -112,9 +112,38 @@ dlgColumn::dlgColumn(pgaFactory *f, frmMain *frame, pgColumn *node, pgTable *par
 			delete setGrp;
 		}
 
-		if (node)
-		{
-			wxString strAcl = node->GetAcl();
+	//code removed for testing
+		SetSecurityPage();
+	}
+	else
+		securityPage->Disable();
+
+	seclabelPage = new ctlSeclabelPanel(nbNotebook);
+}
+
+
+#ifdef __WXMAC__
+void dlgColumn::OnChangeSize(wxSizeEvent &ev)
+{
+	securityPage->lbPrivileges->SetSize(wxDefaultCoord, wxDefaultCoord,
+	                                    ev.GetSize().GetWidth(), ev.GetSize().GetHeight() - 550);
+	if (GetAutoLayout())
+	{
+		Layout();
+	}
+}
+#endif
+
+pgObject *dlgColumn::GetObject()
+{
+	return column;
+}
+
+void dlgColumn::SetSecurityPage()
+{
+	if(column)
+	{
+			wxString strAcl = column->GetAcl();
 			if (!strAcl.IsEmpty())
 			{
 				wxArrayString aclArray;
@@ -176,33 +205,8 @@ dlgColumn::dlgColumn(pgaFactory *f, frmMain *frame, pgColumn *node, pgTable *par
 					roleName.Empty();
 				}
 			}
-		}
 	}
-	else
-		securityPage->Disable();
-
-	seclabelPage = new ctlSeclabelPanel(nbNotebook);
 }
-
-
-#ifdef __WXMAC__
-void dlgColumn::OnChangeSize(wxSizeEvent &ev)
-{
-	securityPage->lbPrivileges->SetSize(wxDefaultCoord, wxDefaultCoord,
-	                                    ev.GetSize().GetWidth(), ev.GetSize().GetHeight() - 550);
-	if (GetAutoLayout())
-	{
-		Layout();
-	}
-}
-#endif
-
-pgObject *dlgColumn::GetObject()
-{
-	return column;
-}
-
-
 int dlgColumn::Go(bool modal)
 {
 	if (connection->BackendMinimumVersion(8, 4))
@@ -630,6 +634,40 @@ void dlgColumn::ApplyChangesToObj(pgColumn *changedCol)
 	{
 		changedCol->GetVariables().Add(lstVariables->GetText(pos) + wxT("=") + lstVariables->GetText(pos, 1));
 	}
+
+	if(securityPage && connection->BackendMinimumVersion(8, 4))
+	{
+		changedCol->iSetAcl(securityPage->GetUserPrivileges());
+	}
+
+	if(seclabelPage && connection->BackendMinimumVersion(9, 1))
+	{
+		wxArrayString secLabels;
+		wxString providers;
+		wxString labels;
+		seclabelPage->GetCUrrentProviderLabelArray(secLabels);
+
+		if(!secLabels.IsEmpty())
+		{
+			for(size_t pos = 0; pos < secLabels.Count(); pos += 2)
+			{
+				if(pos == 0)
+				{
+					providers += wxT("{") + secLabels.Item(pos); 
+					labels += wxT("{") + secLabels.Item(pos+1);
+				}
+				else
+				{
+					providers += wxT(",") + secLabels.Item(pos);
+					labels += wxT(",") + secLabels.Item(pos+1);
+				}
+			}
+			providers += wxT("}");
+			labels += wxT("}");
+		}
+		changedCol->iSetProviders(providers);
+		changedCol->iSetLabels(labels);
+	}
 }
 
 
@@ -657,6 +695,26 @@ void dlgColumn::ApplyChangesToDlg()
 	}
 }
 
+void dlgColumn::GetVariableList(wxArrayString& variableList)
+{
+	wxString name;
+	wxString value;
+	for(int pos = 0; pos < lstVariables->GetItemCount(); pos++)
+	{
+		name = lstVariables->GetText(pos);
+		value = lstVariables->GetText(pos, 1);
+		variableList.Add(name + wxT("=") + value);
+	}
+}
+
+wxString dlgColumn::GetSecLabelColumnSql(const wxString& tableName)
+{
+	if (seclabelPage && connection->BackendMinimumVersion(9, 1))
+			return seclabelPage->GetSqlForSecLabels(wxT("COLUMN"), tableName
+			+ wxT(".") + qtIdent(GetName()));
+
+	return wxEmptyString;
+}
 
 wxString dlgColumn::GetDefinition()
 {
diff --git a/pgadmin/dlg/dlgTable.cpp b/pgadmin/dlg/dlgTable.cpp
index 9f7a565..0a64d35 100644
--- a/pgadmin/dlg/dlgTable.cpp
+++ b/pgadmin/dlg/dlgTable.cpp
@@ -200,6 +200,8 @@ dlgTable::dlgTable(pgaFactory *f, frmMain *frame, pgTable *node, pgSchema *sch)
 	lstColumns->AddColumn(_("Column type oid"), 0);
 	// ... pgColumn* handle (used for changed columns)
 	lstColumns->AddColumn(_("Changed column"), 0);
+	// ... pgColumn* handle (used for variable list)
+	lstColumns->AddColumn(_("Variable List"), 0);
 
 	lstConstraints->CreateColumns(0, _("Constraint name"), _("Definition"), 90);
 }
@@ -1416,6 +1418,22 @@ wxString dlgTable::GetSql()
 		AppendOwnerNew(sql, wxT("TABLE ") + tabname);
 
 		// Extra column info
+		//variables
+		for (pos = 0; pos < lstColumns->GetItemCount(); pos++)
+		{
+			wxStringTokenizer varToken(lstColumns->GetText(pos,COL_VARIABLE_LIST),wxT(","));
+			while (varToken.HasMoreTokens())
+			{
+				sql += wxT("ALTER TABLE ") + tabname
+					+ wxT("\n  ALTER COLUMN ")
+					+ qtIdent(lstColumns->GetText(pos, COL_NAME))
+					+ wxT(" \nSET (");
+				sql += varToken.GetNextToken() + wxT(");\n");
+			}
+		}
+
+		//security labels
+		sql += secLabelColumnSql;
 
 		// Statistics
 		for (pos = 0 ; pos < lstColumns->GetItemCount() ; pos++)
@@ -1795,22 +1813,23 @@ void dlgTable::OnChangeCol(wxCommandEvent &ev)
 	pgColumn *column = (pgColumn *) StrToLong(lstColumns->GetText(pos, COL_PGCOLUMN));
 	pgColumn *column2 = (pgColumn *) StrToLong(lstColumns->GetText(pos, COL_CHANGEDCOL));
 
-	dlgColumn col(&columnFactory, mainForm, column, table);
+	dlgColumn col(&columnFactory, mainForm, column2 != NULL ? column2 : column, table);
 	col.CenterOnParent();
 	col.SetDatabase(database);
 	col.SetChangedCol(column2);
 	if (col.Go(true) != wxID_CANCEL)
 	{
-		delete column2;
-		pgColumn *changedColumn = new pgColumn(* column);
-		col.ApplyChangesToObj(changedColumn);
+		if(column2 == NULL)
+			column2 = new pgColumn(*column);
+
+		col.ApplyChangesToObj(column2);
 
 		lstColumns->SetItem(pos, COL_NAME, col.GetName());
 		lstColumns->SetItem(pos, COL_DEFINITION, col.GetDefinition());
 		lstColumns->SetItem(pos, COL_SQLCHANGE, col.GetSql());
 		lstColumns->SetItem(pos, COL_STATISTICS, col.GetStatistics());
 		lstColumns->SetItem(pos, COL_COMMENTS, col.GetComment());
-		lstColumns->SetItem(pos, COL_CHANGEDCOL, NumToStr((long)changedColumn));
+		lstColumns->SetItem(pos, COL_CHANGEDCOL, NumToStr((long)column2));
 	}
 	CheckChange();
 }
@@ -1847,6 +1866,26 @@ void dlgTable::OnAddCol(wxCommandEvent &ev)
 		lstColumns->SetItem(pos, COL_STATISTICS, col.GetStatistics());
 		lstColumns->SetItem(pos, COL_COMMENTS, col.GetComment());
 		lstColumns->SetItem(pos, COL_TYPEOID, col.GetTypeOid());
+
+		wxString perColumnListString = wxEmptyString;
+
+		//getting the variable list for each column
+		wxArrayString perColumnList;
+		col.GetVariableList(perColumnList);
+		for(size_t index = 0; index < perColumnList.GetCount(); index++)
+		{
+			if (index == 0)
+				perColumnListString	= perColumnList.Item(index);
+			else
+				perColumnListString += wxT(",") + perColumnList.Item(index);
+		}
+		lstColumns->SetItem(pos, COL_VARIABLE_LIST, perColumnListString);
+
+		//getting the security labels list for each column
+		if(connection->BackendMinimumVersion(9, 1))
+		{
+			secLabelColumnSql = col.GetSecLabelColumnSql(GetName());
+		}
 	}
 
 	CheckChange();
diff --git a/pgadmin/include/ctl/ctlSeclabelPanel.h b/pgadmin/include/ctl/ctlSeclabelPanel.h
index 4bfa0fa..4061a79 100644
--- a/pgadmin/include/ctl/ctlSeclabelPanel.h
+++ b/pgadmin/include/ctl/ctlSeclabelPanel.h
@@ -42,7 +42,7 @@ public:
 	void SetObject(pgObject *obj);
 	void Disable();
 	wxString GetSqlForSecLabels(wxString objecttype = wxEmptyString, wxString objectname = wxEmptyString);
-
+	void GetCUrrentProviderLabelArray(wxArrayString& secLabels);
 protected:
 	wxNotebook *nbNotebook;
 	pgConn *connection;
@@ -56,7 +56,7 @@ protected:
 	void OnDelSeclabel(wxCommandEvent &ev);
 	void OnProviderChange(wxCommandEvent &ev);
 	void OnSeclabelChange(wxCommandEvent &ev);
-
+	void OnChange(wxCommandEvent &ev);
 	DECLARE_EVENT_TABLE()
 };
 
diff --git a/pgadmin/include/ctl/ctlSecurityPanel.h b/pgadmin/include/ctl/ctlSecurityPanel.h
index 07f3253..353566b 100644
--- a/pgadmin/include/ctl/ctlSecurityPanel.h
+++ b/pgadmin/include/ctl/ctlSecurityPanel.h
@@ -51,6 +51,7 @@ public:
 	 *  Except column level privileges, column will be always an empty string in any case
 	 */
 	wxString GetGrant(const wxString &allPattern, const wxString &grantObject, wxArrayString *currentAcl = 0, wxString column = wxEmptyString);
+	wxString GetUserPrivileges();
 	bool DisablePrivilege(const wxString &priv);
 protected:
 	wxNotebook *nbNotebook;
diff --git a/pgadmin/include/dlg/dlgColumn.h b/pgadmin/include/dlg/dlgColumn.h
index 6b5bfd8..de714a6 100644
--- a/pgadmin/include/dlg/dlgColumn.h
+++ b/pgadmin/include/dlg/dlgColumn.h
@@ -28,10 +28,13 @@ public:
 	void SetChangedCol(pgColumn *changedCol);
 	void ApplyChangesToObj(pgColumn *changedCol);
 	void ApplyChangesToDlg();
+	void SetSecurityPage();
 	wxString GetSql();
 	pgObject *CreateObject(pgCollection *collection);
 	pgObject *GetObject();
 	wxString GetDefinition();
+	void GetVariableList(wxArrayString& );
+	wxString GetSecLabelColumnSql(const wxString& tableName);
 	wxString GetPreviousDefinition()
 	{
 		return previousDefinition;
diff --git a/pgadmin/include/dlg/dlgTable.h b/pgadmin/include/dlg/dlgTable.h
index f436fda..09e1e1e 100644
--- a/pgadmin/include/dlg/dlgTable.h
+++ b/pgadmin/include/dlg/dlgTable.h
@@ -26,7 +26,8 @@ enum
     COL_STATISTICS,
     COL_PGCOLUMN,
     COL_TYPEOID,
-    COL_CHANGEDCOL
+    COL_CHANGEDCOL,
+    COL_VARIABLE_LIST
 };
 
 enum
@@ -121,7 +122,7 @@ private:
 	         toastTableFreezeMinAge, toastTableFreezeMaxAge,
 	         toastTableFreezeTableAge;
 	wxString toastTableVacFactor;
-
+	wxString secLabelColumnSql;
 	DECLARE_EVENT_TABLE()
 };
 
diff --git a/pgadmin/pgAdmin3.cpp b/pgadmin/pgAdmin3.cpp
index 97eff62..867f50c 100644
--- a/pgadmin/pgAdmin3.cpp
+++ b/pgadmin/pgAdmin3.cpp
@@ -28,7 +28,6 @@
 #include <wx/stdpaths.h>
 #include <wx/clipbrd.h>
 #include <wx/sysopt.h>
-
 // wxOGL
 #include <ogl/ogl.h>
 
diff --git a/pgadmin/pgAdmin3.vcxproj b/pgadmin/pgAdmin3.vcxproj
index 870e3ab..77863c7 100644
--- a/pgadmin/pgAdmin3.vcxproj
+++ b/pgadmin/pgAdmin3.vcxproj
@@ -3550,4 +3550,4 @@
   <ImportGroup Label="ExtensionTargets">
     <Import Project="..\pgAdmin3.targets" />
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/pgadmin/pgAdmin3.vcxproj.filters b/pgadmin/pgAdmin3.vcxproj.filters
index 144bd41..2a3b648 100644
--- a/pgadmin/pgAdmin3.vcxproj.filters
+++ b/pgadmin/pgAdmin3.vcxproj.filters
@@ -1683,6 +1683,7 @@
     <ClCompile Include="dlg\dlgResourceGroup.cpp">
       <Filter>dlg</Filter>
     </ClCompile>
+    <ClCompile Include="dlg\dlgMoveTablespace.cpp" />
   </ItemGroup>
   <ItemGroup>
     <None Include="agent\module.mk">
@@ -2205,6 +2206,7 @@
     <None Include="ui\dlgResourceGroup.xrc">
       <Filter>ui</Filter>
     </None>
+    <None Include="ui\dlgMoveTablespace.xrc" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="include\copyright.h">
@@ -3570,6 +3572,7 @@
     <ClInclude Include="include\dlg\dlgResourceGroup.h">
       <Filter>include\dlg</Filter>
     </ClInclude>
+    <ClInclude Include="include\dlg\dlgMoveTablespace.h" />
   </ItemGroup>
   <ItemGroup>
     <png2c Include="include\images\aggregate-sm.png">
@@ -4476,4 +4479,4 @@
   <ItemGroup>
     <ResourceCompile Include="pgAdmin3.rc" />
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
