Merge pull request #24500 from nextcloud/bugfix/noid/log_query_no_crash

Prevent log_query to mess up regular execution flow
This commit is contained in:
Roeland Jago Douma 2020-12-02 16:15:26 +01:00 committed by GitHub
commit d69407963c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) . '\')';
} else {
$params[] = $placeholder . ' => \'' . $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 {
$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);
}
}