SVN Commit by andreas: r4286 - in trunk/pgadmin3: . src/ctl src/dlg src/frm src/include src/include/ctl src/schema src/ui

Поиск
Список
Период
Сортировка
От svn@pgadmin.org
Тема SVN Commit by andreas: r4286 - in trunk/pgadmin3: . src/ctl src/dlg src/frm src/include src/include/ctl src/schema src/ui
Дата
Msg-id 200506071829.j57ITrhV023904@developer.pgadmin.org
обсуждение исходный текст
Список pgadmin-hackers
Author: andreas
Date: 2005-06-07 19:29:52 +0100 (Tue, 07 Jun 2005)
New Revision: 4286

Modified:
   trunk/pgadmin3/CHANGELOG.txt
   trunk/pgadmin3/src/ctl/ctlComboBox.cpp
   trunk/pgadmin3/src/dlg/dlgAggregate.cpp
   trunk/pgadmin3/src/frm/frmStatus.cpp
   trunk/pgadmin3/src/include/ctl/ctlComboBox.h
   trunk/pgadmin3/src/include/dlgAggregate.h
   trunk/pgadmin3/src/include/pgAggregate.h
   trunk/pgadmin3/src/schema/pgAggregate.cpp
   trunk/pgadmin3/src/ui/dlgAggregate.xrc
Log:
Support for pgsql 8.1 aggregate sortop

Modified: trunk/pgadmin3/CHANGELOG.txt
===================================================================
--- trunk/pgadmin3/CHANGELOG.txt    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/CHANGELOG.txt    2005-06-07 18:29:52 UTC (rev 4286)
@@ -17,9 +17,10 @@
 </ul>
 <br>
 <ul>
+    <li>2005-06-03 AP        Support for pgsql 8.1 aggregate sortop
     <li>2005-06-03 AP        Support for pgsql 8.1 pg_stat_activity
     <li>2005-06-03 AP        Support for pgsql 8.1 instrumentation
-    <li>2005-06-01 AP        Support for Procedures aka functions with out parameters
+    <li>2005-06-01 AP        Support for Procedures aka functions "with out-parameters"
     <li>2005-06-01 AP        Support for EDB8.0
     <li>2005-05-31 DP  1.2.3 Fix domain RE SQL, per Ivan
     <li>2005-05-31 DP  1.2.3 Add missing ; to RE SQL, per Ivan

Modified: trunk/pgadmin3/src/ctl/ctlComboBox.cpp
===================================================================
--- trunk/pgadmin3/src/ctl/ctlComboBox.cpp    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/ctl/ctlComboBox.cpp    2005-06-07 18:29:52 UTC (rev 4286)
@@ -25,6 +25,26 @@
 };


+
+
+int wxComboBoxFix::Append(const wxString& item, const wxString &str)
+{
+    return wxComboBox::Append(item, new StringClientData(str));
+}
+
+
+int wxComboBoxFix::Append(const wxString& item, long l)
+{
+    return wxComboBox::Append(item, (void*)l);
+}
+
+
+int wxComboBoxFix::Append(const wxString& item, OID oid)
+{
+    return wxComboBox::Append(item, (void*)oid);
+}
+
+
 int wxComboBoxFix::FillLongKey(pgConnBase *conn, const wxChar *qry)
 {
     int cnt=0;
@@ -33,7 +53,7 @@
     {
         long l=set.GetLong(0);
         wxString txt=set.GetVal(1);
-        Append(txt, (void*)l);
+        Append(txt, l);
         cnt++;
     }
     return cnt;
@@ -48,7 +68,7 @@
     {
         OID oid=set.GetOid(0);
         wxString txt=set.GetVal(1);
-        Append(txt, (void*)oid);
+        Append(txt, oid);
         cnt++;
     }
     return cnt;
@@ -63,23 +83,30 @@
     {
         wxString str=set.GetVal(0);
         wxString txt=set.GetVal(1);
-        Append(txt, new StringClientData(txt));
+        Append(txt, str);
         cnt++;
     }
     return cnt;
 }
