public Iterator query()

in hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTable.java [158:208]


    public Iterator<BackendEntry> query(BackendSession session, Query query) {
        String page = query.page();
        if (page != null && !page.isEmpty()) {
            throw new NotSupportException("paging by InMemoryDBStore");
        }

        Map<Id, BackendEntry> rs = this.store;

        if (query instanceof IdPrefixQuery) {
            IdPrefixQuery pq = (IdPrefixQuery) query;
            rs = this.queryByIdPrefix(pq.start(), pq.inclusiveStart(),
                                      pq.prefix(), rs);
        }

        if (query instanceof IdRangeQuery) {
            IdRangeQuery rq = (IdRangeQuery) query;
            rs = this.queryByIdRange(rq.start(), rq.inclusiveStart(),
                                     rq.end(), rq.inclusiveEnd(), rs);
        }

        // Query by id(s)
        if (query.idsSize() > 0) {
            rs = this.queryById(query.ids(), rs);
        }

        // Query by condition(s)
        if (query.conditionsSize() > 0) {
            ConditionQuery condQuery = (ConditionQuery) query;
            if (condQuery.containsScanRelation()) {
                return this.queryByRange(condQuery);
            }
            rs = this.queryByFilter(query.conditions(), rs);
        }

        Iterator<BackendEntry> iterator = rs.values().iterator();

        long offset = query.offset() - query.actualOffset();
        if (offset >= rs.size()) {
            query.goOffset(rs.size());
            return QueryResults.emptyIterator();
        }
        if (offset > 0L) {
            query.goOffset(offset);
            iterator = this.skipOffset(iterator, offset);
        }

        if (!query.noLimit() && query.total() < rs.size()) {
            iterator = this.dropTails(iterator, query.limit());
        }
        return iterator;
    }