Author: andreas
Date: 2005-06-03 21:05:54 +0100 (Fri, 03 Jun 2005)
New Revision: 4278

Modified:
   trunk/pgadmin3/CHANGELOG.txt
   trunk/pgadmin3/src/frm/frmStatus.cpp
   trunk/pgadmin3/src/schema/pgServer.cpp
Log:
Support for pgsql 8.1 pg_stat_activity

Modified: trunk/pgadmin3/CHANGELOG.txt
===================================================================
--- trunk/pgadmin3/CHANGELOG.txt        2005-06-03 19:21:18 UTC (rev 4277)
+++ trunk/pgadmin3/CHANGELOG.txt        2005-06-03 20:05:54 UTC (rev 4278)
@@ -17,6 +17,7 @@
 </ul>
 <br>
 <ul>
+    <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 EDB8.0

Modified: trunk/pgadmin3/src/frm/frmStatus.cpp
===================================================================
--- trunk/pgadmin3/src/frm/frmStatus.cpp        2005-06-03 19:21:18 UTC (rev 
4277)
+++ trunk/pgadmin3/src/frm/frmStatus.cpp        2005-06-03 20:05:54 UTC (rev 
4278)
@@ -104,13 +104,14 @@
     statusList->AddColumn(_("PID"), 35);
     statusList->AddColumn(_("Database"), 70);
     statusList->AddColumn(_("User"), 70);
-    if (connection->BackendMinimumVersion(7, 4)) {
+    if (connection->BackendMinimumVersion(8, 1))
+        statusList->AddColumn(_("Client"), 70);
+
+    if (connection->BackendMinimumVersion(7, 4))
         statusList->AddColumn(_("Start"), 50);
-        statusList->AddColumn(_("Query"), 500);
-    } else {
-        statusList->AddColumn(_("Query"), 500);
-    }
 
+    statusList->AddColumn(_("Query"), 500);
+
     lockList->AddColumn(_("PID"), 50);
     lockList->AddColumn(_("Database"), 50);
     lockList->AddColumn(_("Relation"), 50);
@@ -118,13 +119,11 @@
     lockList->AddColumn(_("TX"), 50);
     lockList->AddColumn(_("Mode"), 50);
     lockList->AddColumn(_("Granted"), 50);
-    if (connection->BackendMinimumVersion(7, 4)) {
+    if (connection->BackendMinimumVersion(7, 4))
         lockList->AddColumn(_("Start"), 50);
-        lockList->AddColumn(_("Query"), 500);
-    } else {
-        lockList->AddColumn(_("Query"), 500);
-    }
 
+    lockList->AddColumn(_("Query"), 500);
+
     if (connection->BackendMinimumVersion(8, 0) && 
                 connection->HasFeature(FEATURE_FILEREAD))
     {
@@ -279,23 +278,28 @@
                                        {
                                                statusList->InsertItem(row, 
NumToStr(pid), 0);
                                        }
-                                       statusList->SetItem(row, 1, 
dataSet1->GetVal(wxT("datname")));
-                                       statusList->SetItem(row, 2, 
dataSet1->GetVal(wxT("usename")));
                                        wxString 
qry=dataSet1->GetVal(wxT("current_query"));
 
-                                       if 
(connection->BackendMinimumVersion(7, 4))
+                    int colpos=1;
+                                       statusList->SetItem(row, colpos++, 
dataSet1->GetVal(wxT("datname")));
+                                       statusList->SetItem(row, colpos++, 
dataSet1->GetVal(wxT("usename")));
+
+                    if (connection->BackendMinimumVersion(8, 1))
+                    {
+                        wxString client=dataSet1->GetVal(wxT("client_addr")) + 
wxT(":") + dataSet1->GetVal(wxT("client_port"));
+                        if (client == wxT(":-1"))
+                            client = _("local pipe");
+                        statusList->SetItem(row, colpos++, client);
+                    }
+                    if (connection->BackendMinimumVersion(7, 4))
                                        {
-                                               if (qry.IsEmpty()) {
-                                                       
statusList->SetItem(row, 3, wxEmptyString);
-                                                       
statusList->SetItem(row, 4, wxEmptyString);
-                                               } else {
-                                                       
statusList->SetItem(row, 3, dataSet1->GetVal(wxT("query_start")));
-                                                       
statusList->SetItem(row, 4, qry.Left(250));
-                                               } 
-                                       } else {
-                                               statusList->SetItem(row, 3, 
qry.Left(250));
+                                               if (qry.IsEmpty() || qry == 
wxT("<IDLE>"))
+                                                       
statusList->SetItem(row, colpos++, wxEmptyString);
+                        else
+                                                       
statusList->SetItem(row, colpos++, dataSet1->GetVal(wxT("query_start")));
                                        }
 
+                               statusList->SetItem(row, colpos, qry.Left(250));
                                        row++;
                                }
                                dataSet1->MoveNext();
@@ -372,31 +376,31 @@
                                        {
                                                lockList->InsertItem(row, 
NumToStr(pid), 0);
                                        }
