influxdata/influxdb · error · QueryEndpointError
QueryEndpoint::query is not implemented
Error message
QueryEndpoint::query is not implemented
What it means
`QueryEndpoint::query` in the processing engine is a stub that always returns `QueryEndpointError::Fail` wrapping an `io::ErrorKind::Unsupported` error. The processing-engine plugin runtime cannot execute SQL queries through this endpoint; any plugin calling `query()` on it will receive this failure.
Solutions
- Use the plugin's HTTP client to query the server's HTTP query API (e.g. POST /api/v3/query_sql) instead of `QueryEndpoint::query`.
- Upgrade to a version/build where the query endpoint is implemented, if available.
- Restructure the plugin to avoid inline queries — pass the needed data in trigger input instead.
Example fix
// before
let batches = endpoint.query("mydb", "SELECT * FROM t", ¶ms)?;
// after
let resp = http.post("http://localhost:8181/api/v3/query_sql")
.body("db=mydb&q=SELECT%20*%20FROM%20t").send()?; Defensive patterns
Strategy: try-catch
Try / catch
// Python plugin
try:
batches = endpoint.query(db, sql, params)
except QueryEndpointError as e:
log.error("QueryEndpoint unavailable, falling back to HTTP: %s", e)
batches = query_via_http_api(db, sql) Prevention
- Assume QueryEndpoint::query is unimplemented in processing-engine plugins
- Use the HTTP query API from plugins needing data access
- Check plugin API docs for your server version before relying on endpoint methods
When it happens
Trigger: Any Python plugin invoking `query` on the `QueryEndpoint` provided to request/WAL plugins, regardless of the database, query text, or parameters.
Common situations: Plugin authors trying to query data inside a processing-engine trigger; following older plugin tutorials that assumed query support; the query path was never wired up in this build.
Related errors
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/809142c30b7dd2e5.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_processing_engine/src/query.rs:69
Ok(batches)
}
}
/// [`QueryEndpoint`] that is unimplemented.
#[derive(Debug, Clone, Copy, Default)]
pub struct UnimplementedQueryEndpoint;
#[async_trait]
impl QueryEndpoint for UnimplementedQueryEndpoint {
async fn query(
&self,
_db: &str,
query: &str,
_params: &HashMap<String, String>,
) -> Result<Vec<RecordBatch>, QueryEndpointError> {
Err(QueryEndpointError::Fail {
query: query.to_owned(),
err: Box::new(std::io::Error::new(
std::io::ErrorKind::Unsupported,
"QueryEndpoint::query is not implemented",
)),
})
}
}
View on GitHub (pinned to 06200ef96b)