[wp-trac] [WordPress Trac] #22192: update_metadata() and update_option() strict checks can cause false negatives

WordPress Trac wp-trac at lists.automattic.com
Mon Oct 15 03:19:23 UTC 2012


#22192: update_metadata() and update_option() strict checks can cause false
negatives
------------------------------------------+--------------------------
 Reporter:  nacin                         |       Type:  defect (bug)
   Status:  new                           |   Priority:  normal
Milestone:  Future Release                |  Component:  Performance
  Version:                                |   Severity:  normal
 Keywords:  needs-patch needs-unit-tests  |
------------------------------------------+--------------------------
 Given this:

 {{{
 add_post_meta( $post_id, 'key', 1 );
 update_post_meta( $post_id, 'key', 1 );
 }}}

 The update should not work, because they are the same. However, the meta
 cache will have "1" as a string, and then it will strict compare it to 1
 as an integer. Thus, an unnecessary update will run.

 Best I can tell, this could also affect update_option().

 It is quite common to use integers and booleans directly into these
 functions. They should be smart enough to recognize that "1" == 1 == true
 and "0" == 0 == false, and that any numeric string is also equal to a
 properly cast integer.

 Unit tests needed.

 Ticket from which this was spun: #22189, saving navigation menus is slow.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/22192>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list