Thanks :) On Thu, Mar 18, 2010 at 11:55 AM, Jeff Schnitzer <[email protected]>wrote:
> Here's a link: > > http://groups.google.com/group/google-appengine/browse_thread/thread/2f6aa695a80fd5de > > Jeff > > On Thu, Mar 18, 2010 at 9:22 AM, Tristan <[email protected]> > wrote: > > Jeff, > > > > Sounds to me like you're correct in the "not only don't set single- > > property indexes, but also don't include the property in any custom > > indexes" interpretation of setUnindexedProperty. Can you post the link > > to the continuation post? I'm curious what Googlers have to say about > > it. > > > > Tristan > > > > > > > > On Mar 18, 11:13 am, Jeff Schnitzer <[email protected]> wrote: > >> This doesn't make sense to me. > >> > >> Every scrap of documentation I've found says that GAE queries only > >> follow a single index (the one exception being zigzag merges, which > >> don't apply here). This means that to answer my query.filter(foo, > >> "fooValue1").sort("-bar"), there must be an index that contains the > >> foo and bar data sorted appropriately, no? Ie: > >> > >> /Thing/foo:fooValue1/bar:bar9/[thekeyvalue] > >> /Thing/foo:fooValue1/bar:bar8/[thekeyvalue] > >> /Thing/foo:fooValue1/bar:bar7/[thekeyvalue] > >> /Thing/foo:fooValue2/bar:bar8/[thekeyvalue] > >> /Thing/foo:fooValue2/bar:bar7/[thekeyvalue] > >> > >> To satisfy this query, GAE should start following this custom index > >> and that's pretty much it. There's no reason for it to touch the > >> single-property indexes (foo ASC, foo DESC, bar ASC, and bar DESC). > >> > >> ...and in my test, if I remove the custom index from > >> datastore-indexes.xml, it doesn't work. But also if I use > >> setUnindexedProperty, it doesn't work. > >> > >> It's like setUnindexedProperty is being interpreted as "not only don't > >> set single-property indexes, but also don't include the property in > >> any custom indexes". This is counterintuitive - if I wanted the index > >> not to be built, I can just remove the index. > >> > >> I realize now that perhaps I posted this to the wrong mailing list. > >> The guys who created the I/O videos about the datastore seem to be > >> python fans, so I'll retry my original post on the google-appengine > >> list. > >> > >> Jeff > >> > >> > >> > >> On Thu, Mar 18, 2010 at 8:00 AM, Tristan <[email protected]> > wrote: > >> > Not official but been doing this for a while. > >> > >> > Your custom index is most likely build from the query. So, when you > >> > do > >> > >> > Query query = new Query("Thing"); > >> > query.addFilter("foo", FilterOperator.EQUAL, "fooValue"); > >> > query.addSort("bar", SortDirection.DESCENDING); > >> > >> > That is what builds your custom index. > >> > >> > However, when you setUnindexedProperty here > >> > >> > Entity ent = new Entity("Thing"); > >> > ent.setUnindexedProperty("foo", "fooValue"); > >> > ent.setUnindexedProperty("bar", 123L); > >> > >> > You are not generating any index entries. > >> > >> > So the issue isn't that "adding custom indexes after-the-fact [is] > >> > really, really painful" but that you are not generating any indexes > >> > for the datastore to run the queries against when you use > >> > setUnindexedProperty(). In other words, when you execute a query, it > >> > checks the index to give you results. But you marked your data as > >> > "don't index me," so there is nothing for query to work with, as far > >> > as it is concerned, there's nothing in the datastore. > >> > >> > Cheers! > >> > >> > On Mar 16, 4:07 pm, Jeff Schnitzer <[email protected]> wrote: > >> >> On Mon, Mar 15, 2010 at 11:04 PM, John Patterson < > [email protected]> wrote: > >> > >> >> > On 16 Mar 2010, at 12:25, Jeff Schnitzer wrote: > >> > >> >> >> I'm puzzled by the behavior of custom indexes. I have a simple > test > >> >> >> case below, a simple equality filter on one property combined with > a > >> >> >> descending sort on another property. If I set the properties with > >> >> >> setUnindexedProperty(), the query fails to find the result. If I > set > >> >> >> the properties with setProperty(), it does. > >> > >> >> > I also wondered why - I assume that the custom index build reads > the single > >> >> > property indexes directly which must be more efficient than reading > the > >> >> > Entities "table". > >> > >> >> I guess that is possible, but seems like a poor design decision. It > >> >> makes adding custom indexes after-the-fact really, really painful. > >> > >> >> Can someone official chime in on this? Is it intended behavior, or > >> >> should we file an issue against it? The documentation doesn't say > >> >> much on the subject, and all the conceptual explanation of queries > >> >> suggests that these extra single-property indexes will be unused. > >> > >> >> Jeff > >> > >> > -- > >> > You received this message because you are subscribed to the Google > Groups "Google App Engine for Java" group. > >> > To post to this group, send email to > [email protected]. > >> > To unsubscribe from this group, send email to > [email protected]<google-appengine-java%[email protected]> > . > >> > For more options, visit this group athttp:// > groups.google.com/group/google-appengine-java?hl=en. > > > > -- > > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > > To post to this group, send email to > [email protected]. > > To unsubscribe from this group, send email to > [email protected]<google-appengine-java%[email protected]> > . > > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > > > > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to > [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-appengine-java%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" 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-java?hl=en.
