-
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
Provide framework for generic lazily evaluated operation results #1350
Merged
Merged
Changes from 146 commits
Commits
Show all changes
152 commits
Select commit
Hold shift + click to select a range
80667bd
Rename ResultTable -> Result
RobinTF 31b2c11
Wrap idTable in variant
RobinTF 4d0204c
Add ability to create `Result` from generator
RobinTF 515ed0c
Start fixing caching issues
RobinTF ca1cbed
Avoid another class of exceptions
RobinTF 9e7f3cb
Optimize imports
RobinTF 4c75d42
Introduce ReusableGenerator class
RobinTF 892e4a5
Try to make caching work
RobinTF 586365c
Fiddle around with const a bit
RobinTF 80e2dbd
Add more TODOs
RobinTF 18ca5b1
Fix TextLimit code after rebase
RobinTF 86a9f4b
Fix compilation issues for ReusableGenerator
RobinTF 7f0a5e7
Remove offset calculations from exporter
RobinTF aee20dd
Fix typo
RobinTF 7576b2e
Add comments
RobinTF 7765a25
Make supportsLimit private to avoid misuse
RobinTF f815be8
Properly use minimum limit if present
RobinTF 90cca50
Start adding code to manipulate code after cache extraction
RobinTF 694c21f
Implement fallback mechanism for failed cache share
RobinTF ea8b81f
Fix accidental edit of Usage.md
RobinTF 50e4529
Consume result as master
RobinTF 16eedd8
Add proper condition variables
RobinTF bf8f085
Implement code that allows for proper recomputation of cache size
RobinTF 771eb5b
Refactor a bit
RobinTF 8aa9060
Aggregate tables at the end of lazy results
RobinTF b499c6e
Overload constructor of Result class
RobinTF 6b3f05c
Try to properly calculate duration
RobinTF ff5a6ea
Apply formatting
RobinTF b974c7d
Fix compilation on gcc 11 and gcc 12
RobinTF 8b99020
Add correct visibility modifiers
RobinTF 5f8ab65
Try fixing the compilation issue for real this time
RobinTF 3a95ef5
Try to fix compilation issue on macOS
RobinTF e2dc667
Implement PoC lazy operation for index scan and filter operations
RobinTF 070494f
Fix double limit offset row
RobinTF f631c13
Fix wrong assertion
RobinTF c249628
Properly request lazy results when limit clause is present
RobinTF ea7fd79
Fix bugs and segfaults
RobinTF 1e9d0d6
Formatting
RobinTF dfb7ba6
Apply small refactoring change
RobinTF 7d01e59
Correct wrong order of ternary statement
RobinTF 5b2335a
Add TODO
RobinTF 93a5892
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 9c445ea
Change how maxSend works
RobinTF b9ca4aa
Correct call order
RobinTF 43dddd0
Correct call order
RobinTF 4ac7892
Rethink approach to apply limits and offset
RobinTF ef17e67
Add back headers
RobinTF aabb81b
Add back result limiter for subqueries
RobinTF 66a38b4
Try to fix subtle bug with runtime information detail
RobinTF 999baee
Merge branch 'max-send-changes' into refactor-result-table
RobinTF c291ff7
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 9f17e07
Add back comment
RobinTF 389f3f1
Rename `resultTable` -> `result`
RobinTF 000af28
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF ba142a0
Add correctness check to prevent double move due to race condition
RobinTF 44562c7
Start implementing tests for new cache feature and fixing bugs along …
RobinTF 0f3a59a
Some Test cleanup
RobinTF d226849
Mark variable as maybe_unused
RobinTF 552a268
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF cde135a
Restructure recomputeSize a bit to avoid unwanted behaviour
RobinTF cf6b4c9
Add remaining cache tests
RobinTF b2138bf
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 0c589e3
Add tests for `IteratorWrapper`
RobinTF c465685
Fix line endings
RobinTF d17fc7d
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 93c2360
Add tests for CacheableGenerator
RobinTF 15b435e
Add Filter tests
RobinTF 633bf06
Clear Cache before running tests
RobinTF 6d5a95e
Add test to fix coverage
RobinTF 55b4fec
Address some sonarcloud issues
RobinTF e5ceacc
Add tests for ExportQueryExecutionTrees
RobinTF d172dc8
Divide Result class into 3 dedicated classes
RobinTF 5b004b8
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF b95edfd
Remove parameter for supportsLimit
RobinTF acc99c3
Fix formatting
RobinTF 7900619
Format again
RobinTF 0d0133a
Also perform definedness check for lazy results
RobinTF 27ab692
Drop definedness caching mechanism
RobinTF 2da169f
Add comment
RobinTF 0cbb47d
Split lambdas into dedicated functions
RobinTF 5adda07
Make move/copy constructors explicit
RobinTF e0cdf18
Fix undefined behaviour
RobinTF 5ad5b8a
Workaround segfault
RobinTF db187f0
Try different attempt to fix double locking
RobinTF 4ba81bd
Avoid pseudo false-positive thread sanitizer warning
RobinTF 373f009
Restructure code to avoid class of race conditions
RobinTF 27e451e
Clarify currently buggy behaviour
RobinTF 96982aa
Fix macOS build
RobinTF 58a193d
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 93a71cc
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 9c07e4f
Fix wrong merge conflict resolution
RobinTF 1da9b17
Use `#pragma once`
RobinTF c6aa641
Simplify caching structure to fix bugs
RobinTF 838a97e
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF d74b89d
Fix size calculation
RobinTF bfc9d8f
Remove complicated atomic mutex check mechanism
RobinTF 592c670
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 564d54b
Avoid copy
RobinTF d566d5b
Use timer class to simplify calls
RobinTF a164ef4
Start adding some documentation
RobinTF f9f22f4
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 23713cc
Unlock before notifying
RobinTF c56dd82
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 603a48b
Adjust Cache to simplify code a bit
RobinTF 389a9bf
Merge branch 'helper-master' into refactor-result-table
RobinTF 934015c
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF c7d58a4
Rework code (again) so that generator does not get cached
RobinTF 4b93109
Make diff smaller and add some more tests
RobinTF 7294b10
Fix problems with `RuntimeInformation`
RobinTF 3b9fee8
Simplify timing calculation
RobinTF 8acb05a
Fix sonarqube issues
RobinTF 3ee5510
Use const ref
RobinTF 72d1033
Apply microoptimization with mutex
RobinTF 767a6cb
Another correction for reported result sizes
RobinTF 8c834da
Rename member function
RobinTF 4555dab
compute value directly after waiting without success
RobinTF d8f7fc1
Check size before aggregating id tables
RobinTF bbe10ef
Merge Result and ProtoResult back together
RobinTF 345d79c
Re-arrange functions to make diff smaller
RobinTF a101433
Fix bugs with limit and optimize iteration
RobinTF b390f4f
Use higher precision timing for `RuntimeInformation`
RobinTF ce62baa
Incorporate PR comments for `CacheableGenerator` and `ConcurrentCache`
RobinTF 9755da8
Address more PR comments
RobinTF c0ef64b
Fix unused warnings
RobinTF 44d103f
Fix flickering timing information
RobinTF 4a3f09b
Actually fix the timing issue
RobinTF 0164d9c
Small improvements to query updates
RobinTF f23849c
Add a lot of documentation
RobinTF 3c69ebf
Rename some functions
RobinTF 383696b
Fix spelling error
RobinTF d89e896
Fix build on macOS
RobinTF b5dd60c
Address even more PR comments
RobinTF 4f71329
Add Unit tests for edge case
RobinTF 21beae5
Fix sortedBy and is defined check for multiple `IdTable`s
RobinTF eadbc01
Consistent separator comment length
RobinTF cb86d14
Reorder function to fix build
RobinTF f0434b3
Add unit tests for newly added `ConcurrentCache` features
RobinTF d181a9f
Add unit tests for lazy index scans
RobinTF 68dcb6f
Fix wrong filter calculations
RobinTF 6c785b2
Add tests for new `Operation` functionality
RobinTF ef0f872
Rename variable and fix functionality
RobinTF 77b6f58
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF dff4910
Add unit tests for `Result` class
RobinTF a431021
Add tests for more coverage and skip tests relying on expensive checks
RobinTF 476a691
Add test for edge case and skip test on expensive checks disabled
RobinTF b8b03f9
Fix sonarcloud issues
RobinTF 1d83e86
Adjust limit values for better coverage
RobinTF 538814f
Address PR comments
RobinTF d7fcc98
Reduce code duplication in tests
RobinTF a471bcf
More PR comments
RobinTF 226b577
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF 0437773
Merge remote-tracking branch 'ad-freiburg/master' into refactor-resul…
RobinTF File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
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.
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.
Do you need the original absolute indices into the IdTable?
Otherwise you could return a single
std::ranges::subrange<const IdTable&>
and all your loops become singular again, and all the sonarcloud stuff goes away?
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 need the values as well as a reference to the original
IdTable
to fill in theConstructQueryExportContext
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.
It would be possible however, to refactor
ConstructQueryExportContext
to get some row reference instead, but this might be better suited for a follow-up PR.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.
Thinking about it it doesn't solve the original issue. yielding subranges still requires 2 loops