IdoQuery: Lowercase subquery ci filters on postgres

fixes #4178

(cherry picked from commit 4505e29ce3840f7f8ba7f168c5b9b1bd2ce428fb)
This commit is contained in:
Johannes Meyer 2020-06-16 09:59:19 +02:00
parent 55d66f0e6b
commit eb2e842a36

View File

@ -568,6 +568,13 @@ abstract class IdoQuery extends DbQuery
$and = false;
}
$alias = $filter->getColumn();
$column = $subQuery->aliasToColumnName($alias);
if (isset($this->caseInsensitiveColumns[$subQuery->aliasToTableName($alias)][$alias])) {
$column = 'LOWER( ' . $column . ' )';
$subQueryFilter->setExpression(array_map('strtolower', $subQueryFilter->getExpression()));
}
$additional = null;
list($theirs, $ours) = $this->joinSubQuery($subQuery, $queryName, $subQueryFilter, $and, $negate, $additional);
@ -620,7 +627,7 @@ abstract class IdoQuery extends DbQuery
$subQueryFilter->setColumn(preg_replace(
'/(?<=^|\s)\w+(?=\.)/',
'sub_$0',
$subQuery->aliasToColumnName($filter->getColumn())
$column
));
if ($negate) {