+
 long wxComboBoxFix::GetLongKey(int sel)
 {
+    if (sel < 0)
+        sel = GetSelection();
     return (long)GetClientData(sel);
 }

 OID wxComboBoxFix::GetOIDKey(int sel)
 {
+    if (sel < 0)
+        sel = GetSelection();
     return (OID)GetClientData(sel);
 }

 wxString wxComboBoxFix::GetStringKey(int sel)
 {
+    if (sel < 0)
+        sel = GetSelection();
     StringClientData *scd=(StringClientData*)GetClientObject(sel);
     if (scd)
         return scd->str;

Modified: trunk/pgadmin3/src/dlg/dlgAggregate.cpp
===================================================================
--- trunk/pgadmin3/src/dlg/dlgAggregate.cpp    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/dlg/dlgAggregate.cpp    2005-06-07 18:29:52 UTC (rev 4286)
@@ -31,16 +31,18 @@
 #define cbStateType         CTRL_COMBOBOX2("cbStateType")
 #define cbStateFunc         CTRL_COMBOBOX("cbStateFunc")
 #define cbFinalFunc         CTRL_COMBOBOX("cbFinalFunc")
+#define cbSortOp            CTRL_COMBOBOX("cbSortOp")
 #define txtInitial          CTRL_TEXT("txtInitial")



 BEGIN_EVENT_TABLE(dlgAggregate, dlgTypeProperty)
     EVT_TEXT(XRCID("cbBaseType"),                   dlgAggregate::OnChangeTypeBase)
-    EVT_COMBOBOX(XRCID("cbBaseType"),               dlgProperty::OnChange)
+    EVT_COMBOBOX(XRCID("cbBaseType"),               dlgAggregate::OnChangeType)
     EVT_TEXT(XRCID("cbStateType"),                  dlgAggregate::OnChangeTypeState)
-    EVT_COMBOBOX(XRCID("cbStateType"),              dlgProperty::OnChange)
+    EVT_COMBOBOX(XRCID("cbStateType"),              dlgAggregate::OnChangeType)
     EVT_COMBOBOX(XRCID("cbStateFunc"),              dlgProperty::OnChange)
+    EVT_COMBOBOX(XRCID("cbSortOp"),                 dlgProperty::OnChange)
     EVT_TEXT(XRCID("cbStateFunc"),                  dlgProperty::OnChange)
 END_EVENT_TABLE();

@@ -65,6 +67,9 @@
     if (!connection->BackendMinimumVersion(7, 5))
         cbOwner->Disable();

+    if (!connection->BackendMinimumVersion(8, 1))
+        cbSortOp->Disable();
+
     if (aggregate)
     {
         // edit mode
@@ -79,14 +84,17 @@
         cbFinalFunc->Append(aggregate->GetFinalFunction());
         cbFinalFunc->SetSelection(0);

+        cbSortOp->Append(aggregate->GetSortOp());
+        cbSortOp->SetSelection(0);
+
         txtInitial->SetValue(aggregate->GetInitialCondition());

         if (!connection->BackendMinimumVersion(7, 4))
             txtName->Disable();
         cbBaseType->Disable();
         cbStateType->Disable();
-        cbStateFunc->Disable();
         cbFinalFunc->Disable();
+        cbSortOp->Disable();
         txtInitial->Disable();
     }
     else
@@ -136,20 +144,20 @@
 void dlgAggregate::OnChangeTypeBase(wxCommandEvent &ev)
 {
     cbBaseType->GuessSelection(ev);
-    CheckChange();
+    OnChangeType(ev);
 }

 void dlgAggregate::OnChangeTypeState(wxCommandEvent &ev)
 {
     cbStateType->GuessSelection(ev);
-    CheckChange();
+    OnChangeType(ev);
 }

 void dlgAggregate::OnChangeType(wxCommandEvent &ev)
 {
-    procedures.Clear();
     cbStateFunc->Clear();
     cbFinalFunc->Clear();
+    cbSortOp->Clear();

     if (cbBaseType->GetGuessedSelection() >= 0 && cbStateType->GetGuessedSelection() >= 0)
     {
@@ -158,21 +166,21 @@
             wxT("  FROM pg_proc p\n")
             wxT("  JOIN pg_type t ON t.oid=p.prorettype\n")
             wxT("  JOIN pg_namespace n ON n.oid=pronamespace\n")
-            wxT(" WHERE proargtypes[2] = 0");
+            wxT(" WHERE COALESCE(proargtypes[2],0) = 0");


         pgSet *set=connection->ExecuteSet(qry +
             wxT("\n   AND prorettype = ") + GetTypeOid(cbStateType->GetGuessedSelection()+1) +
             wxT("\n   AND proargtypes[0] = ") + GetTypeOid(cbStateType->GetGuessedSelection()+1) +
-            wxT("\n   AND (proargtypes[1]= 0 OR proargtypes[1]= ")
+            wxT("\n   AND (COALESCE(proargtypes[1],0) = 0 OR proargtypes[1]= ")
             + GetTypeOid(cbBaseType->GetGuessedSelection()) + wxT(")"));

         if (set)
         {
             while (!set->Eof())
             {
-                procedures.Add(database->GetQuotedSchemaPrefix(set->GetVal(wxT("nspname"))) +
qtIdent(set->GetVal(wxT("proname"))));
-                cbStateFunc->Append(database->GetSchemaPrefix(set->GetVal(wxT("nspname"))) +
set->GetVal(wxT("proname")));
+                cbStateFunc->Append(database->GetSchemaPrefix(set->GetVal(wxT("nspname"))) +
set->GetVal(wxT("proname")),
+                                    database->GetQuotedSchemaPrefix(set->GetVal(wxT("nspname"))) +
qtIdent(set->GetVal(wxT("proname"))));

                 set->MoveNext();
             }
@@ -180,25 +188,46 @@
         }


-        procedures.Add(wxEmptyString);
         cbFinalFunc->Append(wxT(" "));

         set=connection->ExecuteSet(qry +
             wxT("\n   AND proargtypes[0] = ") + GetTypeOid(cbStateType->GetGuessedSelection()+1) +
-            wxT("\n   AND proargtypes[1]= 0"));
+            wxT("\n   AND COALESCE(proargtypes[1],0)= 0"));

         if (set)
         {
             while (!set->Eof())
             {
-                procedures.Add(database->GetQuotedSchemaPrefix(set->GetVal(wxT("nspname"))) +
qtIdent(set->GetVal(wxT("proname"))));
-                cbFinalFunc->Append(database->GetSchemaPrefix(set->GetVal(wxT("nspname"))) +
set->GetVal(wxT("proname")));
+                cbFinalFunc->Append(database->GetSchemaPrefix(set->GetVal(wxT("nspname"))) +
set->GetVal(wxT("proname")),
+                                    database->GetQuotedSchemaPrefix(set->GetVal(wxT("nspname"))) +
qtIdent(set->GetVal(wxT("proname"))));

                 set->MoveNext();
             }
             delete set;
         }
+
+        cbSortOp->Append(wxT(" "), wxEmptyString);
+
+        set=connection->ExecuteSet(
+            wxT("SELECT oprname, nspname\n")
+            wxT("  FROM pg_operator op\n")
+            wxT("  JOIN pg_namespace nsp on nsp.oid=oprnamespace\n")
+            wxT(" WHERE oprleft = ") + GetTypeOid(cbBaseType->GetGuessedSelection()) + wxT("\n")
+            wxT("   AND oprright = ") + GetTypeOid(cbBaseType->GetGuessedSelection()) + wxT("\n"));
+
+        if (set)
+        {
+            while (!set->Eof())
+            {
+                wxString key = database->GetQuotedSchemaPrefix(set->GetVal(wxT("nspname"))) +
qtIdent(set->GetVal(wxT("oprname")));
+                wxString txt = database->GetSchemaPrefix(set->GetVal(wxT("nspname"))) + set->GetVal(wxT("oprname"));
+                cbSortOp->Append(txt, key);
+                set->MoveNext();
+            }
+            delete set;
+        }
     }
+
     CheckChange();
 }

