feat(sqlite): add StatementSync.prototype.iterate method#54213
Closed
tpoisseau wants to merge 2 commits intonodejs:mainfrom
Closed
feat(sqlite): add StatementSync.prototype.iterate method#54213tpoisseau wants to merge 2 commits intonodejs:mainfrom
StatementSync.prototype.iterate method#54213tpoisseau wants to merge 2 commits intonodejs:mainfrom
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Hello,
I wanted an
iteratemethod forStatementSync. An SQL query can return lot of rows, for memory efficiency it seems important we can fetch rows on demand, instead collect all in an array.I'm not a C/C++ developer, so this was really challenging to create an object with a
nextcallback with v8. I tried to obtainIterator.prototypeso the results extends Iterator. I did not found how to do it with v8.I'm sure my code is not ready to be merged:
Allvariables fornextandreturncallback are wrapped byv8::Externaladded to iterable_iterator JS Object, accessed from context (
.This())iterate()is a bit hacky. in jssqlitemodule I decorate the method to returnIterator.from(<result from cpp iterate>).I'm hoping to get some help here to finalize this PR, so that we all get a quality iterate method.
Manual test:
So it's properly integrated with JS iterator protocol, it's an iterable iterator, it's integrated with IteratoHelpers.