I do not think this is the right way to go. A column handle is a pointer to a column, something that can be used to fetch metadata or data. It should not contain the full metadata set, only what is necessary for reading data when processing splits. The `getColumnMetadata()` call should do another (cached) lookup to get the metadata.