-
Notifications
You must be signed in to change notification settings - Fork 132
feat: savepoints #2278
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
Merged
feat: savepoints #2278
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
3328322
feat: savepoint
olavloite 442d5aa
fix: add clirr diff
olavloite 0ae72b3
docs: comments + more tests
olavloite 35eb6ff
chore: fix and test identifier verification
olavloite f39e23c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] ed7a41a
Merge branch 'main' into savepoint
olavloite 77de03f
Merge branch 'main' into savepoint
olavloite 6e4aa51
feat: make savepoint feature configurable
olavloite 0091497
fix: set savepoint support
olavloite 55c3a84
Merge branch 'main' into savepoint
olavloite 1b48b59
docs: improve javadoc
olavloite ad7e943
Merge branch 'main' into savepoint
olavloite a1648a8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] 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
This file contains hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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.
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.
I imagine you already picked the best data structure here, but wondering if you considered any other like
Deque
for stack like popping or aTreeMap
for fast retrieval of elements.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 considered a couple of different options, but landed on
LinkedList
both for simplicity, but also because it aligns with howSAVEPOINT
works. They are strictly ordered by an index (i.e. a map structure makes less sense, as there is no mapping between a key and a value other than a simple index key), and removing a savepoint from the list always means removing everything after it as well. That means that cutting one node in the middle of the list is a cheap operation.That being said; a transaction is unlikely to ever have more than a handful of savepoints, meaning that the chosen data structure won't have any practical effect on the performance.
Deque
was indeed one that I considered, but I dropped it as we need to be able to peek multiple steps back, which is not supported by a pureDeque
implementation.TreeMap
or similar would not really be a good fit, as the key in this case is just an index. The savepoint names also do not need to be unique (in PostgreSQL).