diff --git a/lib/Db/CircleRequest.php b/lib/Db/CircleRequest.php index af1a3a810..4aa60b8e7 100644 --- a/lib/Db/CircleRequest.php +++ b/lib/Db/CircleRequest.php @@ -308,10 +308,15 @@ private function buildProbeCircle( $aliasMembership ) ); - $qb->completeProbeWithInitiator(CoreQueryBuilder::CIRCLE, 'single_id', $aliasMembership); + $aliasInitiator = $qb->completeProbeWithInitiator(CoreQueryBuilder::CIRCLE, 'single_id', $aliasMembership); } $qb->andWhere($limit); + if (!is_null($aliasInitiator)) { + // ensure initiator is not null (desync memberships/members) + $qb->filterNull('single_id', alias: $aliasInitiator); + } + $qb->resetSqlPath(); return $qb; diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index 44af4c9d7..6d41b3deb 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -1289,15 +1289,15 @@ public function completeProbeWithInitiator( string $alias, string $field = 'single_id', string $helperAlias = '', - ): void { + ): ?string { if ($this->getType() !== QueryBuilder::SELECT) { - return; + return null; } try { $aliasInitiator = $this->generateAlias($alias, self::INITIATOR); } catch (RequestBuilderException $e) { - return; + return null; } $helperAlias = ($helperAlias === '') ? $alias : $helperAlias; @@ -1311,8 +1311,8 @@ public function completeProbeWithInitiator( $expr->eq($aliasInitiator . '.' . $field, $helperAlias . '.inheritance_first'), ) ); - // - // $this->leftJoinBasedOn($aliasInitiator); + + return $aliasInitiator; } /**