/** * Simplify the query by flattening out subqueries. * Modifies the passed query object directly. */ public function simplify(Query $query) { $arPatterns = $query->getResultPart(); self::dropEmpty($arPatterns); $arPlan = $this->createPlan($arPatterns); if (count($arPlan) == 0) { $query->setResultPart($arPatterns); return 0; } $this->executePlan($arPatterns, $arPlan); $query->setResultPart($arPatterns); }