Struct deltalake::datafusion::catalog::listing_schema::ListingSchemaProvider
source · pub struct ListingSchemaProvider { /* private fields */ }
Expand description
A SchemaProvider
that scans an ObjectStore
to automatically discover tables
A subfolder relationship is assumed, i.e. given:
- authority =
s3://host.example.com:3000
- path =
/data/tpch
- factory =
DeltaTableFactory
A table called “customer” will be registered for the folder:
s3://host.example.com:3000/data/tpch/customer
assuming it contains valid deltalake data, i.e:
s3://host.example.com:3000/data/tpch/customer/part-00000-xxxx.snappy.parquet
s3://host.example.com:3000/data/tpch/customer/_delta_log/
Implementations§
source§impl ListingSchemaProvider
impl ListingSchemaProvider
sourcepub fn new(
authority: String,
path: Path,
factory: Arc<dyn TableProviderFactory>,
store: Arc<dyn ObjectStore>,
format: String,
has_header: bool
) -> ListingSchemaProvider
pub fn new( authority: String, path: Path, factory: Arc<dyn TableProviderFactory>, store: Arc<dyn ObjectStore>, format: String, has_header: bool ) -> ListingSchemaProvider
Create a new ListingSchemaProvider
Arguments:
authority
: The scheme (i.e. s3://) + host (i.e. example.com:3000)
path
: The root path that contains subfolders which represent tables
factory
: The TableProviderFactory
to use to instantiate tables for each subfolder
store
: The ObjectStore
containing the table data
format
: The FileFormat
of the tables
has_header
: Indicates whether the created external table has the has_header flag enabled
sourcepub async fn refresh(&self, state: &SessionState) -> Result<(), DataFusionError>
pub async fn refresh(&self, state: &SessionState) -> Result<(), DataFusionError>
Reload table information from ObjectStore
Trait Implementations§
source§impl SchemaProvider for ListingSchemaProvider
impl SchemaProvider for ListingSchemaProvider
source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
SchemaProvider
as Any
so that it can be downcast to a
specific implementation.source§fn table_names(&self) -> Vec<String>
fn table_names(&self) -> Vec<String>
source§fn table<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn TableProvider>>, DataFusionError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ListingSchemaProvider: 'async_trait,
fn table<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn TableProvider>>, DataFusionError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ListingSchemaProvider: 'async_trait,
None
.source§fn register_table(
&self,
name: String,
table: Arc<dyn TableProvider>
) -> Result<Option<Arc<dyn TableProvider>>, DataFusionError>
fn register_table( &self, name: String, table: Arc<dyn TableProvider> ) -> Result<Option<Arc<dyn TableProvider>>, DataFusionError>
name
to
this schema. Read moresource§fn deregister_table(
&self,
name: &str
) -> Result<Option<Arc<dyn TableProvider>>, DataFusionError>
fn deregister_table( &self, name: &str ) -> Result<Option<Arc<dyn TableProvider>>, DataFusionError>
name
table from this
schema and returns the previously registered TableProvider
, if any. Read moresource§fn table_exist(&self, name: &str) -> bool
fn table_exist(&self, name: &str) -> bool
source§fn owner_name(&self) -> Option<&str>
fn owner_name(&self) -> Option<&str>
Auto Trait Implementations§
impl Freeze for ListingSchemaProvider
impl !RefUnwindSafe for ListingSchemaProvider
impl Send for ListingSchemaProvider
impl Sync for ListingSchemaProvider
impl Unpin for ListingSchemaProvider
impl !UnwindSafe for ListingSchemaProvider
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more