Search in sources :

Example 1 with Query

use of com.baidu.hugegraph.backend.query.Query in project incubator-hugegraph by apache.

the class HugeVertex method edges.

@Watched(prefix = "vertex")
@Override
public Iterator<Edge> edges(Direction tinkerpopDir, String... edgeLabels) {
    Directions direction = Directions.convert(tinkerpopDir);
    // NOTE: get edges from memory if load all edges when loading vertex.
    if (this.existsEdges()) {
        return this.getEdges(direction, edgeLabels);
    }
    Id[] edgeLabelIds = this.graph().mapElName2Id(edgeLabels);
    Query query = GraphTransaction.constructEdgesQuery(this.id(), direction, edgeLabelIds);
    return this.graph().edges(query);
}
Also used : Query(com.baidu.hugegraph.backend.query.Query) ConditionQuery(com.baidu.hugegraph.backend.query.ConditionQuery) Directions(com.baidu.hugegraph.type.define.Directions) Id(com.baidu.hugegraph.backend.id.Id) Watched(com.baidu.hugegraph.perf.PerfUtil.Watched)

Example 2 with Query

use of com.baidu.hugegraph.backend.query.Query in project incubator-hugegraph by apache.

the class QueryTest method testOrderBy.

@Test
public void testOrderBy() {
    Query query = new Query(HugeType.VERTEX);
    Assert.assertTrue(query.orders().isEmpty());
    query.order(HugeKeys.NAME, Order.ASC);
    Assert.assertEquals(ImmutableMap.of(HugeKeys.NAME, Order.ASC), query.orders());
}
Also used : IdPrefixQuery(com.baidu.hugegraph.backend.query.IdPrefixQuery) ConditionQuery(com.baidu.hugegraph.backend.query.ConditionQuery) IdRangeQuery(com.baidu.hugegraph.backend.query.IdRangeQuery) IdQuery(com.baidu.hugegraph.backend.query.IdQuery) Query(com.baidu.hugegraph.backend.query.Query) Test(org.junit.Test)

Example 3 with Query

use of com.baidu.hugegraph.backend.query.Query in project incubator-hugegraph by apache.

the class QueryTest method testToString.

@Test
public void testToString() {
    Query query = new Query(HugeType.VERTEX);
    Assert.assertEquals("`Query * from VERTEX`", query.toString());
    query.page("p1");
    Assert.assertEquals("`Query * from VERTEX page 'p1'`", query.toString());
    query = new Query(HugeType.VERTEX);
    query.limit(10L);
    Assert.assertEquals("`Query * from VERTEX limit 10`", query.toString());
    query = new Query(HugeType.VERTEX);
    query.aggregate(AggregateFunc.COUNT, null);
    query.limit(10L);
    Assert.assertEquals("`Query count(*) from VERTEX limit 10`", query.toString());
    query = new Query(HugeType.VERTEX);
    query.aggregate(AggregateFunc.MAX, "age");
    query.limit(10L);
    Assert.assertEquals("`Query max(age) from VERTEX limit 10`", query.toString());
    query = new Query(HugeType.VERTEX);
    query.page("p2");
    query.limit(10L);
    Assert.assertEquals("`Query * from VERTEX page 'p2', limit 10`", query.toString());
    query = new Query(HugeType.VERTEX);
    query.page("p3");
    query.offset(100L);
    query.limit(10L);
    Assert.assertEquals("`Query * from VERTEX page 'p3', offset 100, " + "limit 10`", query.toString());
    query = new Query(HugeType.VERTEX);
    query.page("");
    query.offset(100L);
    query.limit(10L);
    query.order(HugeKeys.NAME, Order.ASC);
    query.order(HugeKeys.FIELDS, Order.DESC);
    Assert.assertEquals("`Query * from VERTEX page '', offset 100, " + "limit 10, order by {NAME=ASC, FIELDS=DESC}`", query.toString());
    IdQuery query2 = new IdQuery(HugeType.VERTEX, IdGenerator.of(1));
    query2.query(IdGenerator.of(3));
    query2.limit(10L);
    Assert.assertEquals("`Query * from VERTEX limit 10 where id in [1, 3]`", query2.toString());
    ConditionQuery query3 = new ConditionQuery(HugeType.EDGE);
    query3.eq(HugeKeys.LABEL, 3);
    query3.gt(HugeKeys.PROPERTIES, 10);
    query3.lt(HugeKeys.PROPERTIES, 18);
    query3.limit(10L);
    String qStr = query3.toString();
    Assert.assertTrue(qStr.contains("`Query * from EDGE limit 10 where ["));
    Assert.assertTrue(qStr.contains("LABEL == 3"));
    Assert.assertTrue(qStr.contains("PROPERTIES > 10"));
    Assert.assertTrue(qStr.contains("PROPERTIES < 18"));
    ConditionQuery query4 = new ConditionQuery(HugeType.EDGE);
    query4.query(ImmutableSet.of(IdGenerator.of(1), IdGenerator.of(3)));
    query4.eq(HugeKeys.LABEL, 3);
    query4.lt(HugeKeys.PROPERTIES, 18);
    query4.limit(10L);
    qStr = query4.toString();
    Assert.assertTrue(qStr.contains("`Query * from EDGE limit 10 " + "where id in [1, 3] and ["));
    Assert.assertTrue(qStr.contains("LABEL == 3"));
    Assert.assertTrue(qStr.contains("PROPERTIES < 18"));
}
Also used : IdPrefixQuery(com.baidu.hugegraph.backend.query.IdPrefixQuery) ConditionQuery(com.baidu.hugegraph.backend.query.ConditionQuery) IdRangeQuery(com.baidu.hugegraph.backend.query.IdRangeQuery) IdQuery(com.baidu.hugegraph.backend.query.IdQuery) Query(com.baidu.hugegraph.backend.query.Query) ConditionQuery(com.baidu.hugegraph.backend.query.ConditionQuery) IdQuery(com.baidu.hugegraph.backend.query.IdQuery) Test(org.junit.Test)

