On 22 Apr 2009, at 22:34, Melissa J. Turner wrote:


On Apr 22, 2009, at 02:12, Mike Abdullah wrote:


On 22 Apr 2009, at 08:48, Ben Trumbull wrote:

Of course, why Apple couldn't have then added automatic support
for in-memory matching as the second step I don't know

Probably because nobody ever cared enough to file an enhancement request, and it didn't occur to us that writing 1 line of code to call filteredArrayWithPredicate was so troublesome.

Calling -filteredArrayWithPredicate is no hassle, but for a large predicate, it has the bad performance of comparing a bunch of the persistent properties all over again, despite already knowing they'll match the predicate. Since I assume Core Data must do some kind of internal splitting up of the predicate in order to perform its fetch, I'd have thought it is in a good position to know what the remaining transient portion of the predicate is.

You assume incorrectly.

CoreData simply translates the predicate to SQL and passes it down to SQLite as a WHERE clause. Hence the lack of support for transient properties: SQLite has no idea what to do when you ask it to qualify by a column that doesn't exist in its schema.

OK, so I'm trying to wrap my head around this. Let's say I build a predicate along the lines of:

fooPersistent == 123 && fooTransient == 456

And then use it in a fetch request. Does Core Data:

A) Pass that predicate straight to SQLite which fails because it can't find a fooTransient column. B) Pass that predicate straight to SQLite which ignores fooTransient (presumably treating it as always evaluating to true).
C) Create a "fooPersistent == 123" predicate and pass that to SQLite.

Or of course D) something I've failed to conceive of which seems quite probable!

Regards,
Mike.


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to