Browse Source

Fix gh-680 Get control:queries working again

control:queries roxie query was disabled during refactoring for roxie queue
support. While it's not used by any UI code it was a useful debugging tool
and I miss it.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 13 years ago
parent
commit
c889065bb1
2 changed files with 29 additions and 1 deletions
  1. 28 1
      roxie/ccd/ccdstate.cpp
  2. 1 0
      roxie/ccd/ccdstate.hpp

+ 28 - 1
roxie/ccd/ccdstate.cpp

@@ -867,6 +867,22 @@ public:
         }
     }
 
+    virtual void getQueries(StringBuffer &reply) const
+    {
+        HashIterator elems(queries);
+        for (elems.first(); elems.isValid(); elems.next())
+        {
+            IMapping &cur = elems.query();
+            reply.appendf(" <Query id='%s'/>\n", queries.mapToValue(&cur)->queryQueryName());
+        }
+        HashIterator aliasIterator(aliases);
+        for (aliasIterator.first(); aliasIterator.isValid(); aliasIterator.next())
+        {
+            IMapping &cur = aliasIterator.query();
+            reply.appendf(" <Alias id='%s' query='%s'/>\n", (const char *) cur.getKey(), aliases.mapToValue(&cur)->queryQueryName());
+        }
+    }
+
     virtual IQueryFactory * lookupLibrary(const char * libraryName, unsigned expectedInterfaceHash, const IRoxieContextLogger &logctx) const
     {
 #ifdef _DEBUG
@@ -1151,6 +1167,11 @@ public:
             }
         }
     }
+    void getQueries(StringBuffer &reply) const
+    {
+        CriticalBlock b2(updateCrit);
+        serverManager->getQueries(reply);
+    }
 protected:
     void reloadQueryManagers(CRoxieSlaveQuerySetManagerSet *newSlaveManagers, IRoxieQuerySetManager *newServerManager)
     {
@@ -1829,7 +1850,13 @@ private:
         case 'Q':
             if (stricmp(queryName, "control:queries")==0)
             {
-                UNIMPLEMENTED; // only for QuerySets case...
+                reply.append("<Queries>\n");
+                ForEachItemIn(idx, allQueryPackages)
+                {
+                    CRoxieQueryPackageManager &qpm = allQueryPackages.item(idx);
+                    qpm.getQueries(reply);
+                }
+                reply.append("</Queries>\n");
             }
             else if (stricmp(queryName, "control:queryAggregates")==0)
             {

+ 1 - 0
roxie/ccd/ccdstate.hpp

@@ -115,6 +115,7 @@ interface IRoxieQuerySetManager : extends IInterface
     virtual void resetQueryTimings(const char *queryName, const IRoxieContextLogger &logctx) = 0;
     virtual void resetAllQueryTimings() = 0;
     virtual void getActivityMetrics(StringBuffer &reply) const = 0;
+    virtual void getQueries(StringBuffer &reply) const = 0;
 };
 
 interface IRoxieDebugSessionManager : extends IInterface