protected function processSubSelect(Select $subselect, PlatformInterface $platform, Driver\DriverInterface $driver = null, Parameters $parameters = null) { if ($driver) { // Track subselect prefix and count for parameters $this->processInfo['subselectCount']++; $subselect->processInfo['subselectCount'] = $this->processInfo['subselectCount']; $subselect->processInfo['paramPrefix'] = 'subselect' . $subselect->processInfo['subselectCount']; // call subselect $stmt = $subselect->prepareStatement($platform, $driver); // copy count $this->processInfo['subselectCount'] = $subselect->processInfo['subselectCount']; if ($parameters) { $parameters->merge($stmt->getParameters()); } $sql = $stmt->getSql(); } else { $sql = $subselect->getSqlString($platform); } return $sql; }