@@ -221,18 +250,22 @@
         name=GetName();
         sql = wxT("CREATE AGGREGATE ") + schema->GetQuotedPrefix() + qtIdent(name)
             + wxT("(\n   BASETYPE=") + GetQuotedTypename(cbBaseType->GetGuessedSelection())
-            + wxT(",\n   SFUNC=") + procedures.Item(cbStateFunc->GetSelection())
+            + wxT(",\n   SFUNC=") + cbStateFunc->GetStringKey()
             + wxT(", STYPE=") + GetQuotedTypename(cbStateType->GetGuessedSelection() +1); // skip "any" type

         if (cbFinalFunc->GetSelection() > 0)
         {
             sql += wxT(",\n   FINALFUNC=")
-                + procedures.Item(cbFinalFunc->GetSelection() + cbStateFunc->GetCount());
+                + cbFinalFunc->GetStringKey();
         }
         wxString initial=txtInitial->GetValue().Strip(wxString::both);
         if (!initial.IsEmpty())
             sql += wxT(",\n   INITCOND=") + qtString(initial);
-
+
+        wxString opr=cbSortOp->GetStringKey();
+        if (!opr.IsEmpty())
+            sql += wxT(",\n   SORTOP=") + opr;
+
         sql += wxT(");\n");

         AppendOwnerNew(sql, wxT("AGGREGATE ") + schema->GetQuotedPrefix() + qtIdent(name)+

Modified: trunk/pgadmin3/src/frm/frmStatus.cpp
===================================================================
--- trunk/pgadmin3/src/frm/frmStatus.cpp    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/frm/frmStatus.cpp    2005-06-07 18:29:52 UTC (rev 4286)
@@ -712,7 +712,7 @@
             wxString fn= set->GetVal(wxT("filename"));
             wxDateTime ts=set->GetDateTime(wxT("filetime"));

-            cbLogfiles->Append(DateToAnsiStr(ts), new wxDateTime(ts));
+            cbLogfiles->Append(DateToAnsiStr(ts), (void*)new wxDateTime(ts));

             set->MoveNext();
         }

