{"record":{"id":"74fb1bbdb47f368a","repo":"cube-js/cube","slug":"queries-list-cannot-be-empty","errorCode":null,"errorMessage":"Queries list cannot be empty","messagePattern":"Queries list cannot be empty","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"rust/cube/cubeorchestrator/src/query_result_transform.rs","lineNumber":917,"sourceCode":"                .as_ref()\n                .and_then(|tds| tds.first())\n                .and_then(|td| td.granularity.clone())\n        })\n        .collect::<HashSet<_>>()\n        .into_iter()\n        .collect()\n}\n\n/// Get Pivot Query for a list of queries\npub fn get_pivot_query(\n    query_type: &QueryType,\n    queries: &Vec<&NormalizedQuery>,\n) -> Result<NormalizedQuery> {\n    let mut pivot_query = queries\n        .first()\n        .copied()\n        .cloned()\n        .ok_or_else(|| anyhow::anyhow!(\"Queries list cannot be empty\"))?;\n\n    match query_type {\n        QueryType::BlendingQuery => {\n            // Merge and deduplicate measures and dimensions across all queries\n            let mut merged_measures = HashSet::new();\n            let mut merged_dimensions = HashSet::new();\n\n            for query in queries {\n                if let Some(measures) = &query.measures {\n                    merged_measures.extend(measures.iter().cloned());\n                }\n                if let Some(dimensions) = &query.dimensions {\n                    merged_dimensions.extend(dimensions.iter().cloned());\n                }\n            }\n\n            pivot_query.measures = if !merged_measures.is_empty() {\n                Some(merged_measures.into_iter().collect())","sourceCodeStart":899,"sourceCodeEnd":935,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/rust/cube/cubeorchestrator/src/query_result_transform.rs#L899-L935","documentation":"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.","triggerScenarios":"Thrown at rust/cube/cubeorchestrator/src/query_result_transform.rs:917 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}