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

  1. Check the wrapped NotImplemented message for which feature is unimplemented.
  2. Rewrite the query/feature usage to avoid the unsupported construct.
  3. Upgrade RisingWave to a version where the feature is implemented.
  4. 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

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


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)