Remove unnecessary calls to WAL::flushAllPages and clear the dirty flag when flushing pages #3427
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.
Flushing the WAL after COPY NODE is no longer necessary since the primary key index is no longer reloaded from disk afterwards.
Flushing in
Database::commit
is only necessary when skipping checkpointing since it also occurs during checkpointing prior to the WAL replay.Additionally, this appears to fix an issue I mentioned in #3403, where small copies and inserts after doing a large copy take extra time. I'm fairly sure, though I haven't actually confirmed, that it was caused by bypassing the WAL file and writing directly to the hash index file, flushing the hash index file in
PrimaryKeyIndex::prepareCommit
, but neither evicting nor clearing the dirty flags on the hash index file. Presumably subsequent flushes end up flushing the previously modified pages again since they are all still marked dirty.