Opened 19 months ago

Last modified 10 months ago

#19198 reviewing defect (bug)

Die fast in get_posts if in_search_post_types returns nothing

Reported by: mitchoyoshitaka Owned by: ryan
Priority: normal Milestone: Awaiting Review
Component: Query Version: 3.2.1
Severity: minor Keywords: has-patch
Cc:

Description

From a comment of mine in #18364, which nacin suggested was worth a follow-up ticket:

Just noticed that this logic here might in fact have a flaw: if there are no post types which have exclude_from_search = false, then magically *all* post types will be checked? Am I reading this right? In that case, shouldn't we just immediately return no results?

Obviously, this wouldn't be an issue except in a very customized setup where all post types have exclude_from_search = true, but still... thoughts anyone?

Attachments (2)

19198.diff (889 bytes) - added by mitchoyoshitaka 19 months ago.
19198.2.diff (708 bytes) - added by mitchoyoshitaka 19 months ago.

Download all attachments as: .zip

Change History (5)

  • Owner set to ryan
  • Status changed from new to reviewing

This patch incorporates two decisions:

  1. Whether to just kill the query immediately or to continue building the (no-row-returning) query. I believe we *should* continue to build the SQL query and let it run as some filter might come along and save the query, making it non-trivial.
  2. How to create a . My first intuition was to always add null to the list of post_types in (), but then trivial cases such as post_types in (null, 'post') has the potential of being (probably only a little) slower than post_types in ('post'). The solution presented here just makes it post_types in (null) in cases when $in_search_post_types is empty.

Feedback welcome.

1=0 is generally how we kill a query.

  • Version set to 3.2.1
Note: See TracTickets for help on using tickets.