Search in sources :

Example 26 with LogicManager

use of com.vaticle.typedb.core.logic.LogicManager in project typedb by vaticle.

the class ReasonerTest method test_exception_kills_query.

@Test
public void test_exception_kills_query() {
    try (CoreSession session = databaseMgr.session(database, Arguments.Session.Type.SCHEMA)) {
        try (CoreTransaction txn = singleThreadElgTransaction(session, Arguments.Transaction.Type.WRITE)) {
            ConceptManager conceptMgr = txn.concepts();
            LogicManager logicMgr = txn.logic();
            EntityType milk = conceptMgr.putEntityType("milk");
            AttributeType ageInDays = conceptMgr.putAttributeType("age-in-days", AttributeType.ValueType.LONG);
            AttributeType isStillGood = conceptMgr.putAttributeType("is-still-good", AttributeType.ValueType.BOOLEAN);
            milk.setOwns(ageInDays);
            milk.setOwns(isStillGood);
            logicMgr.putRule("old-milk-is-not-good", TypeQL.parsePattern("{ $x isa milk, has age-in-days >= 10; }").asConjunction(), TypeQL.parseVariable("$x has is-still-good false").asThing());
            txn.commit();
        }
    }
    try (CoreSession session = databaseMgr.session(database, Arguments.Session.Type.DATA)) {
        try (CoreTransaction txn = singleThreadElgTransaction(session, Arguments.Transaction.Type.WRITE)) {
            txn.query().insert(TypeQL.parseQuery("insert $x isa milk, has age-in-days 5;").asInsert());
            txn.query().insert(TypeQL.parseQuery("insert $x isa milk, has age-in-days 10;").asInsert());
            txn.commit();
        }
        try (CoreTransaction txn = singleThreadElgTransaction(session, Arguments.Transaction.Type.READ)) {
            txn.reasoner().resolverRegistry().terminateResolvers(new RuntimeException());
            try {
                List<ConceptMap> ans = txn.query().match(TypeQL.parseQuery("match $x isa is-still-good;").asMatch()).toList();
            } catch (TypeDBException e) {
                assertEquals(e.code().get(), RESOLUTION_TERMINATED.code());
                return;
            }
            fail();
        }
    }
}
Also used : ConceptManager(com.vaticle.typedb.core.concept.ConceptManager) EntityType(com.vaticle.typedb.core.concept.type.EntityType) LogicManager(com.vaticle.typedb.core.logic.LogicManager) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) CoreSession(com.vaticle.typedb.core.database.CoreSession) TypeDBException(com.vaticle.typedb.core.common.exception.TypeDBException) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) Test(org.junit.Test)

Aggregations

LogicManager (com.vaticle.typedb.core.logic.LogicManager)26 ConceptManager (com.vaticle.typedb.core.concept.ConceptManager)24 Test (org.junit.Test)24 EntityType (com.vaticle.typedb.core.concept.type.EntityType)22 ConceptMap (com.vaticle.typedb.core.concept.answer.ConceptMap)20 AttributeType (com.vaticle.typedb.core.concept.type.AttributeType)20 CoreSession (com.vaticle.typedb.core.database.CoreSession)20 CoreTransaction (com.vaticle.typedb.core.database.CoreTransaction)20 RelationType (com.vaticle.typedb.core.concept.type.RelationType)16 Options (com.vaticle.typedb.core.common.parameters.Options)14 Explanation (com.vaticle.typedb.core.reasoner.resolution.answer.Explanation)4 TypeDB (com.vaticle.typedb.core.TypeDB)3 Rule (com.vaticle.typedb.core.logic.Rule)3 Pattern (com.vaticle.typeql.lang.pattern.Pattern)3 Pair (com.vaticle.typedb.common.collection.Pair)2 NamedThreadFactory (com.vaticle.typedb.common.concurrent.NamedThreadFactory)2 MB (com.vaticle.typedb.core.common.collection.Bytes.MB)2 TypeDBException (com.vaticle.typedb.core.common.exception.TypeDBException)2 Iterators.iterate (com.vaticle.typedb.core.common.iterator.Iterators.iterate)2 Arguments (com.vaticle.typedb.core.common.parameters.Arguments)2