From c6ad571fd2ad96dc8a908ec9eb64015780db79e1 Mon Sep 17 00:00:00 2001
From: Claus Due <claus@namelesscoder.net>
Date: Sat, 26 Nov 2016 14:43:57 +0100
Subject: [PATCH] [BUGFIX] Avoid building SQL deleteClause expression if unused
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This patch avoids building an instance of ConnectionPool,
getting a QueryBuilder and building an expression unless
that expression is needed by the function.

Also switches a condition with else clause to an early
return guard clause (cosmetic only).

Change-Id: I804b3ff9e624aa4b8b9c760d2a5e858039b6f9b9
Resolves: #78806
Releases: master
Reviewed-on: https://review.typo3.org/50784
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Stephan Großberndt <stephan@grossberndt.de>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
---
 .../backend/Classes/Utility/BackendUtility.php   | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Utility/BackendUtility.php b/typo3/sysext/backend/Classes/Utility/BackendUtility.php
index d1763e5eb4cd..029edc770861 100644
--- a/typo3/sysext/backend/Classes/Utility/BackendUtility.php
+++ b/typo3/sysext/backend/Classes/Utility/BackendUtility.php
@@ -83,18 +83,16 @@ class BackendUtility
      */
     public static function deleteClause($table, $tableAlias = '')
     {
+        if (empty($GLOBALS['TCA'][$table]['ctrl']['delete'])) {
+            return '';
+        }
         $expressionBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
             ->getQueryBuilderForTable($table)
             ->expr();
-
-        if (!empty($GLOBALS['TCA'][$table]['ctrl']['delete'])) {
-            return ' AND ' . $expressionBuilder->eq(
-                ($tableAlias ?: $table) . '.' . $GLOBALS['TCA'][$table]['ctrl']['delete'],
-                0
-            );
-        } else {
-            return '';
-        }
+        return ' AND ' . $expressionBuilder->eq(
+            ($tableAlias ?: $table) . '.' . $GLOBALS['TCA'][$table]['ctrl']['delete'],
+            0
+        );
     }
 
     /**
-- 
GitLab