-                                       lockList->SetItem(row, 1, 
dataSet2->GetVal(wxT("dbname")));
-                                       lockList->SetItem(row, 2, 
dataSet2->GetVal(wxT("class")));
-                                       lockList->SetItem(row, 3, 
dataSet2->GetVal(wxT("user")));
-                                       lockList->SetItem(row, 4, 
dataSet2->GetVal(wxT("transaction")));
-                                       lockList->SetItem(row, 5, 
dataSet2->GetVal(wxT("mode")));
-                                       if (dataSet2->GetVal(wxT("granted")) == 
wxT("t")) {
-                                               lockList->SetItem(row, 6, 
__("Yes"));
-                                       } else {
-                                               lockList->SetItem(row, 6, 
__("No"));
-                                       }
+
+                    int colpos=1;
+                                       lockList->SetItem(row, colpos++, 
dataSet2->GetVal(wxT("dbname")));
+                                       lockList->SetItem(row, colpos++, 
dataSet2->GetVal(wxT("class")));
+                                       lockList->SetItem(row, colpos++, 
dataSet2->GetVal(wxT("user")));
+                                       lockList->SetItem(row, colpos++, 
dataSet2->GetVal(wxT("transaction")));
+                                       lockList->SetItem(row, colpos++, 
dataSet2->GetVal(wxT("mode")));
+                                       
+                    if (dataSet2->GetVal(wxT("granted")) == wxT("t"))
+                                               lockList->SetItem(row, 
colpos++, _("Yes"));
+                                       else
+                                               lockList->SetItem(row, 
colpos++, _("No"));
+
                                        wxString 
qry=dataSet2->GetVal(wxT("current_query"));
 
                                        if 
(connection->BackendMinimumVersion(7, 4))
                                        {
-                                               if (qry.IsEmpty()) {
-                                                       lockList->SetItem(row, 
7, wxEmptyString);
-                                                       lockList->SetItem(row, 
8, wxEmptyString);
-                                               } else {
-                                                       lockList->SetItem(row, 
7, dataSet2->GetVal(wxT("query_start")));
-                                                       lockList->SetItem(row, 
8, qry.Left(250));
-                                               }
-                                       } else {
-                                               lockList->SetItem(row, 7, 
qry.Left(250));
+                                               if (qry.IsEmpty() || qry == 
wxT("<IDLE>"))
+                                                       lockList->SetItem(row, 
colpos++, wxEmptyString);
+                                               else
+                                                       lockList->SetItem(row, 
colpos++, dataSet2->GetVal(wxT("query_start")));
                                        }
+                    lockList->SetItem(row, colpos++, qry.Left(250));
 
+
                                        row++;
                                }
                                dataSet2->MoveNext();

Modified: trunk/pgadmin3/src/schema/pgServer.cpp
===================================================================
--- trunk/pgadmin3/src/schema/pgServer.cpp      2005-06-03 19:21:18 UTC (rev 
4277)
+++ trunk/pgadmin3/src/schema/pgServer.cpp      2005-06-03 20:05:54 UTC (rev 
4278)
@@ -689,18 +689,33 @@
         statistics->AddColumn(wxT("PID"), 35);
         statistics->AddColumn(_("User"), 70);
         statistics->AddColumn(_("Database"), 70);
+        if (GetConnection()->BackendMinimumVersion(8, 1))
+        {
+            statistics->AddColumn(_("Backend start"), 70);
+            statistics->AddColumn(_("Client"), 70);
+        }
         statistics->AddColumn(_("Current Query"), 300);
 
-        pgSet *stats = ExecuteSet(wxT("SELECT datname, procpid, usename, 
current_query FROM pg_stat_activity"));
+        pgSet *stats = ExecuteSet(wxT("SELECT * FROM pg_stat_activity"));
         if (stats)
         {
             int pos=0;
             while (!stats->Eof())
             {
                 statistics->InsertItem(pos, stats->GetVal(wxT("procpid")), 0);
-                statistics->SetItem(pos, 1, stats->GetVal(wxT("usename")));
-                statistics->SetItem(pos, 2, stats->GetVal(wxT("datname")));
-                statistics->SetItem(pos, 3, 
stats->GetVal(wxT("current_query")));
+                int colpos=1;
+                statistics->SetItem(pos, colpos++, 
stats->GetVal(wxT("usename")));
+                statistics->SetItem(pos, colpos++, 
stats->GetVal(wxT("datname")));
+                if (GetConnection()->BackendMinimumVersion(8, 1))
+                {
+                    statistics->SetItem(pos, colpos++, 
stats->GetVal(wxT("backend_start")));
+                    wxString client=stats->GetVal(wxT("client_addr")) + 
wxT(":") + stats->GetVal(wxT("client_port"));
+                    if (client == wxT(":-1"))
+                        client = _("local pipe");
+                    statistics->SetItem(pos, colpos++, client);
+                }
+                statistics->SetItem(pos, colpos++, 
stats->GetVal(wxT("current_query")));
+
                 stats->MoveNext();
                 pos++;
             }


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to