risingwavelabs/risingwave · warning · StreamExecutorError
NotImplemented
Error message
NotImplemented
What it means
The NotImplemented variant transparently wraps risingwave_common::error::NotImplemented. It is thrown when a code path in a stream executor is intentionally unimplemented — a feature or expression variant has a stub that reports it is not yet supported.
Solutions
- Check the wrapped NotImplemented message for which feature is unimplemented.
- Rewrite the query/feature usage to avoid the unsupported construct.
- Upgrade RisingWave to a version where the feature is implemented.
- File or search a GitHub issue to track the missing feature.
Example fix
// before SELECT ... USING unsupported_feature; -- hits NotImplemented // after Rewrite query with supported constructs, or upgrade to a release implementing the feature.
Defensive patterns
Strategy: fallback
Validate before calling
// detect unsupported constructs before planning/streaming
if query_uses_unsupported_feature(sql) {
return Err(anyhow::anyhow!("query uses a not-yet-implemented streaming feature"));
} Type guard
fn is_not_implemented(e: &StreamExecutorError) -> bool {
e.variant_name() == "NotImplemented"
} Try / catch
if let Err(e) = result {
if e.variant_name() == "NotImplemented" {
// surface a clear 'feature not supported' message to the user
return Err(e);
}
return Err(e);
} Prevention
- Check release notes for supported features before using new SQL constructs.
- Rewrite queries with supported alternatives.
- Track GitHub issues for features you depend on.
- Keep cluster versions aligned so planner and executor capabilities match.
When it happens
Trigger: Raised wherever a NotImplemented error is propagated via `?`/From — e.g. an executor encountering an expression type, join algorithm, or protocol feature it does not support.
Common situations: Users running SQL that lowers to an unimplemented streaming feature; partially rolled-out features guarded by a TODO; version mismatch between frontend planning and stream engine capabilities.
Related errors
- builder should have yielded a chunk
- Channel closed
- compaction resolver sink
- compaction resolver sink
- compaction resolver sink
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/df4a65219387d3ac.
Report an issue: GitHub.
Appendix: source
Thrown at src/stream/src/executor/error.rs:112
#[error("Failed to align barrier: expected `{0:?}` but got `{1:?}`")]
AlignBarrier(Box<Barrier>, Box<Barrier>),
#[error("Connector error: {0}")]
ConnectorError(
#[source]
#[backtrace]
BoxedError,
),
#[error(transparent)]
DmlError(
#[from]
#[backtrace]
DmlError,
),
#[error(transparent)]
NotImplemented(#[from] NotImplemented),
#[error(transparent)]
Uncategorized(
#[from]
#[backtrace]
anyhow::Error,
),
}
/// Serialize/deserialize error.
impl From<memcomparable::Error> for StreamExecutorError {
fn from(m: memcomparable::Error) -> Self {
Self::serde_error(m)
}
}
impl From<ValueEncodingError> for StreamExecutorError {
fn from(e: ValueEncodingError) -> Self {View on GitHub (pinned to 6469eb736d)