risingwavelabs/risingwave · error
implement SqlServer CDC parallelized backfill
Error message
implement SqlServer CDC parallelized backfill
What it means
SqlServer CDC does not implement chunked (parallelized) snapshot backfill: `split_snapshot_read` is a `todo!()` stub, so any execution path that tries to read snapshot data in split-sized chunks panics with this message. Only non-parallelized snapshot reading is supported for SQL Server.
Source
Thrown at src/connector/src/source/cdc/external/sql_server.rs:296
self.snapshot_read_inner(table_name, start_pk, primary_keys, limit)
}
fn get_parallel_cdc_splits(
&self,
_options: CdcTableSnapshotSplitOption,
) -> BoxStream<'_, ConnectorResult<CdcTableSnapshotSplit>> {
// TODO(zw): feat: impl
stream::empty::<ConnectorResult<CdcTableSnapshotSplit>>().boxed()
}
fn split_snapshot_read(
&self,
_table_name: SchemaTableName,
_left: OwnedRow,
_right: OwnedRow,
_split_columns: Vec<Field>,
) -> BoxStream<'_, ConnectorResult<OwnedRow>> {
todo!("implement SqlServer CDC parallelized backfill")
}
}
impl SqlServerExternalTableReader {
pub async fn new(
config: ExternalTableConfig,
rw_schema: Schema,
pk_indices: Vec<usize>,
) -> ConnectorResult<Self> {
tracing::info!(
?rw_schema,
?pk_indices,
"create sql server external table reader"
);
let mut client_config = Config::new();
client_config.host(&config.host);
client_config.database(&config.database);View on GitHub (pinned to 6469eb736d)
Solutions
- Use the default (non-parallelized) snapshot backfill for SQL Server CDC sources; do not set backfill parallelism options.
- Use one split / serial snapshot for the SQL Server table until parallelized backfill is implemented upstream.
- Contribute or backport an implementation of `split_snapshot_read` for SqlServerExternalTableReader.
Example fix
// before
todo!("implement SqlServer CDC parallelized backfill")
// after
self.snapshot_read_without_split(table_name).await // use serial snapshot path Defensive patterns
Strategy: fallback
Prevention
- Do not enable parallelized backfill options on SQL Server CDC sources.
- Keep default single-split snapshot for SQL Server.
- Check connector feature docs before copying MySQL/Postgres CDC options across engines.
When it happens
Trigger: Creating a SQL Server CDC table with backfill parallelism / split-based snapshot reading enabled (e.g. setting `cdc.source.backfill.parallelism` > 1 or the connector generating multiple snapshot splits), which calls `split_snapshot_read`.
Common situations: Users copying MySQL/Postgres CDC source options that enable parallel backfill onto a SQL Server source; large tables where the operator expects chunked backfill.
Related errors
- conversion of SQL Server money to {data_type} is not support
- missing `hostname` in CDC properties
- missing `port` in CDC properties
- missing `username` in CDC properties
- missing `password` in CDC properties
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/8ea26c280a93edc4.
Report an issue: GitHub.