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

  1. Ensure blending or compare date range requests always contain at least one subquery
  2. 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.