function retrieve($cacheKey, $join = NULL, $where = NULL, $offset = 0, $rowCount = 0)
 {
     $query = "\nSELECT data\nFROM   civicrm_prevnext_cache pn\n{$join}\nWHERE  cacheKey = %1\n";
     $params = array(1 => array($cacheKey, 'String'));
     if ($where) {
         $query .= " AND {$where}";
     }
     if ($rowCount) {
         $query .= " LIMIT {$offset}, {$rowCount}";
     }
     $dao = CRM_Core_DAO::executeQuery($query, $params);
     $main = array();
     while ($dao->fetch()) {
         if (CRM_Core_BAO_PrevNextCache::is_serialized($dao->data)) {
             $main[] = unserialize($dao->data);
         } else {
             $main[] = $dao->data;
         }
     }
     return $main;
 }