Source and Sink contracts, a connector can implement any
number of optional interfaces. The engine detects them at runtime via type
assertion — there’s no registry to update.
Source capabilities
Sink capabilities
A sink advertises which of these it supports via
SinkSpec.Capabilities
(SinkCapabilities), including its write-policy support and preferred batch
size.
The portable type system
Schema-aware connectors (SchemaProvider sources, Schematized sinks)
exchange columns as LogicalType — an engine-independent classification
(LogicalString, LogicalTimestamp, LogicalDecimal, LogicalArray, …)
defined in the repo’s root schema.go. A source’s native type maps to a
LogicalType for cross-engine portability, while the exact native type is
preserved separately for same-engine round-trips.