Right which is why I keep telling people that with the new permissions system, don't call permission_p in your where clause but use the acs_object_party_privilege_map (or whatever it's called) with an "exists" subselect instead.
Only call permission_p if you need to determine permissions on rows that are returned. Preferably when you're not returning a lot of rows.
Barry ... the 4.6 and later permissions calls are much, much faster than 4.2 when there are lots of objects, deep permissions hierarchies, etc.