Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }