Skip to main content

AnalysisCatalog

Trait AnalysisCatalog 

Source
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§

Provided Methods§

Source

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.

Source

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.

Source

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.

Source

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".

Implementors§