summaryrefslogtreecommitdiffstats
path: root/lib/private/db/connection.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/db/connection.php')
-rw-r--r--lib/private/db/connection.php44
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 '';
}
/**