From d111e88d4c0c68661439e2323c953ef6d28669f0 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 4 Nov 2020 17:02:23 +0100 Subject: [PATCH] Fix order of GREATEST for Oracle As per https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions060.htm Oracle uses the first value to cast the rest or the values. So when the first value is a plain int, instead of doing the math, it will cast the expression to int and continue with a potential 0. Signed-off-by: Joas Schilling --- lib/private/Files/Cache/Propagator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php index c9200d33b1..53e56c3773 100644 --- a/lib/private/Files/Cache/Propagator.php +++ b/lib/private/Files/Cache/Propagator.php @@ -104,9 +104,9 @@ class Propagator implements IPropagator { $builder = $this->connection->getQueryBuilder(); $builder->update('filecache') ->set('size', $builder->func()->greatest( - $builder->createNamedParameter(-1, IQueryBuilder::PARAM_INT), - $builder->func()->add('size', $builder->createNamedParameter($sizeDifference))) - ) + $builder->func()->add('size', $builder->createNamedParameter($sizeDifference)), + $builder->createNamedParameter(-1, IQueryBuilder::PARAM_INT) + )) ->where($builder->expr()->eq('storage', $builder->createNamedParameter($storageId, IQueryBuilder::PARAM_INT))) ->andWhere($builder->expr()->in('path_hash', $hashParams)) ->andWhere($builder->expr()->gt('size', $builder->expr()->literal(-1, IQueryBuilder::PARAM_INT)));