Modified: trunk/pgadmin3/src/include/ctl/ctlComboBox.h
===================================================================
--- trunk/pgadmin3/src/include/ctl/ctlComboBox.h    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/include/ctl/ctlComboBox.h    2005-06-07 18:29:52 UTC (rev 4286)
@@ -17,6 +17,8 @@
 #include <wx/wx.h>
 #include "base/base.h"

+
+
 class pgConnBase;
 class wxComboBoxFix : public wxComboBox
 {
@@ -25,13 +27,21 @@
     int FillLongKey(pgConnBase *conn, const wxChar *qry);
     int FillOidKey(pgConnBase *conn, const wxChar *qry);
     int FillStringKey(pgConnBase *conn, const wxChar *qry);
-    long GetLongKey(int sel);
-    OID GetOIDKey(int sel);
-    wxString GetStringKey(int sel);
+    long GetLongKey(int sel=-1);
+    OID GetOIDKey(int sel=-1);
+    wxString GetStringKey(int sel=-1);
     bool SetKey(long val);
     bool SetKey(OID val);
     bool SetKey(const wxString &val);

+    int Append(const wxString& item) { return wxComboBox::Append(item); }
+    int Append(const wxString& item, void *data) { return wxComboBox::Append(item, data); }
+    int Append(const wxString& item, const wxString &str);
+    int Append(const wxString& item, long l);
+    int Append(const wxString& item, OID oid);
+
+
+
 #ifdef __WXMSW__
     wxString GetValue() const { return wxGetWindowText(GetHwnd()); }
 #endif

Modified: trunk/pgadmin3/src/include/dlgAggregate.h
===================================================================
--- trunk/pgadmin3/src/include/dlgAggregate.h    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/include/dlgAggregate.h    2005-06-07 18:29:52 UTC (rev 4286)
@@ -36,8 +36,6 @@
     void OnChangeType(wxCommandEvent &ev);
     void OnChangeTypeBase(wxCommandEvent &ev);
     void OnChangeTypeState(wxCommandEvent &ev);
-
-    wxArrayString procedures;

     DECLARE_EVENT_TABLE();
 };

