{"record":{"id":"278b20ee1886b35b","repo":"risingwavelabs/risingwave","slug":"warehouse-path-must-be-set-in-catalog","errorCode":null,"errorMessage":"`warehouse.path` must be set in {} catalog","messagePattern":"`warehouse\\.path` must be set in (.+?) catalog","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/connector/src/connector_common/iceberg/mod.rs","lineNumber":949,"sourceCode":"                                .with_context(|| {\n                                    format!(\n                                        \"Invalid s3 path: {}, bucket is missing\",\n                                        warehouse_path\n                                    )\n                                })?\n                                .to_owned();\n                            let root = url.path().trim_start_matches('/').to_owned();\n                            (Some(bucket), Some(root))\n                        }\n                    };\n\n                    if let Some(bucket) = bucket {\n                        iceberg_configs.insert(\"iceberg.table.io.bucket\".to_owned(), bucket);\n                    }\n                }\n                None => {\n                    if catalog_impl != JniCatalogImpl::Rest {\n                        bail!(\"`warehouse.path` must be set in {} catalog\", catalog_type);\n                    }\n                }\n            }\n            iceberg_configs.insert(\n                S3_DISABLE_CONFIG_LOAD.to_owned(),\n                (!enable_config_load).to_string(),\n            );\n\n            iceberg_configs.insert(\n                GCS_DISABLE_CONFIG_LOAD.to_owned(),\n                (!enable_config_load).to_string(),\n            );\n\n            iceberg_configs.insert(\n                S3_PATH_STYLE_ACCESS.to_owned(),\n                self.effective_s3_path_style_access().to_string(),\n            );\n","sourceCodeStart":931,"sourceCodeEnd":967,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/connector_common/iceberg/mod.rs#L931-L967","documentation":"When creating an Iceberg source/sink, the catalog's warehouse path must be supplied via the catalog's storage config; if the storage (S3/GCS/OSS/...) bucket/path block is absent, the connector requires `warehouse.path` unless the catalog is a REST catalog (which carries its own warehouse). This bail happens while populating Iceberg catalog configs.","triggerScenarios":"CREATE SOURCE/SINK with an iceberg catalog whose catalog.type is hive/glue/jdbc/sql and whose with-props lack the storage location (e.g. s3.path / warehouse location) — the storage path block is None and catalog_impl != Rest.","commonSituations":"Defining a Glue or Hive catalog without a warehouse location; forgetting the endpoint/s3.path style fields; using a REST catalog config but forgetting catalog.type=rest so validation treats it as non-REST.","solutions":["Set the warehouse location field in with-props (e.g. 'warehouse.path' or the storage path key for your catalog, like s3.path with bucket).","If using a REST catalog, ensure catalog.type is 'rest' so the warehouse comes from the REST server.","Verify the catalog type in the DDL matches the storage config actually supplied."],"exampleFix":"-- before\nWITH (\n  'catalog.type' = 'glue'\n)\n-- after\nWITH (\n  'catalog.type' = 'glue',\n  'warehouse.path' = 's3a://my-bucket/warehouse'\n)","handlingStrategy":"validation","validationCode":"-- pre-flight: every non-rest iceberg catalog must carry a warehouse location\nSELECT catalog_type, warehouse_path FROM my_catalogs\nWHERE catalog_type = 'iceberg' AND (catalog_impl <> 'rest' AND warehouse_path IS NULL);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always include the warehouse/storage path key in iceberg catalog with-props.","Set catalog.type = 'rest' only when the REST server supplies the warehouse.","Lint DDL templates so the storage block is never omitted."],"tags":["iceberg","catalog","configuration"],"backgroundTag":"missing-required-config-field","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"}