databendlabs/databend · error
{}
Error message
{} What it means
When binding a URI location whose scheme resolves to Azure Blob storage, the connection options must include 'endpoint_url'. parse_azure_params returns this InvalidInput error when it is absent, because the azblob storage params cannot be constructed without an explicit account endpoint.
Solutions
- Add `ENDPOINT_URL = 'https://<account>.blob.core.windows.net'` to the CONNECTION_OPTIONS of the stage/location.
- Verify the URL scheme really is azblob and that you are not accidentally routing an S3 location through the Azure parser.
- Check the connection options for typos — the key must be exactly `endpoint_url` (case-insensitive option name).
- Consult current Databend docs in case newer versions support account-name/key options instead of a raw endpoint URL.
Example fix
// before CREATE STAGE s LOCATION = 'azblob://container/path/'; // after CREATE STAGE s LOCATION = 'azblob://container/path/' CONNECTION_OPTIONS = (ENDPOINT_URL = 'https://myaccount.blob.core.windows.net');
Defensive patterns
Strategy: validation
Validate before calling
// pre-validate the stage DDL
if location.starts_with("azblob://") && !options.contains_key("endpoint_url") {
return Err("azblob locations require CONNECTION_OPTIONS = (ENDPOINT_URL = 'https://<account>.blob.core.windows.net')");
} Try / catch
// catch in client code
match exec(ddl).await { Err(e) if e.to_string().contains("endpoint_url is required for storage azblob") => hint_user_azure_endpoint(e), Err(e) => Err(e) } Prevention
- Always include ENDPOINT_URL for azblob locations
- Do not copy S3 stage definitions verbatim to Azure
- Template stage DDLs per cloud provider
- Check option keys for exact spelling (endpoint_url)
When it happens
Trigger: Running a statement like `CREATE STAGE ... LOCATION = 'azblob://bucket/path/'` (or ATTACH/ COPY with an azblob URI) without `CONNECTION_OPTIONS = (ENDPOINT_URL = '...')`.
Common situations: Users accustomed to AWS S3 (which derives the endpoint from the bucket) omitting the Azure account URL; copying an S3 stage definition for Azure; missing the account-specific `https://<account>.blob.core.windows.net` endpoint.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- sync crash me panic
- internal error: entered unreachable code
- internal error: entered unreachable code
- Unsupported format for
- Unsupported source type. Expected path, pandas.DataFrame…
AI-assisted analysis of databendlabs/databend@288d84d76e (2026-09-11).
Data as JSON: /api/errors/e4fd492822c69268.
Report an issue: GitHub.
Appendix: source
Thrown at src/query/service/src/table_functions/async_crash_me.rs:156
ctx: Arc<dyn TableContext>,
output: Arc<OutputPort>,
message: Option<String>,
) -> Result<ProcessorPtr> {
AsyncSourcer::create(ctx.get_scan_progress(), output, AsyncCrashMeSource {
message,
})
}
}
#[async_trait::async_trait]
impl AsyncSource for AsyncCrashMeSource {
const NAME: &'static str = "async_crash_me";
#[async_backtrace::framed]
async fn generate(&mut self) -> Result<Option<DataBlock>> {
match &self.message {
None => panic!("async crash me panic"),
Some(message) => panic!("{}", message),
}
}
}
impl TableFunction for AsyncCrashMeTable {
fn function_name(&self) -> &str {
self.name()
}
fn as_table<'a>(self: Arc<Self>) -> Arc<dyn Table + 'a>
where Self: 'a {
self
}
}
View on GitHub (pinned to 288d84d76e)