diff --git a/Cargo.lock b/Cargo.lock index 06e4a9ec..7104765d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -460,7 +460,7 @@ dependencies = [ "async-tempfile", "futures", "googletest 0.12.0", - "itertools 0.13.0", + "itertools 0.14.0", "mongodb", "mongodb-support", "ndc-models", @@ -1554,9 +1554,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] @@ -1818,7 +1818,7 @@ dependencies = [ "http 0.2.12", "indent", "indexmap 2.2.6", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "mockall", "mongodb", @@ -1855,7 +1855,7 @@ dependencies = [ "futures-util", "googletest 0.13.0", "indexmap 2.2.6", - "itertools 0.13.0", + "itertools 0.14.0", "json-structural-diff", "mongodb", "mongodb-agent-common", @@ -1888,7 +1888,7 @@ dependencies = [ "futures", "http 0.2.12", "indexmap 2.2.6", - "itertools 0.13.0", + "itertools 0.14.0", "mongodb", "mongodb-agent-common", "mongodb-support", @@ -1949,7 +1949,7 @@ dependencies = [ [[package]] name = "ndc-models" version = "0.2.0" -source = "git+http://github.com/hasura/ndc-spec.git?tag=v0.2.0-rc.2#2fad1c699df79890dbb3877d1035ffd8bd0abfc2" +source = "git+http://github.com/hasura/ndc-spec.git?tag=v0.2.0#e25213f51a7e8422d712509d63ae012c67b4f3f1" dependencies = [ "indexmap 2.2.6", "ref-cast", @@ -1969,7 +1969,7 @@ dependencies = [ "enum-iterator", "indent", "indexmap 2.2.6", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "ndc-models", "ndc-test-helpers", @@ -1982,8 +1982,8 @@ dependencies = [ [[package]] name = "ndc-sdk" -version = "0.5.0" -source = "git+https://github.com/hasura/ndc-sdk-rs.git?rev=643b96b8ee4c8b372b44433167ce2ac4de193332#643b96b8ee4c8b372b44433167ce2ac4de193332" +version = "0.6.0" +source = "git+https://github.com/hasura/ndc-sdk-rs.git?rev=v0.6.0#f8db8bff28c42f7da317a2336808bb7149408205" dependencies = [ "async-trait", "axum", @@ -2014,8 +2014,8 @@ dependencies = [ [[package]] name = "ndc-sdk-core" -version = "0.5.0" -source = "git+https://github.com/hasura/ndc-sdk-rs.git?rev=643b96b8ee4c8b372b44433167ce2ac4de193332#643b96b8ee4c8b372b44433167ce2ac4de193332" +version = "0.6.0" +source = "git+https://github.com/hasura/ndc-sdk-rs.git?rev=v0.6.0#f8db8bff28c42f7da317a2336808bb7149408205" dependencies = [ "async-trait", "axum", @@ -2035,7 +2035,7 @@ dependencies = [ [[package]] name = "ndc-test" version = "0.2.0" -source = "git+http://github.com/hasura/ndc-spec.git?tag=v0.2.0-rc.2#2fad1c699df79890dbb3877d1035ffd8bd0abfc2" +source = "git+http://github.com/hasura/ndc-spec.git?tag=v0.2.0#e25213f51a7e8422d712509d63ae012c67b4f3f1" dependencies = [ "async-trait", "clap", @@ -2056,7 +2056,7 @@ name = "ndc-test-helpers" version = "1.7.0" dependencies = [ "indexmap 2.2.6", - "itertools 0.13.0", + "itertools 0.14.0", "ndc-models", "serde_json", "smol_str", diff --git a/Cargo.toml b/Cargo.toml index 27b70db5..573c6ee2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,13 +18,13 @@ resolver = "2" # The tag or rev of ndc-models must match the locked tag or rev of the # ndc-models dependency of ndc-sdk [workspace.dependencies] -ndc-sdk = { git = "https://github.com/hasura/ndc-sdk-rs.git", rev = "643b96b8ee4c8b372b44433167ce2ac4de193332" } -ndc-models = { git = "http://github.com/hasura/ndc-spec.git", tag = "v0.2.0-rc.2" } +ndc-sdk = { git = "https://github.com/hasura/ndc-sdk-rs.git", rev = "v0.6.0" } +ndc-models = { git = "http://github.com/hasura/ndc-spec.git", tag = "v0.2.0" } indexmap = { version = "2", features = [ "serde", ] } # should match the version that ndc-models uses -itertools = "^0.13.0" +itertools = "^0.14.0" mongodb = { version = "^3.1.0", features = ["tracing-unstable"] } nonempty = "^0.11.0" schemars = "^0.8.12" diff --git a/crates/mongodb-agent-common/src/query/response.rs b/crates/mongodb-agent-common/src/query/response.rs index 8ed67a47..8b052520 100644 --- a/crates/mongodb-agent-common/src/query/response.rs +++ b/crates/mongodb-agent-common/src/query/response.rs @@ -282,13 +282,6 @@ fn serialize_groups( let aggregates = serialize_aggregates(mode, path, &grouping.aggregates, doc)?; - // TODO: This conversion step can be removed when the aggregates map key type is - // changed from String to FieldName - let aggregates = aggregates - .into_iter() - .map(|(key, value)| (key.to_string(), value)) - .collect(); - Ok(Group { dimensions, aggregates, diff --git a/crates/mongodb-agent-common/src/scalar_types_capabilities.rs b/crates/mongodb-agent-common/src/scalar_types_capabilities.rs index 3140217d..c5edbd37 100644 --- a/crates/mongodb-agent-common/src/scalar_types_capabilities.rs +++ b/crates/mongodb-agent-common/src/scalar_types_capabilities.rs @@ -87,6 +87,7 @@ fn extended_json_scalar_type() -> (ndc_models::ScalarTypeName, ScalarType) { (name, ndc_definition) }) .collect(), + extraction_functions: Default::default(), }, ) } @@ -97,6 +98,7 @@ fn make_scalar_type(bson_scalar_type: BsonScalarType) -> (ndc_models::ScalarType representation: bson_scalar_type_representation(bson_scalar_type), aggregate_functions: bson_aggregation_functions(bson_scalar_type), comparison_operators: bson_comparison_operators(bson_scalar_type), + extraction_functions: Default::default(), }; (scalar_type_name.into(), scalar_type) } diff --git a/crates/mongodb-connector/src/schema.rs b/crates/mongodb-connector/src/schema.rs index bdc922f5..6dc867cf 100644 --- a/crates/mongodb-connector/src/schema.rs +++ b/crates/mongodb-connector/src/schema.rs @@ -24,7 +24,7 @@ pub async fn get_schema(config: &MongoConfiguration) -> connector::Result( }) .collect::>()?; - let aggregates = plan_for_aggregates( - plan_state, - collection_object_type, - grouping - .aggregates - .into_iter() - .map(|(key, aggregate)| (key.into(), aggregate)) - .collect(), - )?; + let aggregates = plan_for_aggregates(plan_state, collection_object_type, grouping.aggregates)?; let predicate = grouping .predicate @@ -72,6 +64,7 @@ fn plan_for_dimension( column_name, arguments, field_path, + .. } => { let (relationship_path, collection_type) = plan_for_relationship_path( plan_state, diff --git a/crates/ndc-query-plan/src/plan_for_query_request/plan_test_helpers/mod.rs b/crates/ndc-query-plan/src/plan_for_query_request/plan_test_helpers/mod.rs index 970f4d34..e0c5b873 100644 --- a/crates/ndc-query-plan/src/plan_for_query_request/plan_test_helpers/mod.rs +++ b/crates/ndc-query-plan/src/plan_for_query_request/plan_test_helpers/mod.rs @@ -193,6 +193,7 @@ fn scalar_types() -> BTreeMap { ndc::ComparisonOperatorDefinition::Equal, )] .into(), + extraction_functions: Default::default(), }, ), ( @@ -211,6 +212,7 @@ fn scalar_types() -> BTreeMap { ndc::ComparisonOperatorDefinition::Equal, )] .into(), + extraction_functions: Default::default(), }, ), ( @@ -231,6 +233,7 @@ fn scalar_types() -> BTreeMap { ), ] .into(), + extraction_functions: Default::default(), }, ), ] diff --git a/crates/ndc-test-helpers/src/groups.rs b/crates/ndc-test-helpers/src/groups.rs index 4899f3b2..d0eeff32 100644 --- a/crates/ndc-test-helpers/src/groups.rs +++ b/crates/ndc-test-helpers/src/groups.rs @@ -11,7 +11,7 @@ use crate::column::Column; #[derive(Clone, Debug, Default)] pub struct GroupingBuilder { dimensions: Vec, - aggregates: IndexMap, + aggregates: IndexMap, predicate: Option, order_by: Option, limit: Option, @@ -33,7 +33,7 @@ impl GroupingBuilder { pub fn aggregates( mut self, - aggregates: impl IntoIterator, impl Into)>, + aggregates: impl IntoIterator, impl Into)>, ) -> Self { self.aggregates = aggregates .into_iter() @@ -127,6 +127,7 @@ impl From for Dimension { column_name: value.column_name, arguments: value.arguments, field_path: value.field_path, + extraction: None, } } } diff --git a/crates/ndc-test-helpers/src/query_response.rs b/crates/ndc-test-helpers/src/query_response.rs index 6b87f5c6..b956a771 100644 --- a/crates/ndc-test-helpers/src/query_response.rs +++ b/crates/ndc-test-helpers/src/query_response.rs @@ -134,13 +134,13 @@ pub fn row_set() -> RowSetBuilder { pub fn group( dimensions: impl IntoIterator>, - aggregates: impl IntoIterator)>, + aggregates: impl IntoIterator, impl Into)>, ) -> Group { Group { dimensions: dimensions.into_iter().map(Into::into).collect(), aggregates: aggregates .into_iter() - .map(|(name, value)| (name.to_string(), value.into())) + .map(|(name, value)| (name.into(), value.into())) .collect(), } }