diff options
| author | Douglas B. Rumbaugh <doug@douglasrumbaugh.com> | 2024-12-06 16:54:05 -0500 |
|---|---|---|
| committer | Douglas B. Rumbaugh <doug@douglasrumbaugh.com> | 2024-12-06 16:54:05 -0500 |
| commit | 9876d74e503df64eb9e82e540ca41fcf593ebf64 (patch) | |
| tree | 3512690afa8c04f702bd8de500bf8f41b05571c4 /include/framework/DynamicExtension.h | |
| parent | e2b81a2d311470d503edae93e68e82791f6bb17c (diff) | |
| download | dynamic-extension-master.tar.gz | |
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.h | 21 |
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>(); |