From: Tim Düsterhus Date: Wed, 27 Jan 2021 10:35:04 +0000 (+0100) Subject: Stop accessing wcf1_tag_to_object.languageID during DELETE in TagEngine X-Git-Tag: 5.4.0_Alpha_1~312^2~5 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=683280d557b76be1b49032a281386d9d9d15759b;p=GitHub%2FWoltLab%2FWCF.git Stop accessing wcf1_tag_to_object.languageID during DELETE in TagEngine This stops accessing the redundant `languageID` column that is functionally dependent on the tagID (see #3803). --- diff --git a/wcfsetup/install/files/lib/system/tagging/TagEngine.class.php b/wcfsetup/install/files/lib/system/tagging/TagEngine.class.php index f8961ee6f6..1a9e9aa05c 100644 --- a/wcfsetup/install/files/lib/system/tagging/TagEngine.class.php +++ b/wcfsetup/install/files/lib/system/tagging/TagEngine.class.php @@ -41,10 +41,13 @@ class TagEngine extends SingletonFactory // remove tags prior to apply the new ones (prevents duplicate entries) if ($replace) { - $sql = "DELETE FROM wcf" . WCF_N . "_tag_to_object - WHERE objectTypeID = ? - AND objectID = ? - AND languageID = ?"; + $sql = "DELETE tag_to_object + FROM wcf" . WCF_N . "_tag_to_object tag_to_object + INNER JOIN wcf" . WCF_N . "_tag tag + ON tag.tagID = tag_to_object.tagID + WHERE tag_to_object.objectTypeID = ? + AND tag_to_object.objectID = ? + AND tag.languageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute([ $objectTypeID, @@ -111,10 +114,13 @@ class TagEngine extends SingletonFactory { $objectTypeID = $this->getObjectTypeID($objectType); - $sql = "DELETE FROM wcf" . WCF_N . "_tag_to_object - WHERE objectTypeID = ? - AND objectID = ? - " . ($languageID !== null ? "AND languageID = ?" : ""); + $sql = "DELETE tag_to_object + FROM wcf" . WCF_N . "_tag_to_object tag_to_object + INNER JOIN wcf" . WCF_N . "_tag tag + ON tag.tagID = tag_to_object.tagID + WHERE tag_to_object.objectTypeID = ? + AND tag_to_object.objectID = ? + " . ($languageID !== null ? "AND tag.languageID = ?" : ""); $statement = WCF::getDB()->prepareStatement($sql); $parameters = [ $objectTypeID,