Allow updating key-value metadata after ParquetFileWriter creation #279
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.
This PR changes ParquetFileWriter so that it doesn't read the KeyValueMetadata dictionary until the file is closed, to allow metadata entries to be added or updated at any time before the file is closed.
Internally, the Arrow C++ ParquetFileWriter takes a
std::shared_ptr<const KeyValueMetadata>
and then doesn't read the entries from the metadata until the file is closed and the footer is written, so this behaviour closely maps to the C++ API.This changes behaviour and has the potential to be a breaking change if anyone is relying on being able to modify the metadata dictionary after passing it to the ParquetFileWriter constructor without this affecting the written metadata. That seems fairly unlikely though.