Skip to main content
Beyond the base 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.