Fix object copies across drivers - #559
Merged
Merged
Conversation
…Silo into bug-mcm86-04jul26-obj-copy-xdriver
…Silo into bug-mcm86-04jul26-obj-copy-xdriver
This reverts commit d28840b.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A user reported problems attempting to use
DBCp()to copy a whole file between PDB and HDF5 formats.Object copying is handled via the generic methods
DBGetObject()andDBWriteObject(). However, there are a number of subtle differences in the way the two drivers handle metadata when building these generic objects. These differences appear in various ways..."'<d>11,13,15'") are handledtimeanddtimemembers are handleddatatypemember is handledDBCp()was not handling its return value correctlyOn the HDF5 driver, these generic objects are used to define HDF5 struct-like types. If for some reason, those struct-like types are subtley different than what the HDF5 driver read methods such as
DBGetUcdmesh()are expecting, the objects can fail being read.OTOH, On the PDB driver, if the
datatypemember is not handled correctly, that can corruped handling of bulk data returned with various objects.There is another case of tiny arrays that is used in Silo that has to do with the python module. They involve a similar purpose but where the target is a python dict object.
This PR fixes several issues found by adding a test to
dir.ctest that does a whole file copy ofmulti_ucd3d.pdbto an HDF5 formatted file.This PR also adds a
DBDriverVersion()method to the Silo public API so that callers can obtain the underlying driver's library version information.