-
Notifications
You must be signed in to change notification settings - Fork 54
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
Hash-map based GROUP BY can now process lazy inputs #1651
Conversation
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1651 +/- ##
==========================================
+ Coverage 89.84% 89.86% +0.02%
==========================================
Files 389 389
Lines 37268 37287 +19
Branches 4202 4204 +2
==========================================
+ Hits 33482 33508 +26
+ Misses 2485 2480 -5
+ Partials 1301 1299 -2 ☔ View full report in Codecov by Sentry. |
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.
Looks good and works fine in some test queries we tried. Minor change left.
Signed-off-by: Johannes Kalmbach <[email protected]>
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.
Thanks!
As a follow-up, we should find a way to enable this automatically, in particular, for queries like SELECT ?g (COUNT(?g) AS ?count) WHERE { GRAPH ?g { ?s ?p ?o } } GROUP BY ?g
Conformance check passed ✅No test result changes. |
Quality Gate passedIssues Measures |
Since #1229, QLever supports a hash-map based GROUP BY, which can be activated via the runtime parameter
group-by-hash-map-enabled
(which isfalse
by default). So far, this required a fully materialized input. With this change, the input can be processed lazily. The output is still fully materialized and never lazy (because, when the input is not sorted, we cannot output any group until we have seen the last input row).