diff --git a/parquet_file/src/catalog.rs b/parquet_file/src/catalog.rs index 1ee5525e92..3c2916b86c 100644 --- a/parquet_file/src/catalog.rs +++ b/parquet_file/src/catalog.rs @@ -203,7 +203,7 @@ pub struct CatalogParquetInfo { pub path: DirsAndFileName, /// Associated parquet metadata. - pub metadata: ParquetMetaData, + pub metadata: Arc<ParquetMetaData>, } /// Abstraction over how the in-memory state of the catalog works. @@ -815,8 +815,11 @@ where } proto::transaction::action::Action::AddParquet(a) => { let path = parse_dirs_and_filename(&a.path)?; + let metadata = thrift_to_parquet_metadata(&a.metadata).context(MetadataDecodingFailed)?; + let metadata = Arc::new(metadata); + state.add( Arc::clone(object_store), server_id, @@ -1116,7 +1119,7 @@ pub mod test_helpers { #[derive(Clone, Debug)] pub struct TestCatalogStateInner { /// Map of all parquet files that are currently registered. - pub parquet_files: HashMap<DirsAndFileName, ParquetMetaData>, + pub parquet_files: HashMap<DirsAndFileName, Arc<ParquetMetaData>>, } /// In-memory catalog state, for testing. @@ -2005,7 +2008,7 @@ mod tests { let mut files: Vec<(String, ParquetMetaData)> = guard .parquet_files .iter() - .map(|(path, md)| (path.display(), md.clone())) + .map(|(path, md)| (path.display(), md.as_ref().clone())) .collect(); files.sort_by_key(|(path, _)| path.clone()); files