def queryRequests(self, query, pageNumber, pageSize):
        '''Queries requests

        Queries the data according the the given filtering options, and returns the list of
        records (as lists) of data.

        Args:
            query: the query string
            pageNumber: the page number
            pageSize: the page size

        Returns:
            The list of records of data

        Raises:
            PersistenceException: There is DB error
        '''
        try:
            claimType = ClaimTypeFactory.load("partner_request")

            query_parser = RedisQueryParser(claimType)
            parse_tree = query_parser.parse(query)

            query_executor = RedisQueryExecutor(self.connection, claimType)
            object_ids = query_executor.visit(parse_tree)
            if pageNumber:
                start = (pageNumber-1) * pageSize
                end = start + pageSize
                object_ids = object_ids[start:end]

            for id in object_ids:
                self.cursor.hgetall(claimType.tablename + ":" + id.decode())
            claims = self.cursor.execute()

            for i in range(len(claims)):
                claims[i] = self._convert_to_tuple(claimType, claims[i])
            return claims
        except RedisQueryParserError as e:
            raise PersistenceException(*e.args)
        except RedisError as e:
            raise PersistenceException(*e.args)
    def updateRequests(self, setStr, query):
        '''Updates requests

        Updates the data according the the given filtering options.

        Args:
            setStr: the updated fields and values
            query: the query string

        Raises:
            PersistenceException: There is DB error
        '''
        try:
            claimType = ClaimTypeFactory.load("partner_request")

            query_parser = RedisQueryParser(claimType)
            parse_tree = query_parser.parse(query)

            query_executor = RedisQueryExecutor(self.connection, claimType)
            object_ids = query_executor.visit(parse_tree)

            set_key = setStr.split('=')[0].encode()
            set_val = setStr.split('=')[1].encode()

            for id in object_ids:
                self.cursor.hgetall(claimType.tablename + ":" + id.decode())
                claims = self.cursor.execute()
                for claim in claims:
                    if claim is not None:
                        self.cursor.srem(claimType.tablename + ":" + set_key.decode() + ":" + claim[set_key].decode(), int(id.decode()))
                        self.cursor.sadd(claimType.tablename + ":" + set_key.decode() + ":" + set_val.decode(), int(id.decode()))
                        claim[set_key] = set_val
                        self.cursor.hmset(claimType.tablename + ":" + id.decode(), self._convert_to_decode(claim))
            
        except RedisQueryParserError as e:
            raise PersistenceException(*e.args)
        except RedisError as e:
            raise PersistenceException(*e.args)