[wp-trac] [WordPress Trac] #22023: Remove UNIQUE for slug in wp_terms

WordPress Trac noreply at wordpress.org
Wed Nov 5 00:59:56 UTC 2014


#22023: Remove UNIQUE for slug in wp_terms
---------------------------------+---------------------------
 Reporter:  nacin                |       Owner:  boonebgorges
     Type:  enhancement          |      Status:  closed
 Priority:  high                 |   Milestone:  4.1
Component:  Taxonomy             |     Version:  2.3
 Severity:  normal               |  Resolution:  fixed
 Keywords:  has-patch 4.1-early  |     Focuses:
---------------------------------+---------------------------

Comment (by boonebgorges):

 In [changeset:"30238"]:
 {{{
 #!CommitTicketReference repository="" revision="30238"
 In `wp_insert_term()`, clean up accidental duplicate terms after insert.

 In [30056], the UNIQUE index was removed from the 'slug' column of
 `wp_terms`.
 While we have numerous checks in place to avoid the creation of unwanted
 duplicate term+term_taxonomy pairs, it's possible that in certain edge
 cases -
 such as during the lag caused by database replication, or a race condition
 involving near-simultaneous creation of more than one term - we'll end up
 unwittingly inserting two identical rows.

 The current changeset minimizes this risk by introducing a failsafe
 mechanism
 into `wp_insert_term()`. After a term and term_taxonomy are INSERTed, we
 check
 to see whether the term just created is a duplicate of an existing term;
 if so,
 we delete the new one and keep the old one. This prevents problems caused
 by
 replication lag, because SELECT queries that take place after an INSERT
 will
 hit the master database; it mitigates race conditions by enforcing that
 the
 term that was created first (ie, the one with the lowest `term_id`) is
 always the "canonical" one.

 Props nacin, markjaquith.
 See #22023, #5809.
 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/22023#comment:55>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list