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.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add stream() method for convenient result traversal #24525
Add stream() method for convenient result traversal #24525
Changes from all commits
8a2a399
c1e6527
142aef7
aa645ff
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand why this default method doesn't exist in the
Iterable
interface.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LMGTFY: https://stackoverflow.com/a/23177907
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
argument with specialised iterator types does not apply to us. I wonder if adding this method would promote less efficient (but easier) usage. Also users will not be able to use this method in a fully fluent way because
SqlResult
has to be closedThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Java architects' defenses on these type of poor design choices are really funny. They are reluctant to get rid of primitive/boxed duality (by burying auto-(un)boxing deeper) and they use this as a counter-argument in order not to implement some convenience methods. By the way, I upvoted this and this.
To get rid of try-with-resources, we can return
StreamSupport.stream(spliterator(), false).onClose(this::close)
, but try-with-resources is the only reliable way to release resources in case aRuntimeException
is thrown. ClosingSqlResult
in the end ofiterator()
, i.e. whenhasNext()
returns false, is also a bad idea since the iterator doesn't have to be used to the end.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to say "Java is not perfect" would be a huge understatement, but we have to live with it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I know it's not perfect - still needs try-with-resources - but it's simpler for queries where you expect not many result rows (e.g. with
limit
), similar to Mongo's.into()
function