a-agmon opened a new issue, #7393:
URL: https://github.com/apache/arrow-datafusion/issues/7393

   ### Describe the bug
   
   Im trying to register a listing table using a certain glob string:
   ` s3://somebucket/somepath/*44fad0765ac6-00001.parquet`
   and receive the error 
   ```
   Error: Custom { kind: Other, error: 
   "Object Store error: Object at location
    somepath/%2A44fad0765ac6-00001.parquet not found: 
   response error \"No Body\", after 0 retries: HTTP status client error (404 
Not Found) 
   for url 
(https://s3.eu-west-1.amazonaws.com/somebucket/somepath/%252A44fad0765ac6-00001.parquet)"
 }
   ```
   
   however, I know the file is there because the action succeeds when I just 
using the full file name
   
`s3://somebucket/somepath/00000-2367-2918fbc9-ea04-4927-a669-44fad0765ac6-00001.parquet`
   
   from the error, I have a feeling it's related to how the url and gloc char 
is being encoded, looks like its being encoded twice for some reason - from *  
-> %2A -> %252A
   
   ### To Reproduce
   
   ```rust
      let glob_str = "*44fad0765ac6-00001.parquet";
      let table_files = String::from("somepath");
      let table_files_path = 
format!("s3://{bucket_name}/{table_files}/{glob_str}");
      let table_files_url = ListingTableUrl::parse(&table_files_path)?;
      let schema_file_path = 
format!("s3://{bucket_name}/{table_files}/00000-2367-2918fbc9-ea04-4927-a669-44fad0765ac6-00001.parquet");
      let schema_file_url = ListingTableUrl::parse(&schema_file_path)?;
      println!("table_files_url: {}", table_files_path);
      
      let file_format = ParquetFormat::default()
   .with_enable_pruning(Some(true));
      let listing_options = ListingOptions::new(Arc::new(file_format))
   .with_file_extension(".parquet");
      
       let schema = listing_options.infer_schema(&ctx.state(), 
&schema_file_url).await?;
   
   
       let table_config = 
           ListingTableConfig::new(table_files_url) // the path of the files
           .with_listing_options(listing_options)
           .with_schema(schema);
   
       let table_provider = 
Arc::new(ListingTable::try_new(table_config).unwrap());
   
       
ctx.register_table(TableReference::from("users"),table_provider).unwrap();
       let df = ctx.sql("SELECT count(*) FROM users").await?;
       df.show().await?;
       
   
   ```
   
   ### Expected behavior
   
   the files that correspond to the glob string will be registered as a table.
   In the code above if I just switch between the ListingTableUrl with the 
globe string to that of the schema the code executes successfully (so no 
permissions issue)/
   
   ### Additional context
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to