pub struct FileSystemCatalog { /* private fields */ }Expand description
Filesystem catalog implementation.
This catalog stores metadata on a filesystem with the following structure:
warehouse/
├── database1.db/
│ ├── table1/
│ │ └── schema/
│ │ ├── schema-0
│ │ ├── schema-1
│ │ └── ...
│ └── table2/
│ └── schema/
│ ├── schema-0
│ └── ...
└── database2.db/
└── ...Reference: org.apache.paimon.catalog.FileSystemCatalog
Implementations§
Source§impl FileSystemCatalog
impl FileSystemCatalog
Sourcepub fn new(options: Options) -> Result<Self>
pub fn new(options: Options) -> Result<Self>
Create a new filesystem catalog from configuration options.
§Arguments
options- Configuration options containing warehouse path and storage configs (S3, OSS, etc.)
§Required Options
warehouse- The root warehouse path (e.g.,/path/to/warehouse,s3://bucket/warehouse)
§Example
ⓘ
use paimon::{FileSystemCatalog, Options, CatalogOptions};
// Local filesystem
let mut options = Options::new();
options.set(CatalogOptions::WAREHOUSE, "/tmp/warehouse");
let catalog = FileSystemCatalog::new(options)?;
// S3 with credentials
let mut options = Options::new();
options.set(CatalogOptions::WAREHOUSE, "s3://bucket/warehouse");
options.set("s3.access-key-id", "...");
options.set("s3.secret-access-key", "...");
let catalog = FileSystemCatalog::new(options)?;Trait Implementations§
Source§impl Catalog for FileSystemCatalog
impl Catalog for FileSystemCatalog
Source§fn list_databases<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_databases<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List names of all databases in this catalog. Read more
Source§fn create_database<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
ignore_if_exists: bool,
properties: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_database<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
ignore_if_exists: bool,
properties: HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a database. Read more
Source§fn get_database<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Database>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_database<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Database>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get a database by name. Read more
Source§fn drop_database<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
ignore_if_not_exists: bool,
cascade: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn drop_database<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
ignore_if_not_exists: bool,
cascade: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Drop a database. Read more
Source§fn get_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<Table>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<Table>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get table metadata for the given identifier. Read more
Source§fn list_tables<'life0, 'life1, 'async_trait>(
&'life0 self,
database_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_tables<'life0, 'life1, 'async_trait>(
&'life0 self,
database_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List table names in a database. System tables are not listed. Read more
Source§fn create_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
creation: Schema,
ignore_if_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
creation: Schema,
ignore_if_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a table. Read more
Source§fn drop_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn drop_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Drop a table. System tables cannot be dropped. Read more
Source§fn rename_table<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
from: &'life1 Identifier,
to: &'life2 Identifier,
ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn rename_table<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
from: &'life1 Identifier,
to: &'life2 Identifier,
ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Rename a table. Read more
Source§fn alter_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
changes: Vec<SchemaChange>,
ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn alter_table<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
changes: Vec<SchemaChange>,
ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Apply schema changes to a table. Read more
Source§fn create_view<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
_schema: ViewSchema,
_ignore_if_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_view<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
_schema: ViewSchema,
_ignore_if_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a persistent view.
Source§fn drop_view<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
_ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn drop_view<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
_ignore_if_not_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Drop a persistent view. Read more
Source§fn list_views<'life0, 'life1, 'async_trait>(
&'life0 self,
_database_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_views<'life0, 'life1, 'async_trait>(
&'life0 self,
_database_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List persistent view names in a database.
Source§fn get_view<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<View>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_view<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<View>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get a persistent view by identifier.
Source§fn create_function<'life0, 'life1, 'async_trait>(
&'life0 self,
_function: &'life1 Function,
_ignore_if_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_function<'life0, 'life1, 'async_trait>(
&'life0 self,
_function: &'life1 Function,
_ignore_if_exists: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a persistent function. Read more
Source§fn list_functions<'life0, 'life1, 'async_trait>(
&'life0 self,
_database_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_functions<'life0, 'life1, 'async_trait>(
&'life0 self,
_database_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List persistent function names in a database.
Source§fn get_function<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<Function>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_function<'life0, 'life1, 'async_trait>(
&'life0 self,
_identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<Function>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get a persistent function by identifier.
Source§fn list_partitions<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<Vec<Partition>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_partitions<'life0, 'life1, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
) -> Pin<Box<dyn Future<Output = Result<Vec<Partition>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List partitions for a table. Read more
Source§fn list_partitions_paged<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
_max_results: Option<u32>,
_page_token: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<PagedList<Partition>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_partitions_paged<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
identifier: &'life1 Identifier,
_max_results: Option<u32>,
_page_token: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<PagedList<Partition>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Like
Self::list_partitions but paged. Default impl ignores
max_results and page_token, returning all partitions in a single page.
Catalogs that need true pagination (e.g. RESTCatalog) override this.Source§impl Clone for FileSystemCatalog
impl Clone for FileSystemCatalog
Source§fn clone(&self) -> FileSystemCatalog
fn clone(&self) -> FileSystemCatalog
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for FileSystemCatalog
impl !UnwindSafe for FileSystemCatalog
impl Freeze for FileSystemCatalog
impl Send for FileSystemCatalog
impl Sync for FileSystemCatalog
impl Unpin for FileSystemCatalog
impl UnsafeUnpin for FileSystemCatalog
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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 moreimpl<T> MaybeSend for Twhere
T: Send,
impl<T> MaybeSend for Twhere
T: Send,
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.