Trait mz_storage_types::sources::SourceConnection

source ·
pub trait SourceConnection: Debug + Clone + PartialEq + AlterCompatible {
    // Required methods
    fn name(&self) -> &'static str;
    fn upstream_name(&self) -> Option<&str>;
    fn key_desc(&self) -> RelationDesc;
    fn value_desc(&self) -> RelationDesc;
    fn timestamp_desc(&self) -> RelationDesc;
    fn connection_id(&self) -> Option<GlobalId>;
    fn metadata_columns(&self) -> Vec<(&str, ColumnType)>;
    fn output_idx_for_name(&self, name: &UnresolvedItemName) -> Option<usize>;
}
Expand description

A connection to an external system

Required Methods§

source

fn name(&self) -> &'static str

The name of the external system (e.g kafka, postgres, etc).

source

fn upstream_name(&self) -> Option<&str>

The name of the resource in the external system (e.g kafka topic) if any

source

fn key_desc(&self) -> RelationDesc

The schema of this connection’s key rows.

source

fn value_desc(&self) -> RelationDesc

The schema of this connection’s value rows.

source

fn timestamp_desc(&self) -> RelationDesc

The schema of this connection’s timestamp type. This will also be the schema of the progress relation.

source

fn connection_id(&self) -> Option<GlobalId>

The id of the connection object (i.e the one obtained from running CREATE CONNECTION) in the catalog, if any.

source

fn metadata_columns(&self) -> Vec<(&str, ColumnType)>

Returns metadata columns that this connection instance will produce once rendered. The columns are returned in the order specified by the user.

source

fn output_idx_for_name(&self, name: &UnresolvedItemName) -> Option<usize>

Returns the output index for name if this source contains it.

We use the output index to provide a consistent correlation in multi-output sources between the ingestion dataflow and storage rendering’s use of persist as a sink.

We want to allow dynamic lookup of these values because the output index can change. if e.g. the source’s underlying structure changes due to adding and removing subsources.

Object Safety§

This trait is not object safe.

Implementors§