private function makeQueryResultForCount(FederateResultSet $federateResultSet, Query $query) { $queryResult = new QueryResult($query->getDescription()->getPrintrequests(), $query, array(), $this->store, false); if ($federateResultSet->getErrorCode() === FederateResultSet::ERROR_NOERROR) { $queryResult->setCountValue($federateResultSet->getNumericValue()); } else { $queryResult->addErrors(array(wfMessage('smw_db_sparqlqueryproblem')->inContentLanguage()->text())); } return $queryResult; }
/** * Using a preprocessed internal query description referenced by $rootid, compute * the proper counting output for the given query. * * @param Query $query * @param integer $rootid * * @return integer */ private function getCountQueryResult(Query $query, $rootid) { $queryResult = new QueryResult($query->getDescription()->getPrintrequests(), $query, array(), $this->store, false); $queryResult->setCountValue(0); $qobj = $this->querySegmentList[$rootid]; if ($qobj->joinfield === '') { // empty result, no query needed return 0; } $db = $this->store->getConnection('mw.db'); $sql_options = array('LIMIT' => $query->getLimit() + 1, 'OFFSET' => $query->getOffset()); $res = $db->select($db->tableName($qobj->joinTable) . " AS {$qobj->alias}" . $qobj->from, "COUNT(DISTINCT {$qobj->alias}.smw_id) AS count", $qobj->where, __METHOD__, $sql_options); $row = $db->fetchObject($res); $count = $row->count; $db->freeResult($res); $queryResult->setCountValue($count); return $queryResult; }