risingwavelabs/risingwave · error
not implemented
Error message
not implemented
What it means
The `IcebergSource` implementation's `new` constructor is intentionally left `unimplemented!()`. Iceberg data is not read through this streaming-source reader path (it goes through the batch/file-scan planner instead), so calling this constructor always panics. It exists only to satisfy the source reader trait interface.
Source
Thrown at src/connector/src/source/iceberg/mod.rs:668
DataChunk::from_parts(columns.into(), visibility)
}
#[derive(Debug)]
pub struct IcebergFileReader {}
#[async_trait]
impl SplitReader for IcebergFileReader {
type Properties = IcebergProperties;
type Split = IcebergSplit;
async fn new(
_props: IcebergProperties,
_splits: Vec<IcebergSplit>,
_parser_config: ParserConfig,
_source_ctx: SourceContextRef,
_columns: Option<Vec<Column>>,
) -> ConnectorResult<Self> {
unimplemented!()
}
fn into_stream(self) -> BoxSourceChunkStream {
unimplemented!()
}
}
#[cfg(test)]
mod tests {
use std::collections::HashMap;
use std::sync::Arc;
use iceberg::scan::FileScanTask;
use iceberg::spec::{
FormatVersion, MAIN_BRANCH, NestedField, Operation, PrimitiveType, Schema, Snapshot,
SortOrder, Struct, Summary, TableMetadataBuilder, Type, UnboundPartitionSpec,
};
View on GitHub (pinned to 6469eb736d)
Solutions
- Do not use iceberg as a streaming source; create an Iceberg table or batch query instead of a source/MV.
- Use the iceberg scan/planner path (list_scan_tasks -> splits -> batch executors) rather than the source reader.
- If continuous ingestion is needed, use the appropriate external streaming source and periodically query Iceberg.
- Update the job to use batch query semantics (e.g. MV on iceberg is not supported via this path).
Defensive patterns
Strategy: validation
Validate before calling
if connector == "iceberg" && job_type == Source {
return Err("iceberg is only supported as a table/batch scan, not a streaming source");
} Prevention
- Never register iceberg as a push-based streaming source
- Route iceberg reads through the batch scan planner
- Check connector capability matrix before CREATE SOURCE
When it happens
Trigger: Any code path that constructs a streaming source reader via `IcebergSource::new` with the given properties/splits/parser config — e.g. registering Iceberg as a regular streaming connector source instead of using the Iceberg table scan path.
Common situations: Attempting `CREATE SOURCE` with the iceberg connector for continuous streaming ingestion; misconfiguring a MV/source to consume iceberg as a push-based source; code regression calling the wrong reader factory.
Related errors
- not yet implemented
- table {} not found
- register_table is not supported in mock catalog
- iceberg sink metadata should have schema_id
- partition_spec_id should be a u64
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/ac383f957e98bb72.
Report an issue: GitHub.