{"record":{"id":"70c8b2ccff40fb4b","repo":"databendlabs/databend","slug":"unsupported-iceberg-scheme","errorCode":null,"errorMessage":"unsupported iceberg scheme: {}","messagePattern":"unsupported iceberg scheme: (.+?)","errorType":"validation","errorClass":"Unsupported","httpStatus":null,"severity":"error","filePath":"src/common/storage/src/operator.rs","lineNumber":889,"sourceCode":"                    opendal_config.insert(key.clone(), value.clone());\n                    None\n                }\n            };\n\n            if let Some(opendal_key) = opendal_key {\n                opendal_config.insert(opendal_key.to_string(), value.clone());\n            }\n        }\n\n        let opendal_scheme = match self.scheme.as_str() {\n            \"s3\" | \"s3a\" => opendal::Scheme::S3,\n            \"gs\" | \"gcs\" => opendal::Scheme::Gcs,\n            \"oss\" => opendal::Scheme::Oss,\n            \"abfs\" | \"abfss\" | \"wasb\" | \"wasbs\" => opendal::Scheme::Azdls,\n            \"file\" | \"\" => opendal::Scheme::Fs,\n            \"memory\" => opendal::Scheme::Memory,\n            _ => {\n                return Err(Error::new(\n                    ErrorKind::Unsupported,\n                    format!(\"unsupported iceberg scheme: {}\", self.scheme),\n                ));\n            }\n        };\n\n        let op = Operator::via_iter(opendal_scheme, opendal_config)\n            .map_err(|e| Error::other(e.to_string()))?;\n\n        Ok((op, relative_path_pos))\n    }\n}\n\nimpl OperatorRegistry for IcebergFileIO {\n    fn get_operator_path<'a>(&self, location: &'a str) -> Result<(Operator, &'a str)> {\n        let (op, pos) = self.build_operator(location)?;\n        Ok((op, &location[pos..]))\n    }","sourceCodeStart":871,"sourceCodeEnd":907,"githubUrl":"https://github.com/databendlabs/databend/blob/288d84d76e20a2f8f7173bda9691eb6ece301aa9/src/common/storage/src/operator.rs#L871-L907","documentation":"IcebergFileIO maps the FileIO scheme string to an opendal::Scheme for a fixed set: s3/s3a, gs/gcs, oss, abfs/abfss/wasb/wasbs, file, memory. Any other scheme found in the iceberg FileIO is rejected as ErrorKind::Unsupported, because this wrapper has no operator builder for it.","triggerScenarios":"build_operator encountering self.scheme outside the supported list, e.g. a FileIO constructed for 'oss' with an unhandled alias, a custom/unknown scheme like 'webhdfs' or 'hdfs', or a corrupted/empty scheme value not matching any arm.","commonSituations":"Using an iceberg catalog whose FileIO was configured for a backend this integration does not support (e.g. HDFS); typos in scheme configuration; a new iceberg-rs scheme added upstream before Databend added support.","solutions":["Change the table/location storage to one of the supported schemes: s3/s3a, gs/gcs, oss, abfs/abfss/wasb/wasbs, file, memory.","If the backend is genuinely needed, extend the match in src/common/storage/src/operator.rs:881 to map the new scheme to an opendal::Scheme.","Check the scheme string for typos (e.g. 'S3' vs 's3') and ensure the iceberg FileIO was built with the intended scheme."],"exampleFix":"// before\nlet file_io = FileIO::Builder::new().build(\"hdfs://namenode/warehouse\")?;\n// after\nlet file_io = FileIO::Builder::new().build(\"s3://my-bucket/warehouse\")?;","handlingStrategy":"try-catch","validationCode":"const SUPPORTED: &[&str] = &[\"s3\", \"s3a\", \"gs\", \"gcs\", \"oss\", \"abfs\", \"abfss\", \"wasb\", \"wasbs\", \"file\", \"\", \"memory\"];\nif !SUPPORTED.contains(&file_io_scheme.as_str()) {\n    return Err(anyhow!(\"iceberg scheme {file_io_scheme:?} is not supported\"));\n}","typeGuard":null,"tryCatchPattern":"match file_io.get_operator_path(location) {\n    Err(e) if e.message().starts_with(\"unsupported iceberg scheme\") => {\n        // fall back to a supported backend or surface a clear user error\n        bail!(\"backend not supported; use s3/gcs/oss/adls/file storage\");\n    }\n    other => other,\n}","preventionTips":["Configure iceberg catalogs only with the supported storage backends.","Keep scheme strings lowercase and canonical before constructing FileIO.","Track upstream iceberg-rs scheme additions and extend the mapping when adopting them."],"tags":["storage","iceberg","opendal","unsupported-scheme"],"backgroundTag":"unsupported-operation","analyzedSha":"288d84d76e20a2f8f7173bda9691eb6ece301aa9","analyzedAt":"2026-09-11T11:29:36.208Z","contentChangedAt":"2026-09-11T11:29:36.208Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}