diff options
Diffstat (limited to 'lib/private/db/connection.php')
-rw-r--r-- | lib/private/db/connection.php | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php index ae5d22bf4d8..def3f2fd120 100644 --- a/lib/private/db/connection.php +++ b/lib/private/db/connection.php @@ -54,21 +54,53 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { } /** + * Returns a QueryBuilder for the connection. + * + * @return \OCP\DB\QueryBuilder\IQueryBuilder + */ + public function getQueryBuilder() { + return new QueryBuilder($this); + } + + /** + * Gets the QueryBuilder for the connection. + * + * @return \Doctrine\DBAL\Query\QueryBuilder + * @deprecated please use $this->getQueryBuilder() instead + */ + public function createQueryBuilder() { + $backtrace = $this->getCallerBacktrace(); + \OC::$server->getLogger()->debug('Doctrine QueryBuilder retrieved in {backtrace}', ['app' => 'core', 'backtrace' => $backtrace]); + return parent::createQueryBuilder(); + } + + /** * Gets the ExpressionBuilder for the connection. * - * @return \OCP\DB\QueryBuilder\IExpressionBuilder + * @return \Doctrine\DBAL\Query\Expression\ExpressionBuilder + * @deprecated please use $this->getQueryBuilder()->expr() instead */ public function getExpressionBuilder() { - return new ExpressionBuilder($this); + $backtrace = $this->getCallerBacktrace(); + \OC::$server->getLogger()->debug('Doctrine ExpressionBuilder retrieved in {backtrace}', ['app' => 'core', 'backtrace' => $backtrace]); + return parent::getExpressionBuilder(); } /** - * Gets the QueryBuilder for the connection. + * Get the file and line that called the method where `getCallerBacktrace()` was used * - * @return \OCP\DB\QueryBuilder\IQueryBuilder + * @return string */ - public function getQueryBuilder() { - return new QueryBuilder($this); + protected function getCallerBacktrace() { + $traces = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); + + // 0 is the method where we use `getCallerBacktrace` + // 1 is the target method which uses the method we want to log + if (isset($traces[1])) { + return $traces[1]['file'] . ':' . $traces[1]['line']; + } + + return ''; } /** |