From bf7184ad9cab33210d32ce06e90c3ee27374ffe6 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Mon, 19 Jul 2021 18:57:56 +0200 Subject: [PATCH] [3.x] [RFC] Fix SQL error 1093 in com_finder's removeOrphanNodes function with particular MySQL server versions (#34818) --- .../com_finder/helpers/indexer/taxonomy.php | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/administrator/components/com_finder/helpers/indexer/taxonomy.php b/administrator/components/com_finder/helpers/indexer/taxonomy.php index e27329f3bf3a4..cefa126c46eb2 100644 --- a/administrator/components/com_finder/helpers/indexer/taxonomy.php +++ b/administrator/components/com_finder/helpers/indexer/taxonomy.php @@ -329,23 +329,29 @@ public static function removeOrphanNodes() { // Delete all orphaned nodes. $db = JFactory::getDbo(); - $query = $db->getQuery(true); - $subquery = $db->getQuery(true); - $subquery1 = $db->getQuery(true); - $subquery1->select($db->quoteName('t.id')) + $query = $db->getQuery(true) + ->select($db->quoteName('t.id')) ->from($db->quoteName('#__finder_taxonomy', 't')) ->join('LEFT', $db->quoteName('#__finder_taxonomy_map', 'm') . ' ON ' . $db->quoteName('m.node_id') . '=' . $db->quoteName('t.id')) ->where($db->quoteName('t.parent_id') . ' > 1 ') ->where($db->quoteName('m.link_id') . ' IS NULL'); - $subquery->select($db->quoteName('id')) - ->from('(' . $subquery1 . ') temp'); + $db->setQuery($query); + + $ids = $db->loadColumn(); + + if (empty($ids)) + { + return 0; + } - $query->delete($db->quoteName('#__finder_taxonomy')) - ->where($db->quoteName('id') . ' IN (' . $subquery . ')'); + $query->clear() + ->delete($db->quoteName('#__finder_taxonomy')) + ->where($db->quoteName('id') . ' IN (' . implode(',', $ids) . ')'); $db->setQuery($query); + $db->execute(); return $db->getAffectedRows();