Add streaming query API with metadata tracking support #1186
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds streaming query API that emits individual results as they are produced, rather than collecting all results into a vector. Supports all query types (SELECT, SELECT ONE, CONSTRUCT) and formats (FQL, SPARQL).
Note this is the same functionality in #1133 which I've closed in favor of this. That PR was based on the bm25 branch and this one is based on 'main' to aid review ease.
Key Features
:metatracking emits final metadata map after resultsAPI Functions
fluree.db.api/query-stream- Stream query against databasefluree.db.api/query-connection-stream- Stream query via connectionMetadata Format
When
:meta trueis enabled, final result is:{:_fluree-meta {:fuel 123, :time "5ms", :policy {...}, :status 200}}