pub trait AnalysisCatalog: Send + Sync {
// Required methods
fn table_resolved(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<Option<TableDefinition>, SQLError>;
fn table_name_resolved(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<Option<String>, SQLError>;
fn view_resolved(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<Option<ViewDefinition>, SQLError>;
fn foreign_table_resolved(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<Option<TableDefinition>, SQLError>;
fn sequence_exists(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<bool, SQLError>;
fn virtual_relation_schema(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<Option<Vec<(String, ColumnType)>>, SQLError>;
fn sql_functions(
&self,
resolution: &RelationNameResolution,
name: &str,
) -> Result<Option<Vec<Arc<SQLUserFunction>>>, SQLError>;
// Provided methods
fn prepared_dependency_snapshot(
&self,
_dependencies: &PreparedAnalysisDependencies,
) -> Result<Option<PreparedDependencySnapshot>, SQLError> { ... }
fn relation_dependency(
&self,
_resolution: &RelationNameResolution,
_name: &str,
) -> Result<Option<u32>, SQLError> { ... }
fn effective_search_path(
&self,
_resolution: &RelationNameResolution,
) -> Result<Option<EffectiveSearchPath>, SQLError> { ... }
fn unopenable_relation(
&self,
_resolution: &RelationNameResolution,
_name: &str,
) -> Result<Option<UnopenableRelation>, SQLError> { ... }
}Expand description
Immutable namespace-aware lookup for SQL analysis. This contract exposes definitions only; it grants no row access, mutation, locking, or transaction services.
Required Methods§
fn table_resolved( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<Option<TableDefinition>, SQLError>
fn table_name_resolved( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<Option<String>, SQLError>
fn view_resolved( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<Option<ViewDefinition>, SQLError>
fn foreign_table_resolved( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<Option<TableDefinition>, SQLError>
fn sequence_exists( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<bool, SQLError>
fn virtual_relation_schema( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<Option<Vec<(String, ColumnType)>>, SQLError>
fn sql_functions( &self, resolution: &RelationNameResolution, name: &str, ) -> Result<Option<Vec<Arc<SQLUserFunction>>>, SQLError>
Provided Methods§
Sourcefn prepared_dependency_snapshot(
&self,
_dependencies: &PreparedAnalysisDependencies,
) -> Result<Option<PreparedDependencySnapshot>, SQLError>
fn prepared_dependency_snapshot( &self, _dependencies: &PreparedAnalysisDependencies, ) -> Result<Option<PreparedDependencySnapshot>, SQLError>
Exact revisions of the requested identities in this catalog view. Return None only when the catalog has no revision capability; within an available snapshot, include every requested identity and use a missing value for an absent object.
Sourcefn relation_dependency(
&self,
_resolution: &RelationNameResolution,
_name: &str,
) -> Result<Option<u32>, SQLError>
fn relation_dependency( &self, _resolution: &RelationNameResolution, _name: &str, ) -> Result<Option<u32>, SQLError>
The OID of a relation successfully selected in this same immutable namespace. The binder calls this after selecting a catalog relation, never for a CTE or an unsuccessful lookup candidate. Catalog fixtures without identities may leave this unavailable.
Sourcefn effective_search_path(
&self,
_resolution: &RelationNameResolution,
) -> Result<Option<EffectiveSearchPath>, SQLError>
fn effective_search_path( &self, _resolution: &RelationNameResolution, ) -> Result<Option<EffectiveSearchPath>, SQLError>
The schemas that exist and that the analyzing role may use, including implicit namespaces, and its creation namespace. Catalogs without namespace state leave this unavailable.
Sourcefn unopenable_relation(
&self,
_resolution: &RelationNameResolution,
_name: &str,
) -> Result<Option<UnopenableRelation>, SQLError>
fn unopenable_relation( &self, _resolution: &RelationNameResolution, _name: &str, ) -> Result<Option<UnopenableRelation>, SQLError>
A relation that a query cannot open, such as a composite type’s relation: its unqualified name and the kind PostgreSQL’s detail names.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".