diff --git a/kDB/Repository/GraphsManager.cpp b/kDB/Repository/GraphsManager.cpp index 1878eea5d36b566d4de7f949fecf0e6db15662db..0d4d32af95bbe400bac161ef98ee62f368048e53 100644 --- a/kDB/Repository/GraphsManager.cpp +++ b/kDB/Repository/GraphsManager.cpp @@ -336,14 +336,13 @@ knowCore::ReturnVoid GraphsManager::reload() { tsd = d->tripleStores[name]; Q_ASSERT(not tsd->name.isEmpty()); - Q_ASSERT(not tsd->table.isEmpty()); } else { tsd = QSharedPointer<TriplesStore::Definition>(new TriplesStore::Definition); tsd->name = name; - KNOWCORE_RETURN_VALUE_TRY_ASSIGN(tsd->table, r.value(i, 1).value<QString>()); Q_ASSERT(not tsd->name.isEmpty()); - Q_ASSERT(not tsd->table.isEmpty()); } + KNOWCORE_RETURN_VALUE_TRY_ASSIGN(tsd->table, r.value(i, 1).value<QString>()); + Q_ASSERT(not tsd->table.isEmpty()); tripleStores[name] = tsd; QMutexLocker l(&tsd->mutex); TriplesStore::Options new_options(r.value<int>(i, 2).expectSuccess()); diff --git a/kDB/Repository/TriplesStore.cpp b/kDB/Repository/TriplesStore.cpp index ab24a87cb1431a90150b389f96adb00a0ff94beb..7684cddcfdc0547e9cbe0f1d7fa53e1b891f881c 100644 --- a/kDB/Repository/TriplesStore.cpp +++ b/kDB/Repository/TriplesStore.cpp @@ -285,18 +285,28 @@ knowCore::ReturnVoid TriplesStore::remove(const QList<knowRDF::Triple>& _triple, } QList< knowRDF::Triple > TriplesStore::triples() const +{ + return triples2().value(); +} + +knowCore::ReturnValue<QList<knowRDF::Triple>> TriplesStore::triples2() const { knowDBC::Query q = D()->connection.createSQLQuery("SELECT subject, predicate, object FROM " + D()->definition->table); knowDBC::Result r = q.execute(); - - QList< knowRDF::Triple > triples; - - for(int i = 0; i < r.tuples(); ++i) + + if(r) { - triples.append(DatabaseInterface::PostgreSQL::SQLInterface::getTriple(D()->connection, r, i, 0, 1, 2, false)); + QList< knowRDF::Triple > triples; + + for(int i = 0; i < r.tuples(); ++i) + { + triples.append(DatabaseInterface::PostgreSQL::SQLInterface::getTriple(D()->connection, r, i, 0, 1, 2, false)); + } + + return kCrvSuccess(triples); + } else { + return kCrvError(r.error()); } - - return triples; } std::size_t TriplesStore::triplesCount() const diff --git a/kDB/Repository/TriplesStore.h b/kDB/Repository/TriplesStore.h index 9ee3bf9f1ed4fe5e9a4a6b69d5c6fc8eae020d8b..32342533a855d267039179655ced0743768606fe 100644 --- a/kDB/Repository/TriplesStore.h +++ b/kDB/Repository/TriplesStore.h @@ -87,6 +87,7 @@ namespace kDB::Repository * @return the triples from the triple store. Equivalent to "SELECT ?x ?y ?z WHERE { ?x ?y ?z . };" query, */ QList<knowRDF::Triple> triples() const; + knowCore::ReturnValue<QList<knowRDF::Triple>> triples2() const; /** * @return a random triple diff --git a/kDB/Repository/tests/TestTripleStore.cpp b/kDB/Repository/tests/TestTripleStore.cpp index d869daaba5bd5fdc96fc957989e1441349e0c2cd..f24430bf8112badec594ff084d5539878fa13ee8 100644 --- a/kDB/Repository/tests/TestTripleStore.cpp +++ b/kDB/Repository/tests/TestTripleStore.cpp @@ -328,8 +328,6 @@ void TestTripleStore::testNotifications() KNOWCORE_TEST_WAIT_FOR(notifications_count == 2); QCOMPARE((int)notifications_count, 2); - KNOWCORE_TEST_WAIT_FOR(notifications_count == 3); - QCOMPARE((int)notifications_count, 2); interface.listen([¬ifications_count](const QByteArray&) { ++notifications_count; }); @@ -421,6 +419,17 @@ void TestTripleStore::testDropping() KNOWCORE_TEST_WAIT_FOR(not c1.graphsManager()->hasTripleStore("a"_kCu)); QVERIFY(not c1.graphsManager()->hasTripleStore("a"_kCu)); + KNOWCORE_TEST_VERIFY_SUCCESS(c1.graphsManager()->createTriplesStore("b"_kCu)); + for(int i = 0; i < 10; ++i) + { + KNOWCORE_TEST_VERIFY_SUCCESS_VOID(c2.graphsManager()->removeTripleStore("b"_kCu)); + Repository::TriplesStore interface2 = KNOWCORE_TEST_VERIFY_SUCCESS(c2.graphsManager()->createTriplesStore("b"_kCu)); + interface2.insert("a"_kCu, "b"_kCu, "c"_kCu); + Repository::TriplesStore interface1 = KNOWCORE_TEST_VERIFY_SUCCESS(c1.graphsManager()->getTriplesStore("b"_kCu)); + KNOWCORE_TEST_WAIT_FOR(KNOWCORE_TEST_VERIFY_SUCCESS(c1.graphsManager()->getTriplesStore("b"_kCu)).triples2().success()); + KNOWCORE_TEST_VERIFY_SUCCESS(KNOWCORE_TEST_VERIFY_SUCCESS(c1.graphsManager()->getTriplesStore("b"_kCu)).triples2()); + + } }