From e445be12028c0d33c0a7f0ed8693e3a67c0f999c Mon Sep 17 00:00:00 2001
From: provokateurin <kate@provokateurin.de>
Date: Wed, 2 Oct 2024 11:55:27 +0200
Subject: [PATCH] fix(QueryBuilder): Account for aliases in output columns

Signed-off-by: provokateurin <kate@provokateurin.de>
---
 lib/private/DB/QueryBuilder/QueryBuilder.php | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index b42b380e3d0fa..56c860bc42c13 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -582,6 +582,9 @@ private function addOutputColumns(array $columns): void {
 			if (is_array($column)) {
 				$this->addOutputColumns($column);
 			} elseif (is_string($column) && !str_contains($column, '*')) {
+				if (str_contains(strtolower($column), ' as ')) {
+					[, $column] = preg_split('/ as /i', $column);
+				}
 				if (str_contains($column, '.')) {
 					[, $column] = explode('.', $column);
 				}
@@ -591,14 +594,7 @@ private function addOutputColumns(array $columns): void {
 	}
 
 	public function getOutputColumns(): array {
-		return array_unique(array_map(function (string $column) {
-			if (str_contains($column, '.')) {
-				[, $column] = explode('.', $column);
-				return $column;
-			} else {
-				return $column;
-			}
-		}, $this->selectedColumns));
+		return array_unique($this->selectedColumns);
 	}
 
 	/**