{"record":{"id":"520323ab94922f71","repo":"risingwavelabs/risingwave","slug":"catalog-name-must-not-be-set-when-hosted-catalo","errorCode":null,"errorMessage":"`catalog.name` must not be set when `hosted_catalog` is set","messagePattern":"`catalog\\.name` must not be set when `hosted_catalog` is set","errorType":"validation","errorClass":"ConnectorError","httpStatus":null,"severity":"error","filePath":"src/connector/src/connector_common/connection.rs","lineNumber":280,"sourceCode":"            }\n        }\n\n        if env_var_is_true(DISABLE_DEFAULT_CREDENTIAL)\n            && matches!(common.enable_config_load, Some(true))\n        {\n            bail!(\"`enable_config_load` can't be enabled in this environment\");\n        }\n\n        if common.hosted_catalog.unwrap_or(false) {\n            // If `hosted_catalog` is set, we don't need to test the catalog, but just ensure no catalog fields are set.\n            if common.catalog_type.is_some() {\n                bail!(\"`catalog.type` must not be set when `hosted_catalog` is set\");\n            }\n            if common.catalog_uri.is_some() {\n                bail!(\"`catalog.uri` must not be set when `hosted_catalog` is set\");\n            }\n            if common.catalog_name.is_some() {\n                bail!(\"`catalog.name` must not be set when `hosted_catalog` is set\");\n            }\n            if self.jdbc_user.is_some() {\n                bail!(\"`catalog.jdbc.user` must not be set when `hosted_catalog` is set\");\n            }\n            if self.jdbc_password.is_some() {\n                bail!(\"`catalog.jdbc.password` must not be set when `hosted_catalog` is set\");\n            }\n            return Ok(());\n        }\n\n        if common.catalog_type.is_none() {\n            bail!(\"`catalog.type` must be set\");\n        }\n\n        // Test catalog\n        let iceberg_common = common.clone();\n\n        let mut java_map = HashMap::new();","sourceCodeStart":262,"sourceCodeEnd":298,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/connector_common/connection.rs#L262-L298","documentation":"Same hosted-catalog validation block in `IcebergConnection::validate_connection`: `catalog.name` identifies a self-managed catalog and therefore conflicts with `hosted_catalog = true`, which relies on the platform-managed catalog.","triggerScenarios":"Calling validate_connection where `hosted_catalog` is true AND `catalog.name` is set (e.g. a Hive metastore or Glue catalog name).","commonSituations":"Carrying over `catalog.name` from a Glue/Hive catalog setup while switching to hosted_catalog mode; templated configs that always emit `catalog.name`.","solutions":["Remove `catalog.name` from the connection options when `hosted_catalog = true`.","Alternatively turn off `hosted_catalog` and configure the named catalog explicitly."],"exampleFix":"// before\nWITH (connector='iceberg', hosted_catalog=true, catalog.name='glue_catalog')\n// after\nWITH (connector='iceberg', hosted_catalog=true)","handlingStrategy":"validation","validationCode":"if hosted_catalog && catalog_name.is_some() { return Err(\"catalog.name must be unset when hosted_catalog=true\"); }","typeGuard":null,"tryCatchPattern":"match validate_connection(&conn).await {\n    Err(e) if e.to_string().contains(\"`catalog.name` must not be set\") => warn_user_and_abort(),\n    other => other,\n}","preventionTips":["Remove catalog.name in hosted-catalog configs","Keep hosted templates minimal","Pre-validate option sets before CREATE"],"tags":["iceberg","validation","conflicting-options","hosted-catalog"],"backgroundTag":"mutually-exclusive-options","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}