cube-js/cube · error
Queries list cannot be empty
Error message
Queries list cannot be empty
What it means
get_pivot_query builds a single pivot query for a list of queries (blending / compare date range) and takes the first query as its template; the list was empty, so there is nothing to build from. The input at fault is the queries slice passed by the caller, meaning an upstream step dispatched a multi-query transform with zero subqueries.
Source
Thrown at rust/cube/cubeorchestrator/src/query_result_transform.rs:917
.as_ref()
.and_then(|tds| tds.first())
.and_then(|td| td.granularity.clone())
})
.collect::<HashSet<_>>()
.into_iter()
.collect()
}
/// Get Pivot Query for a list of queries
pub fn get_pivot_query(
query_type: &QueryType,
queries: &Vec<&NormalizedQuery>,
) -> Result<NormalizedQuery> {
let mut pivot_query = queries
.first()
.copied()
.cloned()
.ok_or_else(|| anyhow::anyhow!("Queries list cannot be empty"))?;
match query_type {
QueryType::BlendingQuery => {
// Merge and deduplicate measures and dimensions across all queries
let mut merged_measures = HashSet::new();
let mut merged_dimensions = HashSet::new();
for query in queries {
if let Some(measures) = &query.measures {
merged_measures.extend(measures.iter().cloned());
}
if let Some(dimensions) = &query.dimensions {
merged_dimensions.extend(dimensions.iter().cloned());
}
}
pivot_query.measures = if !merged_measures.is_empty() {
Some(merged_measures.into_iter().collect())View on GitHub (pinned to 7d981676b3)
Solutions
- Ensure blending or compare date range requests always contain at least one subquery
- If composing queries programmatically, guard against dispatching when the queries list is empty
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at rust/cube/cubeorchestrator/src/query_result_transform.rs:917 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02).
Data as JSON: /api/errors/74fb1bbdb47f368a.
Report an issue: GitHub.