SigNoz/signoz · error
clickhouse query %s is invalid: %w
Error message
clickhouse query %s is invalid: %w
What it means
Thrown by CompositeQuery.Validate when a ClickHouseQueries map entry fails ClickHouseQuery.Validate. The %s is the query name key; %w wraps the inner error (typically raw SQL validation such as an empty statement or disallowed statement type).
Source
Thrown at pkg/query-service/model/v3/v3.go:628
return fmt.Errorf("composite query is required")
}
if c.BuilderQueries == nil && c.ClickHouseQueries == nil && c.PromQueries == nil && len(c.Queries) == 0 {
return fmt.Errorf("composite query must contain at least one query type")
}
if c.QueryType == QueryTypeBuilder {
for name, query := range c.BuilderQueries {
if err := query.Validate(c.PanelType); err != nil {
return fmt.Errorf("builder query %s is invalid: %w", name, err)
}
}
}
if c.QueryType == QueryTypeClickHouseSQL {
for name, query := range c.ClickHouseQueries {
if err := query.Validate(); err != nil {
return fmt.Errorf("clickhouse query %s is invalid: %w", name, err)
}
}
}
if c.QueryType == QueryTypePromQL {
for name, query := range c.PromQueries {
if err := query.Validate(); err != nil {
return fmt.Errorf("prom query %s is invalid: %w", name, err)
}
}
}
if err := c.PanelType.Validate(); err != nil {
return fmt.Errorf("panel type is invalid: %w", err)
}
if err := c.QueryType.Validate(); err != nil {
return fmt.Errorf("query type is invalid: %w", err)View on GitHub (pinned to 5069bf80b0)
Solutions
- Read the wrapped error to see which SQL rule failed
- Ensure the raw SQL field is a non-empty, single valid ClickHouse statement
- Trim/validate the SQL string client-side before submitting
Example fix
// before
{"queryType":"clickhouse_sql","clickHouseQueries":{"A":{"rawQuery":""}}}
// after
{"queryType":"clickhouse_sql","clickHouseQueries":{"A":{"rawQuery":"SELECT count() FROM signoz_traces." + "distributed"}}} Defensive patterns
Strategy: validation
Validate before calling
for name, q := range composite.ClickHouseQueries {
s := strings.TrimSpace(q.RawQuery)
if s == "" { return fmt.Errorf("clickhouse query %s: empty SQL", name) }
} Type guard
func hasValidSQL(q v3.ClickHouseQuery) bool { return strings.TrimSpace(q.RawQuery) != "" } Try / catch
if err := composite.Validate(); err != nil { return httpError(400, err) } // surface wrapped SQL reason Prevention
- Non-empty single-statement SQL check before submit
- Sanitize templated SQL before building payloads
When it happens
Trigger: Submitting queryType=clickhouse_sql with a ClickHouseQueries entry whose raw SQL is empty, only whitespace, or not a permitted statement.
Common situations: Custom ClickHouse SQL panels, hand-crafted API payloads, or SQL strings built by string concatenation that end up empty.
Related errors
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/943c1b54aec3f1bc.
Report an issue: GitHub.