From 683280d557b76be1b49032a281386d9d9d15759b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim=20D=C3=BCsterhus?= Date: Wed, 27 Jan 2021 11:35:04 +0100 Subject: [PATCH] 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). --- .../lib/system/tagging/TagEngine.class.php | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) 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, -- 2.20.1