Skip to content

Commit

Permalink
Merge pull request #49832 from nextcloud/sharding-select-fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
skjnldsv authored Dec 12, 2024
2 parents c8741b4 + 0f55a58 commit 08e959d
Showing 1 changed file with 24 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ private function newQuery(): IQueryBuilder {

// we need to save selects until we know all the table aliases
public function select(...$selects) {
if (count($selects) === 1 && is_array($selects[0])) {
$selects = $selects[0];
}
$this->selects = [];
$this->addSelect(...$selects);
return $this;
Expand All @@ -99,16 +102,33 @@ public function selectAlias($select, $alias) {
*
* This is mainly used to ensure that the returned rows from both sides of a partition contains the columns of the join predicate
*
* @param string $column
* @param string|IQueryFunction $column
* @return void
*/
private function ensureSelect(string|IQueryFunction $column, ?string $alias = null): void {
$checkColumn = $alias ?: $column;
if (str_contains($checkColumn, '.')) {
[, $checkColumn] = explode('.', $checkColumn);
[$table, $checkColumn] = explode('.', $checkColumn);
$partition = $this->getPartition($table);
} else {
$partition = null;
}
foreach ($this->selects as $select) {
if ($select['select'] === $checkColumn || $select['select'] === '*' || str_ends_with($select['select'], '.' . $checkColumn)) {
$select = $select['select'];
if (!is_string($select)) {
continue;
}

if (str_contains($select, '.')) {
[$table, $select] = explode('.', $select);
$selectPartition = $this->getPartition($table);
} else {
$selectPartition = null;
}
if (
($select === $checkColumn || $select === '*') &&
$selectPartition === $partition
) {
return;
}
}
Expand Down Expand Up @@ -284,6 +304,7 @@ private function flattenPredicates(array $predicates): array {

/**
* Split an array of predicates (WHERE query parts) by the partition they reference
*
* @param array $predicates
* @return array<string, array>
*/
Expand Down

0 comments on commit 08e959d

Please sign in to comment.