risingwavelabs/risingwave · error · NotImplemented

Feature is not yet implemented

Error message

Feature is not yet implemented: {feature}
{issue}

What it means

RisingWaveError::NotImplemented signals a feature that is recognized by the API surface but has no implementation yet. The error carries the feature name and a TrackingIssue (GitHub issue link) so developers know exactly what is missing and can track or subscribe to its implementation.

Solutions

  1. Check the TrackingIssue in the error message and wait for / track the implementing PR.
  2. Rewrite the query or call to avoid the unimplemented feature (use a supported equivalent).
  3. Downgrade expectations to the currently supported feature set, or pin to a release where the feature lands.
Defensive patterns

Strategy: try-catch

Try / catch

try { await runFeature(); }
catch (e) {
  if (String(e).includes("not yet implemented")) {
    const issue = String(e).match(/https:\/\/github\.com\/\S+/)?.[0];
    console.warn(`Feature unavailable, track: ${issue}`);
  } else throw e;
}

Prevention

When it happens

Trigger: Calling any API/SQL feature whose implementation returns NotImplemented::new(feature, issue) — e.g. unsupported expression types, protocols, or storage operations explicitly marked unimplemented in the codebase.

Common situations: Using a cutting-edge/nightly feature that is stubbed out; hitting code paths excluded from the current release; querying features documented upstream but gated behind an unmerged PR referenced by the tracking issue.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/8c8d07d78c167c76. Report an issue: GitHub.

Appendix: source

Thrown at src/error/src/common.rs:63

}

impl Display for TrackingIssue {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self.0 {
            Some(id) => write!(
                f,
                "Tracking issue: https://github.com/risingwavelabs/risingwave/issues/{id}"
            ),
            None => write!(
                f,
                "No tracking issue yet. Feel free to submit a feature request at https://github.com/risingwavelabs/risingwave/issues/new?labels=type%2Ffeature&template=feature_request.yml"
            ),
        }
    }
}

#[derive(Error, Debug, Macro)]
#[error("Feature is not yet implemented: {feature}\n{issue}")]
#[thiserror_ext(macro(path = "crate::common"))]
pub struct NotImplemented {
    #[message]
    pub feature: String,
    pub issue: TrackingIssue,
}

#[derive(Error, Debug, Macro)]
#[thiserror_ext(macro(path = "crate::common"))]
pub struct NoFunction {
    #[message]
    pub sig: String,
    pub candidates: Option<String>,
}

impl Display for NoFunction {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        write!(f, "function {} does not exist", self.sig)?;

View on GitHub (pinned to 6469eb736d)