Modified: trunk/pgadmin3/src/include/pgAggregate.h
===================================================================
--- trunk/pgadmin3/src/include/pgAggregate.h    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/include/pgAggregate.h    2005-06-07 18:29:52 UTC (rev 4286)
@@ -48,14 +48,19 @@
     void iSetFinalFunction(const wxString& s) { finalFunction=s; }
     wxString GetInitialCondition() { return initialCondition; }
     void iSetInitialCondition(const wxString& s) { initialCondition=s; }
+    wxString GetSortOp() { return sortOp; }
+    void iSetSortOp(const wxString &s) { sortOp=s; }
+    wxString GetQuotedSortOp() { return quotedSortOp; }
+    void iSetQuotedSortOp(const wxString &s) { quotedSortOp=s; }

+
     bool DropObject(wxFrame *frame, wxTreeCtrl *browser, bool cascaded);
     wxString GetSql(wxTreeCtrl *browser);
     pgObject *Refresh(wxTreeCtrl *browser, const wxTreeItemId item);

 private:
     pgSchema *schema;
-    wxString inputType, stateType, finalType,
+    wxString inputType, stateType, finalType, sortOp, quotedSortOp,
              stateFunction, finalFunction, initialCondition;
 };


Modified: trunk/pgadmin3/src/schema/pgAggregate.cpp
===================================================================
--- trunk/pgadmin3/src/schema/pgAggregate.cpp    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/schema/pgAggregate.cpp    2005-06-07 18:29:52 UTC (rev 4286)
@@ -50,6 +50,8 @@
         AppendIfFilled(sql, wxT(",\n  FINALFUNC="), qtIdent(GetFinalFunction()));
         if (GetInitialCondition().length() > 0)
           sql += wxT(",\n  INITCOND=") + qtString(GetInitialCondition());
