python - App Engine's UnindexedProperty contains strange code -
please me understand this:
on v1.6.6 it's in line 2744 of google/appengine/ext/db/__init__.py:
class unindexedproperty(property): """a property isn't indexed either built-in or composite indices. textproperty , blobproperty derive class. """ def __init__(self, *args, **kwds): """construct property. see property class details. raises: configurationerror if indexed=true. """ self._require_parameter(kwds, 'indexed', false) kwds['indexed'] = true super(unindexedproperty, self).__init__(*args, **kwds) . . . after constrained indexed parameter false - set true!
before 1.2.2, filter queries property type, text , blob. did return empty lists, worked. version 1.2.2 introduced indexed attribute properties allows disable indexing of selected properties[1]. since then, property want query on must indexed or throw exception.
we know text , blob properties can not indexed. not changing else, queries on properties raising exceptions 1.2.2 on (which didn't before). in order not introduce regression , break existing apps, line kwds['indexed'] = true added unindexedproperty class.
if have control on depending code, have been cleaner solution start raising exception. in light of not breaking existing apps, decided patch it.
you can try changing kwds['indexed'] = true kwds['indexed'] = false , run snippet:
from google.appengine.ext import db class testmodel(db.model): text = db.textproperty() testmodel(text='foo').put() print testmodel.all().filter('text =', 'foo').fetch(10) [1] http://code.google.com/p/googleappengine/source/browse/trunk/python/release_notes#1165
Comments
Post a Comment