Legend:

The query classes defined in this module are used by QuerySet and Model, but it's not possible to override the subquery classes.

6

6

7

TODO: Is this necessary, at all? Probably yes if you want a clean port.

8

7

9

= Fields =

8

10

9

TODO: Check if there is any SQL-related code that needs to be more abstract (as_sql() appears in a few places, but maybe it doesn't affect the port).

11

== References: Primary keys ==

12

13

At least on App Engine the primary key itself won't be sufficient to retrieve a model if you use entity groups. In that case you need the whole path (parent + primary key) to uniquely identify the object. Since this is an App Engine feature that probably can't be mapped to other DB types we just need to support it transparently at the reference fields level. Everywhere else we can assume that the user knows about the parent requirement.

On App Engine you can only retrieve the first 1000 query results. There needs to be support for "bookmarks" which mark the next starting point.

34

38

35

On SimpleDB you can directly retrieve the bookmark of the Nth item and run the query from there. TODO(mitch?): Find out if this is efficient (even for millions of items) or if it's better to provide bookmarks at a higher level.

39

On SimpleDB you can directly retrieve the bookmark of the Nth item and run the query from there.

40

41

TODO(mitch?): Find out if this is efficient (even for millions of items) or if it's better to provide bookmarks at a higher level.