+        AppendIfFilled(sql, wxT(",\n  SORTOP="), GetQuotedSortOp());
+
         sql += wxT("\n);\n")
             + GetOwnerSql(8, 0, wxT("AGGREGATE ") + GetQuotedFullIdentifier()
                 + wxT("(") + qtIdent(GetInputType())
@@ -88,6 +90,8 @@
         properties->AppendItem(_("State function"), GetStateFunction());
         properties->AppendItem(_("Final type"), GetFinalType());
         properties->AppendItem(_("Final function"), GetFinalFunction());
+        if (GetConnection()->BackendMinimumVersion(8,1))
+            properties->AppendItem(_("Sort operator"), GetSortOp());
         properties->AppendItem(_("Initial condition"), GetInitialCondition());
         properties->AppendItem(_("System aggregate?"), GetSystemObject());
         properties->AppendItem(_("Comment"), GetComment());
@@ -113,7 +117,7 @@
 pgObject *pgAggregate::ReadObjects(pgCollection *collection, wxTreeCtrl *browser, const wxString &restriction)
 {
     pgAggregate *aggregate=0;
-    pgSet *aggregates= collection->GetDatabase()->ExecuteSet(
+    wxString sql=
         wxT("SELECT aggfnoid::oid, proname AS aggname, pg_get_userbyid(proowner) AS aggowner, aggtransfn,\n")
         wxT(        "aggfinalfn, proargtypes[0] AS aggbasetype, ")
         wxT(        "CASE WHEN (ti.typlen = -1 AND ti.typelem != 0) THEN (SELECT at.typname FROM pg_type at WHERE
at.oid= ti.typelem) || '[]' ELSE ti.typname END as inputname, ") 
@@ -121,8 +125,20 @@
         wxT(        "CASE WHEN (tt.typlen = -1 AND tt.typelem != 0) THEN (SELECT at.typname FROM pg_type at WHERE
at.oid= tt.typelem) || '[]' ELSE tt.typname END as transname, ") 
         wxT(        "prorettype AS aggfinaltype, ")
         wxT(        "CASE WHEN (tf.typlen = -1 AND tf.typelem != 0) THEN (SELECT at.typname FROM pg_type at WHERE
at.oid= tf.typelem) || '[]' ELSE tf.typname END as finalname, ") 
-        wxT(        "agginitval, description\n")
-        wxT("  FROM pg_aggregate ag\n")
+        wxT(        "agginitval, description");
+
+    if (collection->GetDatabase()->BackendMinimumVersion(8, 1))
+    {
+        sql += wxT(", oprname, opn.nspname as oprnsp\n")
+               wxT("  FROM pg_aggregate ag\n")
+               wxT("  LEFT OUTER JOIN pg_operator op ON op.oid=aggsortop\n")
+               wxT("  LEFT OUTER JOIN pg_namespace opn ON opn.oid=op.oprnamespace");
+    }
+    else
+        sql +=  wxT("\n  FROM pg_aggregate ag\n");
+
+
+    pgSet *aggregates= collection->GetDatabase()->ExecuteSet(sql +
         wxT("  JOIN pg_proc pr ON pr.oid = ag.aggfnoid\n")
         wxT("  JOIN pg_type ti on ti.oid=proargtypes[0]\n")
         wxT("  JOIN pg_type tt on tt.oid=aggtranstype\n")
@@ -143,15 +159,28 @@
             if (aggregates->GetVal(wxT("inputname")) == wxT("any"))
                 aggregate->iSetInputType(wxT("\"any\""));
             else
-            aggregate->iSetInputType(aggregates->GetVal(wxT("inputname")));
+                aggregate->iSetInputType(aggregates->GetVal(wxT("inputname")));
             aggregate->iSetStateType(aggregates->GetVal(wxT("transname")));
             aggregate->iSetStateFunction(aggregates->GetVal(wxT("aggtransfn")));
             aggregate->iSetFinalType(aggregates->GetVal(wxT("finalname")));
-            aggregate->iSetFinalFunction(aggregates->GetVal(wxT("aggfinalfn")));
+
+            wxString final=aggregates->GetVal(wxT("aggfinalfn"));
+            if (final != wxT("-"))
+                aggregate->iSetFinalFunction(final);
             aggregate->iSetInitialCondition(aggregates->GetVal(wxT("agginitval")));
             aggregate->iSetComment(aggregates->GetVal(wxT("description")));
+            if (collection->GetDatabase()->BackendMinimumVersion(8, 1))
+            {
+                wxString oprname=aggregates->GetVal(wxT("oprname"));
+                if (!oprname.IsEmpty())
+                {
+                    wxString oprnsp=aggregates->GetVal(wxT("oprnsp"));
+                    aggregate->iSetSortOp(collection->GetDatabase()->GetSchemaPrefix(oprnsp) + oprname);
+                    aggregate->iSetQuotedSortOp(collection->GetDatabase()->GetQuotedSchemaPrefix(oprnsp)
+                        + qtIdent(oprname));
+                }
+            }

-
             if (browser)
             {
                 collection->AppendBrowserItem(browser, aggregate);

Modified: trunk/pgadmin3/src/ui/dlgAggregate.xrc
===================================================================
--- trunk/pgadmin3/src/ui/dlgAggregate.xrc    2005-06-07 18:23:49 UTC (rev 4285)
+++ trunk/pgadmin3/src/ui/dlgAggregate.xrc    2005-06-07 18:29:52 UTC (rev 4286)
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="ISO-8859-1"?>
 <resource>
   <object class="wxDialog" name="dlgAggregate">
     <title></title>
@@ -7,105 +7,170 @@
         <label>Properties</label>
         <object class="wxPanel" name="pnlProperties">
           <object class="wxStaticText" name="stName">
+
             <label>Name</label>
+
             <pos>5,7d</pos>
           </object>
           <object class="wxTextCtrl" name="txtName">
+
             <pos>70,5d</pos>
+
             <size>135,-1d</size>
           </object>
           <object class="wxStaticText" name="stOID">
+
             <label>OID</label>
+
             <pos>5,22d</pos>
           </object>
           <object class="wxTextCtrl" name="txtOID">
+
             <pos>70,20d</pos>
+
             <size>135,-1d</size>
           </object>
           <object class="wxStaticText" name="stOwner">
+
             <label>Owner</label>
+
             <pos>5,37d</pos>
           </object>
           <object class="ctlComboBox" name="cbOwner">
+
             <pos>70,35d</pos>
+
             <size>135,12d</size>
+
             <content/>
+
             <style>wxCB_DROPDOWN</style>
           </object>
           <object class="wxStaticText" name="stBaseType">
+
             <label>Input type</label>
+
             <pos>5,52d</pos>
           </object>
           <object class="ctlComboBox" name="cbBaseType">
+
             <content/>
+
             <pos>70,50d</pos>
+
             <size>135,12d</size>
+
             <style>wxCB_DROPDOWN</style>
           </object>
           <object class="wxStaticText" name="stStateType">
+
             <label>State type</label>
+
             <pos>5,67d</pos>
           </object>
           <object class="ctlComboBox" name="cbStateType">
+
             <content/>
+
             <pos>70,65d</pos>
+
             <size>135,12d</size>
+
             <style>wxCB_DROPDOWN</style>
           </object>
           <object class="wxStaticText" name="stStateFunc">
+
             <label>State function</label>
+
             <pos>5,82d</pos>
           </object>
           <object class="wxComboBox" name="cbStateFunc">
+
             <content/>
+
             <pos>70,80d</pos>
+
             <size>135,12d</size>
+
             <style>wxCB_READONLY|wxCB_DROPDOWN</style>
           </object>
           <object class="wxStaticText" name="stFinalFunc">
+
             <label>Final function</label>
+
             <pos>5,97d</pos>
           </object>
           <object class="wxComboBox" name="cbFinalFunc">
+
             <content/>
+
             <pos>70,95d</pos>
+
             <size>135,12d</size>
+
             <style>wxCB_READONLY|wxCB_DROPDOWN</style>
           </object>
+          <object class="wxStaticText" name="stSortOp">
+            <label>Sort Operator</label>
+            <pos>5,112d</pos>
+          </object>
+          <object class="wxComboBox" name="cbSortOp">
+            <content/>
+            <pos>70,110d</pos>
+            <size>135,12d</size>
+            <style>wxCB_READONLY|wxCB_DROPDOWN</style>
+          </object>
           <object class="wxStaticText" name="stInitial">
+
             <label>Initial condition</label>
-            <pos>5,112d</pos>
+
+            <pos>5,127d</pos>
           </object>
           <object class="wxTextCtrl" name="txtInitial">
-            <pos>70,110d</pos>
+
+            <pos>70,125d</pos>
+
             <size>135,-1d</size>
           </object>
           <object class="wxStaticText" name="stComment">
+
             <label>Comment</label>
-            <pos>5,127d</pos>
+
+            <pos>5,142d</pos>
           </object>
           <object class="wxTextCtrl" name="txtComment">
-            <pos>70,125d</pos>
-            <size>135,72d</size>
+
+            <pos>70,140d</pos>
+
+            <size>135,57d</size>
+
             <style>wxTE_MULTILINE</style>
           </object>
         </object>
+
         <selected>1</selected>
       </object>
       <pos>2,2d</pos>
       <size>214,215d</size>
     </object>
     <object class="wxButton" name="wxID_HELP">
+
       <label>Help</label>
+
       <pos>3,221d</pos>
     </object>
     <object class="wxButton" name="wxID_OK">
+
       <label>OK</label>
+
       <default>1</default>
+
       <pos>113,221d</pos>
     </object>
     <object class="wxButton" name="wxID_CANCEL">
+
       <label>Cancel</label>
+
       <pos>166,221d</pos>
     </object>
     <size>218,240d</size>


В списке pgadmin-hackers по дате отправления:

Предыдущее
От: Andreas Pflug
Дата:
Сообщение: Re: sys column error
Следующее
От: Diego Gil
Дата:
Сообщение: start errors