[Checkins] SVN: Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/ add additional method to metadata to search whether there is an index available for a particular class.property

Charith Paranaliyanage paranaliyanage at gmail.com
Fri Jul 11 01:37:02 EDT 2008


Log message for revision 88243:
  add additional method to metadata to search whether there is an index available for a particular class.property

Changed:
  U   Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/database/metadata.py
  U   Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/parser/queryparser.py

-=-
Modified: Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/database/metadata.py
===================================================================
--- Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/database/metadata.py	2008-07-11 05:05:30 UTC (rev 88242)
+++ Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/database/metadata.py	2008-07-11 05:37:00 UTC (rev 88243)
@@ -5,7 +5,7 @@
 from zope.component import getUtility
 from zope.component import getUtilitiesFor
 from zope.app.catalog.interfaces import ICatalog
-from zope.app.catalog.attribute import AttributeIndex
+from zope.app.catalog.field import FieldIndex
 from zope.app.intid import IIntIds
 import zc.relation.interfaces
 
@@ -100,12 +100,23 @@
         intids = getUtility(IIntIds)
         for name, catalog in catalogs:
             for iname, index in catalog.items():
-                if isinstance(index, AttributeIndex)and index.field_name == property and index.interface.__name__ == klass:
+                if isinstance(index, FieldIndex) and \
+                index.field_name == property and \
+                index.interface.__name__ == klass:
                     results = catalog.apply({iname:(lowerbound, upperbound)})
                     obj_list = [intids.getObject(result).name for result in results]
                     return obj_list
 
-        return None
+    def hasPropertyIndex(self, klass, property):
+        catalogs = getUtilitiesFor(ICatalog)
+        intids = getUtility(IIntIds)
+        for name, catalog in catalogs:
+            for iname, index in catalog.items():
+                if isinstance(index, FieldIndex) and \
+                index.field_name == property and \
+                index.interface.__name__ == klass:
+                    return True
+        return False
           
 
     def get_class(self, klassname):

Modified: Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/parser/queryparser.py
===================================================================
--- Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/parser/queryparser.py	2008-07-11 05:05:30 UTC (rev 88242)
+++ Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/parser/queryparser.py	2008-07-11 05:37:00 UTC (rev 88243)
@@ -351,7 +351,6 @@
     def p_expr_equery(self, t):
         r'''expr : TYPE SQUAREL xprs SQUARER
         '''
-        #I also change the expected query in parser.txt
         t[0] = Query(self.metadata, self.symbols, self.types[t[1]],t[3],None)
         
     def p_expr_query(self, t):



More information about the Checkins mailing list