thirdparty/google_appengine/google/appengine/ext/gql/__init__.py
changeset 149 f2e327a7c5de
parent 109 620f9b141567
child 1278 a7766286a7be
--- a/thirdparty/google_appengine/google/appengine/ext/gql/__init__.py	Tue Sep 16 01:18:49 2008 +0000
+++ b/thirdparty/google_appengine/google/appengine/ext/gql/__init__.py	Tue Sep 16 02:28:33 2008 +0000
@@ -248,7 +248,9 @@
                                               unused_values)
 
     if enumerated_queries:
-      logging.debug('Multiple Queries Bound: %s' % enumerated_queries)
+      logging.log(LOG_LEVEL,
+                  'Multiple Queries Bound: %s',
+                  enumerated_queries)
 
       for (query, enumerated_query) in zip(queries, enumerated_queries):
         query.update(enumerated_query)
@@ -1073,6 +1075,12 @@
     self.__bound_queries = bound_queries
     self.__orderings = orderings
 
+  def __str__(self):
+    res = 'MultiQuery: '
+    for query in self.__bound_queries:
+      res = '%s %s' % (res, str(query))
+    return res
+
   def Get(self, limit, offset=0):
     """Get results of the query with a limit on the number of results.
 
@@ -1082,7 +1090,7 @@
               the original query
 
     Returns:
-      An array of entities with at most "limit" entries (less if the query
+      A list of entities with at most "limit" entries (less if the query
       completes before reading limit values).
     """
     count = 1
@@ -1250,3 +1258,24 @@
             heapq.heappush(result_heap, popped_result)
 
     return IterateResults(results)
+
+  def Count(self, limit=None):
+    """Return the number of matched entities for this query.
+
+    Will return the de-duplicated count of results.  Will call the more
+    efficient Get() function if a limit is given.
+
+    Args:
+      limit: maximum number of entries to count (for any result > limit, return
+      limit).
+    Returns:
+      count of the number of entries returned.
+    """
+    if limit is None:
+      count = 0
+      for value in self.Run():
+        count += 1
+      return count
+    else:
+      return len(self.Get(limit))
+