From 7fe9d6aac3c7b2540834d6a4261f20c1dcf5c16c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 19 May 2026 12:17:12 +0200 Subject: [PATCH 1/2] fix(datasets): Fix btql select for datasets --- src/datasets/api.rs | 19 ++++++++++++------- tests/datasets.rs | 11 ++++++++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/datasets/api.rs b/src/datasets/api.rs index fbb4d6e1..f98a99ff 100644 --- a/src/datasets/api.rs +++ b/src/datasets/api.rs @@ -247,7 +247,12 @@ fn build_dataset_rows_query( fn dataset_rows_select_fields() -> Vec { DATASET_RECORD_FIELDS .iter() - .map(|field| json!({"op": "ident", "name": [field]})) + .map(|field| { + json!({ + "alias": field, + "expr": {"op": "ident", "name": [field]} + }) + }) .collect() } @@ -267,12 +272,12 @@ mod tests { query, serde_json::json!({ "select": [ - {"op": "ident", "name": ["id"]}, - {"op": "ident", "name": ["input"]}, - {"op": "ident", "name": ["expected"]}, - {"op": "ident", "name": ["metadata"]}, - {"op": "ident", "name": ["tags"]}, - {"op": "ident", "name": ["origin"]} + {"alias": "id", "expr": {"op": "ident", "name": ["id"]}}, + {"alias": "input", "expr": {"op": "ident", "name": ["input"]}}, + {"alias": "expected", "expr": {"op": "ident", "name": ["expected"]}}, + {"alias": "metadata", "expr": {"op": "ident", "name": ["metadata"]}}, + {"alias": "tags", "expr": {"op": "ident", "name": ["tags"]}}, + {"alias": "origin", "expr": {"op": "ident", "name": ["origin"]}} ], "from": { "op": "function", diff --git a/tests/datasets.rs b/tests/datasets.rs index 41842142..7d23269c 100644 --- a/tests/datasets.rs +++ b/tests/datasets.rs @@ -320,12 +320,21 @@ fn mock_btql_select_fields(body: &[u8]) -> Option> { if item.get("op").and_then(Value::as_str) == Some("star") { return None; } - let Some(name) = item.get("name").and_then(Value::as_array) else { + let Some(expr) = item.get("expr").and_then(Value::as_object) else { + return None; + }; + if expr.get("op").and_then(Value::as_str) != Some("ident") { + return None; + } + let Some(name) = expr.get("name").and_then(Value::as_array) else { return None; }; if name.len() != 1 { return None; } + if item.get("alias").and_then(Value::as_str).is_none() { + return None; + } let Some(field) = name.first().and_then(Value::as_str) else { return None; }; From df289037ea7c65fdc6c1a877c14f271e27cb20a2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 19 May 2026 13:27:25 +0200 Subject: [PATCH 2/2] idk man linter or smth --- tests/datasets.rs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/tests/datasets.rs b/tests/datasets.rs index 7d23269c..a0a7570e 100644 --- a/tests/datasets.rs +++ b/tests/datasets.rs @@ -320,24 +320,16 @@ fn mock_btql_select_fields(body: &[u8]) -> Option> { if item.get("op").and_then(Value::as_str) == Some("star") { return None; } - let Some(expr) = item.get("expr").and_then(Value::as_object) else { - return None; - }; + let expr = item.get("expr").and_then(Value::as_object)?; if expr.get("op").and_then(Value::as_str) != Some("ident") { return None; } - let Some(name) = expr.get("name").and_then(Value::as_array) else { - return None; - }; + let name = expr.get("name").and_then(Value::as_array)?; if name.len() != 1 { return None; } - if item.get("alias").and_then(Value::as_str).is_none() { - return None; - } - let Some(field) = name.first().and_then(Value::as_str) else { - return None; - }; + item.get("alias").and_then(Value::as_str)?; + let field = name.first().and_then(Value::as_str)?; fields.push(field.to_string()); } Some(fields)