@@ -17,28 +17,33 @@ use rayon::prelude::*;
1717use std:: cmp:: Ordering ;
1818use std:: collections:: HashSet ;
1919use std:: ops:: Not ;
20+ use std:: path:: PathBuf ;
2021use std:: sync:: Arc ;
2122
2223#[ derive( Clone ) ]
2324pub struct ParquetFile {
2425 io : MmapIO ,
2526 metadata : Arc < ParquetMetadata > ,
26- filename : Arc < String > ,
27+ table_name : String ,
2728}
2829
2930impl ParquetFile {
30- pub fn open < P : Into < String > > ( file : P ) -> anyhow:: Result < Self > {
31- let filename = file. into ( ) ;
31+ pub fn open ( file : impl Into < PathBuf > ) -> anyhow:: Result < Self > {
32+ let path = file. into ( ) ;
3233
33- let io = MmapIO :: open ( & filename) ?;
34+ let table_name = path. file_stem ( )
35+ . map ( |s| s. to_string_lossy ( ) . into_owned ( ) )
36+ . unwrap_or_default ( ) ;
37+
38+ let io = MmapIO :: open ( & path) ?;
3439
3540 let metadata =
3641 ArrowReaderMetadata :: load ( & io, ArrowReaderOptions :: new ( ) . with_page_index ( true ) ) ?;
3742
3843 Ok ( Self {
3944 io,
4045 metadata : Arc :: new ( ParquetMetadata :: new ( metadata) ) ,
41- filename : Arc :: new ( filename ) ,
46+ table_name ,
4247 } )
4348 }
4449}
@@ -171,8 +176,8 @@ impl TableReader for ParquetFile {
171176 if default_null_columns. map_or ( false , |dnc| dnc. contains ( name) ) {
172177 missing_null_columns. push ( name) ;
173178 } else {
174- tracing:: error!( "column '{}' is not found in {}" , name, self . filename ) ;
175- anyhow:: bail!( ColumnDoesNotExist :: new( self . filename . to_string( ) , name) ) ;
179+ tracing:: error!( "column '{}' is not found in {}" , name, self . table_name ) ;
180+ anyhow:: bail!( ColumnDoesNotExist :: new( self . table_name . to_string( ) , name) ) ;
176181 }
177182 }
178183 }
0 commit comments