risingwavelabs/risingwave · error

not yet implemented

Error message

not yet implemented

What it means

MockCatalog's CatalogV2::list_namespaces is a test stub implemented with todo!(); calling it always panics with 'not yet implemented'. It exists only so test code can construct the trait object; namespace listing is intentionally unimplemented in the mock. Any test path that reaches it is using the wrong mock method or needs the stub fleshed out.

Solutions

  1. Do not call namespace-listing APIs on MockCatalog; back the test with a real catalog implementation if listing is exercised
  2. Extend MockCatalog to return a canned Vec<NamespaceIdent> for tests
  3. Ensure production code paths use a real catalog, not the mock

Example fix

// before
let namespaces = catalog.list_namespaces(None).await?;
// after (in test setup with MockCatalog)
// assert only table-level APIs, or use a real catalog for namespace tests
Defensive patterns

Strategy: fallback

Validate before calling

// Do not exercise namespace listing against MockCatalog in tests
fn mock_supports_namespace_listing() -> bool { false }

Type guard

fn is_mock_catalog(c: &dyn Any) -> bool { c.is::<MockCatalog>() }

Try / catch

// list_namespaces panics (todo!()); guard BEFORE calling
if is_mock_catalog(&catalog) {
    return Ok(vec![]); // or skip the test section
}
let namespaces = catalog.list_namespaces(parent).await?;

Prevention

When it happens

Trigger: Calling list_namespaces on the MockCatalog — e.g. a test or tooling path that enumerates namespaces of an Iceberg catalog wired to MockCatalog.

Common situations: Unit tests exercising generic CatalogV2 namespace APIs against the mock; accidentally shipping test/mock configuration into a code path that lists namespaces.

Related errors


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

Appendix: source

Thrown at src/connector/src/connector_common/iceberg/mock_catalog.rs:169

                        field_id: Some(8),
                        name: "f4".to_owned(),
                        transform: Transform::Hour,
                    },
                ])
                .unwrap()
                .build(),
        )
    }
}

#[async_trait]
impl CatalogV2 for MockCatalog {
    /// List namespaces from table.
    async fn list_namespaces(
        &self,
        _parent: Option<&NamespaceIdent>,
    ) -> iceberg::Result<Vec<NamespaceIdent>> {
        todo!()
    }

    /// Create a new namespace inside the catalog.
    async fn create_namespace(
        &self,
        _namespace: &iceberg::NamespaceIdent,
        _properties: HashMap<String, String>,
    ) -> iceberg::Result<iceberg::Namespace> {
        todo!()
    }

    /// Get a namespace information from the catalog.
    async fn get_namespace(&self, _namespace: &NamespaceIdent) -> iceberg::Result<Namespace> {
        todo!()
    }

    /// Check if namespace exists in catalog.
    async fn namespace_exists(&self, _namespace: &NamespaceIdent) -> iceberg::Result<bool> {

View on GitHub (pinned to 6469eb736d)