summaryrefslogtreecommitdiffstats
path: root/include/framework/DynamicExtension.h
diff options
context:
space:
mode:
authorDouglas B. Rumbaugh <doug@douglasrumbaugh.com>2024-12-06 16:54:05 -0500
committerDouglas B. Rumbaugh <doug@douglasrumbaugh.com>2024-12-06 16:54:05 -0500
commit9876d74e503df64eb9e82e540ca41fcf593ebf64 (patch)
tree3512690afa8c04f702bd8de500bf8f41b05571c4 /include/framework/DynamicExtension.h
parente2b81a2d311470d503edae93e68e82791f6bb17c (diff)
downloaddynamic-extension-master.tar.gz
Adjusted query result interfacesHEADmaster
Now, the vector<> is part of the user-defined type, not required by the framework. This should allow for more flexibility in either using alternative containers, or for more sensible implementations of queries with single value results (like range count).
Diffstat (limited to 'include/framework/DynamicExtension.h')
-rw-r--r--include/framework/DynamicExtension.h21
1 files changed, 6 insertions, 15 deletions
diff --git a/include/framework/DynamicExtension.h b/include/framework/DynamicExtension.h
index 5a95679..719232e 100644
--- a/include/framework/DynamicExtension.h
+++ b/include/framework/DynamicExtension.h
@@ -202,7 +202,7 @@ public:
* @return A future, from which the query results can be retrieved upon
* query completion
*/
- std::future<std::vector<QueryResult>>
+ std::future<QueryResult>
query(Parameters &&parms) {
return schedule_query(std::move(parms));
}
@@ -628,26 +628,17 @@ private:
QueryType::distribute_query(parms, local_queries, buffer_query);
/* execute the local/buffer queries and combine the results into output */
- std::vector<QueryResult> output;
+ QueryResult output;
do {
- std::vector<std::vector<LocalResult>>
- query_results(shards.size() + 1);
+ std::vector<LocalResult> query_results(shards.size() + 1);
for (size_t i = 0; i < query_results.size(); i++) {
- std::vector<LocalResult> local_results;
- ShardID shid;
-
if (i == 0) { /* execute buffer query */
- local_results = QueryType::local_query_buffer(buffer_query);
- shid = INVALID_SHID;
+ query_results[i] = QueryType::local_query_buffer(buffer_query);
} else { /*execute local queries */
- local_results = QueryType::local_query(shards[i - 1].second,
+ query_results[i] = QueryType::local_query(shards[i - 1].second,
local_queries[i - 1]);
- shid = shards[i - 1].first;
}
- /* framework-level, automatic delete filtering */
- query_results[i] = std::move(local_results);
-
/* end query early if EARLY_ABORT is set and a result exists */
if constexpr (QueryType::EARLY_ABORT) {
if (query_results[i].size() > 0)
@@ -695,7 +686,7 @@ private:
m_sched.schedule_job(reconstruction, 0, args, RECONSTRUCTION);
}
- std::future<std::vector<QueryResult>>
+ std::future<QueryResult>
schedule_query(Parameters &&query_parms) {
auto args =
new QueryArgs<ShardType, QueryType, DynamicExtension>();