Fix the index UI to handle columns with commas in the name [Quan Zongliang]
authordpage <dpage@a7884b65-44f6-0310-8a51-81a127f17b15>
Fri, 7 Nov 2008 14:48:55 +0000 (14:48 +0000)
committerdpage <dpage@a7884b65-44f6-0310-8a51-81a127f17b15>
Fri, 7 Nov 2008 14:48:55 +0000 (14:48 +0000)
git-svn-id: svn://svn.pgadmin.org/trunk/pgadmin3@7497 a7884b65-44f6-0310-8a51-81a127f17b15

CHANGELOG
pgadmin/dlg/dlgIndex.cpp
pgadmin/include/schema/pgIndex.h
pgadmin/schema/pgIndex.cpp

index f829768bdef74b907b830a8da0ad5842c9b66f50..d5ff94f855007af553a99170369334f92cec4fad 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -36,6 +36,8 @@ Changes
 \r
 Date       Dev Ver    Change details\r
 ---------- --- -----  --------------\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
                       Vashi]\r
 2008-10-27 GL  1.9.0  Add more index stats.\r
index b23d1a9cb3669ad27cc304127762426961f779ed..6be618ae7b04b742d35026758df91bd8c65c7049 100644 (file)
@@ -90,15 +90,9 @@ int dlgIndexBase::Go(bool modal)
         txtName->Disable();
         cbColumns->Disable();
 
-           int pos = 0;
-        wxStringTokenizer cols(index->GetColumns(), wxT(","));
-        while (cols.HasMoreTokens())
-        {
-            wxString str=cols.GetNextToken();
-            if (str.Strip() == wxT(""))
-                str.RemoveLast();       // there's a space
-            lstColumns->InsertItem(pos++, str, columnFactory.GetIconId());
-        }
+               wxArrayString colsArr = index->GetColumnList();
+               for (int colIdx=0,colsCount=colsArr.Count(); colIdx<colsCount; colIdx++)
+                       lstColumns->InsertItem(colIdx, colsArr.Item(colIdx), columnFactory.GetIconId());
 
         if (txtFillFactor)
         {
index 3f95d2ab78538ab43252b21f072d716715e70847..f389ebd3160eefd1c01ab69d2d6bdb9c95e47dd2 100644 (file)
@@ -13,6 +13,7 @@
 #define PGINDEX_H
 
 #include "pgTable.h"
+#include <wx/arrstr.h>
 
 class pgCollection;
 
@@ -34,6 +35,7 @@ public:
     wxString GetOperatorClasses() const { return operatorClasses; }
     wxString GetQuotedColumns() const { return quotedColumns; }
     wxString GetColumns() const { return columns; }
+       wxArrayString GetColumnList() const { return columnList; }
 
     wxString GetColumnNumbers() const { return columnNumbers; }
     void iSetColumnNumbers(const wxString& s) { columnNumbers=s; }
@@ -96,6 +98,7 @@ private:
     wxString columnNumbers, columns, quotedColumns, indexType, idxTable, idxSchema, constraint, tablespace;
     wxString procName, procNamespace, procArgs, procArgTypeList, typedColumns, quotedTypedColumns, operatorClasses, operatorClassList;
     long columnCount;
+       wxArrayString columnList;
     bool isUnique, isPrimary, isClustered;
     bool deferrable, deferred, showExtendedStatistics;
     OID relTableOid, tablespaceOid;
index add3154853fe52925ad07136ed8d1e5a3f3b49ba..ebae018dc672d9ef13ab6f733f38347eb95b58cf 100644 (file)
@@ -100,7 +100,10 @@ void pgIndexBase::ReadColumnDetails()
     {
         expandedKids = true;
 
-        if (GetConnection()->BackendMinimumVersion(7, 4))
+               // Allocate memory to store column def
+               if (columnCount>0) columnList.Alloc(columnCount);
+
+               if (GetConnection()->BackendMinimumVersion(7, 4))
         {
             long i;
 
@@ -154,6 +157,7 @@ void pgIndexBase::ReadColumnDetails()
 
                 columns += coldef;
                 quotedColumns += coldef;
+                               columnList.Add(coldef);
             }
         }
         else
@@ -185,6 +189,7 @@ void pgIndexBase::ReadColumnDetails()
                     }
                     wxString colName=colSet->GetVal(0);
                     columns += colName;
+                                       columnList.Add(colName);
                     quotedColumns += qtIdent(colName);
 
                     if (!ct.IsNull())