Search in sources :

Example 41 with BackendEntry

use of com.baidu.hugegraph.backend.store.BackendEntry in project incubator-hugegraph by apache.

the class SchemaTransaction method removeSchema.

protected void removeSchema(SchemaElement schema) {
    LOG.debug("SchemaTransaction remove {} by id '{}'", schema.type(), schema.id());
    LockUtil.Locks locks = new LockUtil.Locks(this.graphName());
    try {
        locks.lockWrites(LockUtil.hugeType2Group(schema.type()), schema.id());
        this.beforeWrite();
        this.indexTx.updateNameIndex(schema, true);
        BackendEntry e = this.serializer.writeId(schema.type(), schema.id());
        this.doRemove(e);
        this.afterWrite();
    } finally {
        locks.unlock();
    }
}
Also used : BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) LockUtil(com.baidu.hugegraph.util.LockUtil)

Example 42 with BackendEntry

use of com.baidu.hugegraph.backend.store.BackendEntry in project incubator-hugegraph by apache.

the class RocksDBStore method query.

@Override
public Iterator<BackendEntry> query(Query query) {
    Lock readLock = this.storeLock.readLock();
    readLock.lock();
    try {
        this.checkOpened();
        HugeType tableType = RocksDBTable.tableType(query);
        RocksDBTable table;
        RocksDBSessions.Session session;
        if (query.olap()) {
            table = this.table(this.olapTableName(tableType));
            session = this.session(HugeType.OLAP);
        } else {
            table = this.table(tableType);
            session = this.session(tableType);
        }
        Iterator<BackendEntry> entries = table.query(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(HugeType.OLAP), q));
            }
            entries = new MergeIterator<>(entries, iterators, BackendEntry::mergeable);
        }
        return entries;
    } finally {
        readLock.unlock();
    }
}
Also used : BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) Query(com.baidu.hugegraph.backend.query.Query) ArrayList(java.util.ArrayList) HugeType(com.baidu.hugegraph.type.HugeType) ReadWriteLock(java.util.concurrent.locks.ReadWriteLock) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) Lock(java.util.concurrent.locks.Lock) MergeIterator(com.baidu.hugegraph.backend.serializer.MergeIterator) Iterator(java.util.Iterator) Session(com.baidu.hugegraph.backend.store.rocksdb.RocksDBSessions.Session) Id(com.baidu.hugegraph.backend.id.Id)

Example 43 with BackendEntry

use of com.baidu.hugegraph.backend.store.BackendEntry in project incubator-hugegraph by apache.

the class BackendMutationTest method testAppendAndAppendEntryWithSameId.

@Test
public void testAppendAndAppendEntryWithSameId() {
    BackendMutation mutation = new BackendMutation();
    BackendEntry entry1 = constructBackendEntry("1", "name", "marko");
    BackendEntry entry2 = constructBackendEntry("1", "city", "Wuhan");
    mutation.add(entry1, Action.APPEND);
    mutation.add(entry2, Action.APPEND);
    Assert.assertEquals(2, get(mutation, "1").size());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(0).action());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(1).action());
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) TextBackendEntry(com.baidu.hugegraph.backend.serializer.TextBackendEntry) BaseUnitTest(com.baidu.hugegraph.unit.BaseUnitTest) Test(org.junit.Test)

Example 44 with BackendEntry

use of com.baidu.hugegraph.backend.store.BackendEntry in project incubator-hugegraph by apache.

the class BackendMutationTest method testEliminateAndAppendEntryWithSameEntry.

@Test
public void testEliminateAndAppendEntryWithSameEntry() {
    BackendMutation mutation = new BackendMutation();
    BackendEntry entry1 = constructBackendEntry("1", "name", "marko");
    BackendEntry entry2 = constructBackendEntry("1", "name", "marko");
    mutation.add(entry1, Action.ELIMINATE);
    mutation.add(entry2, Action.APPEND);
    Assert.assertEquals(1, get(mutation, "1").size());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(0).action());
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) TextBackendEntry(com.baidu.hugegraph.backend.serializer.TextBackendEntry) BaseUnitTest(com.baidu.hugegraph.unit.BaseUnitTest) Test(org.junit.Test)

Example 45 with BackendEntry

use of com.baidu.hugegraph.backend.store.BackendEntry in project incubator-hugegraph by apache.

the class BackendMutationTest method testAppendAndEliminateEntryWithSameId.

@Test
public void testAppendAndEliminateEntryWithSameId() {
    BackendMutation mutation = new BackendMutation();
    BackendEntry entry1 = constructBackendEntry("1", "name", "marko");
    BackendEntry entry2 = constructBackendEntry("1", "city", "Wuhan");
    mutation.add(entry1, Action.APPEND);
    mutation.add(entry2, Action.ELIMINATE);
    Assert.assertEquals(2, get(mutation, "1").size());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(0).action());
    Assert.assertEquals(Action.ELIMINATE, get(mutation, "1").get(1).action());
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) TextBackendEntry(com.baidu.hugegraph.backend.serializer.TextBackendEntry) BaseUnitTest(com.baidu.hugegraph.unit.BaseUnitTest) Test(org.junit.Test)

Aggregations

BackendEntry (com.baidu.hugegraph.backend.store.BackendEntry)54 Test (org.junit.Test)27 TextBackendEntry (com.baidu.hugegraph.backend.serializer.TextBackendEntry)26 BaseUnitTest (com.baidu.hugegraph.unit.BaseUnitTest)26 BackendMutation (com.baidu.hugegraph.backend.store.BackendMutation)21 HugeEdge (com.baidu.hugegraph.structure.HugeEdge)7 HugeVertex (com.baidu.hugegraph.structure.HugeVertex)7 Id (com.baidu.hugegraph.backend.id.Id)6 FakeObjects (com.baidu.hugegraph.unit.FakeObjects)6 ConditionQuery (com.baidu.hugegraph.backend.query.ConditionQuery)5 BinaryBackendEntry (com.baidu.hugegraph.backend.serializer.BinaryBackendEntry)5 HugeIndex (com.baidu.hugegraph.structure.HugeIndex)5 Query (com.baidu.hugegraph.backend.query.Query)4 BinarySerializer (com.baidu.hugegraph.backend.serializer.BinarySerializer)4 HugeConfig (com.baidu.hugegraph.config.HugeConfig)4 ArrayList (java.util.ArrayList)4 Watched (com.baidu.hugegraph.perf.PerfUtil.Watched)3 LockUtil (com.baidu.hugegraph.util.LockUtil)3 BackendException (com.baidu.hugegraph.backend.BackendException)2 Condition (com.baidu.hugegraph.backend.query.Condition)2