Example 4 with Query

use of com.baidu.hugegraph.backend.query.Query in project incubator-hugegraph by apache.

the class CassandraStore method query.

@Override
public Iterator<BackendEntry> query(Query query) {
    this.checkOpened();
    HugeType type = CassandraTable.tableType(query);
    String tableName = query.olap() ? this.olapTableName(type) : type.string();
    CassandraTable table = this.table(tableName);
    Iterator<BackendEntry> entries = table.query(this.session(), query);
    // Merge olap results as needed
    Set<Id> olapPks = query.olapPks();
    if (this.isGraphStore && !olapPks.isEmpty()) {
        List<Iterator<BackendEntry>> iterators = new ArrayList<>();
        for (Id pk : olapPks) {
            Query q = query.copy();
            table = this.table(this.olapTableName(pk));
            iterators.add(table.query(this.session(), q));
        }
        entries = new MergeIterator<>(entries, iterators, BackendEntry::mergeable);
    }
    return entries;
}
Also used : BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) Query(com.baidu.hugegraph.backend.query.Query) Iterator(java.util.Iterator) MergeIterator(com.baidu.hugegraph.backend.serializer.MergeIterator) ArrayList(java.util.ArrayList) Id(com.baidu.hugegraph.backend.id.Id) HugeType(com.baidu.hugegraph.type.HugeType)

Example 5 with Query

use of com.baidu.hugegraph.backend.query.Query in project incubator-hugegraph by apache.

the class BinarySerializer method prefixQuery.

private static Query prefixQuery(ConditionQuery query, Id prefix) {
    Query newQuery;
    if (query.paging() && !query.page().isEmpty()) {
        /*
             * If used paging and the page number is not empty, deserialize
             * the page to id and use it as the starting row for this query
             */
        byte[] position = PageState.fromString(query.page()).position();
        E.checkArgument(Bytes.compare(position, prefix.asBytes()) >= 0, "Invalid page out of lower bound");
        BinaryId start = new BinaryId(position, null);
        newQuery = new IdPrefixQuery(query, start, prefix);
    } else {
        newQuery = new IdPrefixQuery(query, prefix);
    }
    return newQuery;
}
Also used : BinaryId(com.baidu.hugegraph.backend.serializer.BinaryBackendEntry.BinaryId) Query(com.baidu.hugegraph.backend.query.Query) ConditionQuery(com.baidu.hugegraph.backend.query.ConditionQuery) IdPrefixQuery(com.baidu.hugegraph.backend.query.IdPrefixQuery) IdRangeQuery(com.baidu.hugegraph.backend.query.IdRangeQuery) IdPrefixQuery(com.baidu.hugegraph.backend.query.IdPrefixQuery)

Aggregations

Query (com.baidu.hugegraph.backend.query.Query)31 ConditionQuery (com.baidu.hugegraph.backend.query.ConditionQuery)24 Id (com.baidu.hugegraph.backend.id.Id)11 HugeGraph (com.baidu.hugegraph.HugeGraph)9 IdQuery (com.baidu.hugegraph.backend.query.IdQuery)9 HugeType (com.baidu.hugegraph.type.HugeType)7 Iterator (java.util.Iterator)7 Watched (com.baidu.hugegraph.perf.PerfUtil.Watched)6 HugeEdge (com.baidu.hugegraph.structure.HugeEdge)6 HugeVertex (com.baidu.hugegraph.structure.HugeVertex)6 Vertex (org.apache.tinkerpop.gremlin.structure.Vertex)6 BackendEntry (com.baidu.hugegraph.backend.store.BackendEntry)5 Edge (org.apache.tinkerpop.gremlin.structure.Edge)5 Test (org.junit.Test)5 HugeException (com.baidu.hugegraph.HugeException)4 BackendException (com.baidu.hugegraph.backend.BackendException)4 GraphTransaction (com.baidu.hugegraph.backend.tx.GraphTransaction)4 ArrayList (java.util.ArrayList)4 IdPrefixQuery (com.baidu.hugegraph.backend.query.IdPrefixQuery)3 IdRangeQuery (com.baidu.hugegraph.backend.query.IdRangeQuery)3