summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2020-12-02 16:15:26 +0100
committerGitHub <noreply@github.com>2020-12-02 16:15:26 +0100
commitd69407963c68ac901ca950d956856aa99d24acf0 (patch)
treead6ceb0bb764dd9532447150bb88f991875da675
parente25a62c69dc83ba5655577181f4ea41a47c742b5 (diff)
parenta50bcdabccf9334160092dc88bbd4a6d615fab82 (diff)
downloadnextcloud-server-d69407963c68ac901ca950d956856aa99d24acf0.tar.gz
nextcloud-server-d69407963c68ac901ca950d956856aa99d24acf0.zip
Merge pull request #24500 from nextcloud/bugfix/noid/log_query_no_crash
Prevent log_query to mess up regular execution flow
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php42
1 files changed, 25 insertions, 17 deletions
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index c2686f7b4a0..ebd715df1c1 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -193,25 +193,33 @@ class QueryBuilder implements IQueryBuilder {
*/
public function execute() {
if ($this->systemConfig->getValue('log_query', false)) {
- $params = [];
- foreach ($this->getParameters() as $placeholder => $value) {
- if (is_array($value)) {
- $params[] = $placeholder . ' => (\'' . implode('\', \'', $value) . '\')';
+ try {
+ $params = [];
+ foreach ($this->getParameters() as $placeholder => $value) {
+ if ($value instanceof \DateTime) {
+ $params[] = $placeholder . ' => DateTime:\'' . $value->format('c') . '\'';
+ } elseif (is_array($value)) {
+ $params[] = $placeholder . ' => (\'' . implode('\', \'', $value) . '\')';
+ } else {
+ $params[] = $placeholder . ' => \'' . $value . '\'';
+ }
+ }
+ if (empty($params)) {
+ $this->logger->debug('DB QueryBuilder: \'{query}\'', [
+ 'query' => $this->getSQL(),
+ 'app' => 'core',
+ ]);
} else {
- $params[] = $placeholder . ' => \'' . $value . '\'';
+ $this->logger->debug('DB QueryBuilder: \'{query}\' with parameters: {params}', [
+ 'query' => $this->getSQL(),
+ 'params' => implode(', ', $params),
+ 'app' => 'core',
+ ]);
}
- }
- if (empty($params)) {
- $this->logger->debug('DB QueryBuilder: \'{query}\'', [
- 'query' => $this->getSQL(),
- 'app' => 'core',
- ]);
- } else {
- $this->logger->debug('DB QueryBuilder: \'{query}\' with parameters: {params}', [
- 'query' => $this->getSQL(),
- 'params' => implode(', ', $params),
- 'app' => 'core',
- ]);
+ } catch (\Error $e) {
+ // likely an error during conversion of $value to string
+ $this->logger->debug('DB QueryBuilder: error trying to log SQL query');
+ $this->logger->logException($e);
}
}