pub enum SourceEnvelope {
    None(NoneEnvelope),
    Debezium(DebeziumEnvelope),
    Upsert(UpsertEnvelope),
    CdcV2,
}
Expand description

SourceEnvelopes describe how to turn a stream of messages from SourceDescs into a differential stream, that is, a stream of (data, time, diff) triples.

Some sources (namely postgres and pubnub) skip any explicit envelope handling, effectively asserting that SourceEnvelope is None with KeyEnvelope::None.

Variants

None(NoneEnvelope)

The most trivial version is None, which typically produces triples where the diff is 1. However, some sources are able to produce values with more exotic diff’s, such as the posgres source. Currently, this is the only variant usable with those sources.

If the KeyEnvelope is present, include the key columns as an output column of the source with the given properties.

Debezium(DebeziumEnvelope)

Debezium avoids holding onto previously seen values by trusting the required before and after value fields coming from the upstream source.

Upsert(UpsertEnvelope)

Upsert holds onto previously seen values and produces 1 or -1 diffs depending on whether or not the required key outputed by the source has been seen before. This also supports a Debezium mode.

CdcV2

CdcV2 requires sources output messages in a strict form that requires a upstream-provided timeline.

Trait Implementations

The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default. Read more

The type of Strategy used to generate values of type Self. Read more

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more

Generates a Strategy for producing arbitrary values of type the implementing type (Self). Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Convert a Self into a Proto value.

Consume and convert a Proto back into a Self value. Read more

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Compare self to key and return true if they are equal.

Returns the argument unchanged.

Attaches the provided Context to this type, returning a WithContext wrapper. Read more

Attaches the current Context to this type, returning a WithContext wrapper. Read more

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Wrap the input message T in a tonic::Request

Upcasts this ProgressEventTimestamp to Any. Read more

Returns the name of the concrete type of this object. Read more

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more