Read the last bullet point here:

http://code.google.com/p/objectify-appengine/wiki/Concepts?tm=6#Indexes

You've stumbled across one of the quirks of appengine - entities do
not participate in a multi-property index unless every individual
property also participates in a single-property index.

Star this issue:

http://code.google.com/p/googleappengine/issues/detail?id=4231

Jeff

On Mon, Apr 25, 2011 at 11:14 AM, Braam Smith <[email protected]> wrote:
> Hi I'm building my first GAE app, starting from the bottom up (i.e.
> datastore first). AppEngine SDK 1.4.3 via Google Plugin for Eclipse
> Helios 3.6.1, with Objectify 2.2.3 to abstract datastore interactions.
>
> I haven't yet used the dev server as I haven't yet built the web front-
> end that will use this first DAO I've developed. This is largely
> because of the discovery in the AppEngine docs of the "Local Unit
> Testing" capabilities, in particular:
>
> com.google.appengine.tools.development.testing.LocalServiceTestHelper
> and
> com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig
>
> (http://code.google.com/appengine/docs/java/tools/
> localunittesting.html)
>
> Short story for the uninitiated is that instead of running the dev
> server and having dev data progressively persisted to disk (i.e. the
> "Dev" datastore), the "Test" datastore is by default in-memory only
> and its contents cleared between JUnit @Test cases.
>
> My problem is that the "Test" datastore does not seem to honour the /
> war/WEB-INF/datastore-indexes.xml file. My DAO includes a method that
> queries an entity using a composite (2 field) index, which is
> specified in the index config file, but the query through Objectify to
> the "Test" datastore doesn't find the record.
>
> HOWEVER, if I individually index the two columns that make up my
> composite index (done in Objectify by adding the @Indexed annotation
> to the corresponding fields within an @Unindexed entity), the query
> through Objectify that filters on both these fields successfully
> returns the record from the "Test" datastore.
>
> So whilst I can work around it, this will result in needing two
> indexes to support the one query when I should be able to get it to
> work with one pre-specified in the index config. Not a major issue
> now, but inevitably there will be a large entity set that I will need
> to query with many columns and unnecessarily duplicating these indexes
> just so my JUnits can work is not desirable.
>
> I'm now re-evaluating whether this "Test" datastore is worth investing
> any more effort in pursuing. This is a shame because the concept is
> spot on.
>
> Other suspicions I have about the completeness of the implementation
> of the LocalDatastoreServiceTestConfig with respect to pre-configured
> indexes are:
> 1. A call to LocalDatastoreServiceTestConfig.setNoIndexAutoGen(false)
> forces the local environment to write the Auto Index Configuration
> file, however even when I had no datastore-indexes.xml file, and
> performed this 2-field filtering query, the contents of the datastore-
> indexes-auto.xml file that was written was an empty <datastore-
> indexes /> root element.
> 2. The location of the datastore-indexes-auto.xml file written in #1
> above was to /WEB-INF/appengine-generated in my workspace, whereas the
> docs (http://code.google.com/appengine/docs/java/config/
> indexconfig.html) indicates the dev server would write this to /war/
> WEB-INF/appengine-generated
>
> Has anyone had any success in using composite indexes with the "Test"
> Datastore, or with the generation of the Auto Index Configuration?
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/google-appengine?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to