@@ -4,23 +4,24 @@ use std::collections::HashMap;
44use std:: ops:: Range ;
55use std:: sync:: Arc ;
66
7- use crate :: arrow:: array:: builder:: { MapBuilder , MapFieldNames , StringBuilder } ;
8- use crate :: arrow:: array:: { BooleanArray , Int64Array , RecordBatch , StringArray } ;
9- use crate :: parquet:: arrow:: arrow_reader:: {
10- ArrowReaderMetadata , ArrowReaderOptions , ParquetRecordBatchReaderBuilder ,
11- } ;
12- use crate :: parquet:: arrow:: arrow_writer:: ArrowWriter ;
13- use crate :: parquet:: arrow:: async_reader:: { ParquetObjectReader , ParquetRecordBatchStreamBuilder } ;
147use futures:: StreamExt ;
158use object_store:: path:: Path ;
169use object_store:: DynObjectStore ;
1710use uuid:: Uuid ;
1811
1912use super :: file_stream:: { FileOpenFuture , FileOpener , FileStream } ;
13+ use super :: UrlExt ;
14+ use crate :: arrow:: array:: builder:: { MapBuilder , MapFieldNames , StringBuilder } ;
15+ use crate :: arrow:: array:: { BooleanArray , Int64Array , RecordBatch , StringArray } ;
2016use crate :: engine:: arrow_data:: ArrowEngineData ;
2117use crate :: engine:: arrow_utils:: { fixup_parquet_read, generate_mask, get_requested_indices} ;
2218use crate :: engine:: default:: executor:: TaskExecutor ;
2319use crate :: engine:: parquet_row_group_skipping:: ParquetRowGroupSkipping ;
20+ use crate :: parquet:: arrow:: arrow_reader:: {
21+ ArrowReaderMetadata , ArrowReaderOptions , ParquetRecordBatchReaderBuilder ,
22+ } ;
23+ use crate :: parquet:: arrow:: arrow_writer:: ArrowWriter ;
24+ use crate :: parquet:: arrow:: async_reader:: { ParquetObjectReader , ParquetRecordBatchStreamBuilder } ;
2425use crate :: schema:: SchemaRef ;
2526use crate :: {
2627 DeltaResult , EngineData , Error , ExpressionRef , FileDataReadResultIterator , FileMeta ,
@@ -191,18 +192,19 @@ impl<E: TaskExecutor> ParquetHandler for DefaultParquetHandler<E> {
191192 // -> reqwest to get data
192193 // -> parse to parquet
193194 // SAFETY: we did is_empty check above, this is ok.
194- let file_opener: Box < dyn FileOpener > = match files[ 0 ] . location . scheme ( ) {
195- "http" | "https" => Box :: new ( PresignedUrlOpener :: new (
195+ let file_opener: Box < dyn FileOpener > = if files[ 0 ] . location . is_presigned ( ) {
196+ Box :: new ( PresignedUrlOpener :: new (
196197 1024 ,
197198 physical_schema. clone ( ) ,
198199 predicate,
199- ) ) ,
200- _ => Box :: new ( ParquetOpener :: new (
200+ ) )
201+ } else {
202+ Box :: new ( ParquetOpener :: new (
201203 1024 ,
202204 physical_schema. clone ( ) ,
203205 predicate,
204206 self . store . clone ( ) ,
205- ) ) ,
207+ ) )
206208 } ;
207209 FileStream :: new_async_read_iterator (
208210 self . task_executor . clone ( ) ,
0 commit comments