From f54ac945a7ef27f91dc371ff43bbb7e707f6bdd9 Mon Sep 17 00:00:00 2001 From: Benjamin Lamothe Date: Wed, 14 Jun 2023 12:34:07 -0400 Subject: [PATCH 1/4] ignore cljs artifact --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2ad3618ee..de94dfb77 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ package-lock.json /js-packages/browser/flureedb.js /js-packages/nodejs/flureenjs.js /js-packages/webworker/flureeworker.js +/.shadow-cljs/ From 0b590c7fb7afc3d90bfa1fbb1f22cf51c2d32ae0 Mon Sep 17 00:00:00 2001 From: Benjamin Lamothe Date: Thu, 15 Jun 2023 09:35:57 -0400 Subject: [PATCH 2/4] extract group val from vars map when the group var is defined there --- src/fluree/db/query/fql.cljc | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/fluree/db/query/fql.cljc b/src/fluree/db/query/fql.cljc index 79367af53..9dbcd4729 100644 --- a/src/fluree/db/query/fql.cljc +++ b/src/fluree/db/query/fql.cljc @@ -324,22 +324,30 @@ ( Date: Thu, 15 Jun 2023 21:30:31 -0400 Subject: [PATCH 3/4] expect map shape for relationship bindings with groupBy --- src/fluree/db/query/fql.cljc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fluree/db/query/fql.cljc b/src/fluree/db/query/fql.cljc index 9dbcd4729..b3d041b15 100644 --- a/src/fluree/db/query/fql.cljc +++ b/src/fluree/db/query/fql.cljc @@ -440,7 +440,7 @@ (defn relationship-binding [{:keys [vars] :as opts}] (async/go-loop [[next-vars & rest-vars] vars - acc []] + acc (if (:groupBy opts) {} [])] (if next-vars (let [opts' (assoc opts :vars next-vars) res ( Date: Sat, 17 Jun 2023 13:49:40 -0400 Subject: [PATCH 4/4] also look for aggregate argument in vars map if specified --- src/fluree/db/query/analytical.cljc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/fluree/db/query/analytical.cljc b/src/fluree/db/query/analytical.cljc index 4f90019b8..87bdff7e9 100644 --- a/src/fluree/db/query/analytical.cljc +++ b/src/fluree/db/query/analytical.cljc @@ -623,10 +623,17 @@ (defn calculate-aggregate - [tuples aggregate-fn-map] + [{:keys [headers vars tuples]} aggregate-fn-map] (let [{:keys [variable as function]} aggregate-fn-map - agg-params (flatten (select-from-tuples [variable] tuples)) - agg-result (function agg-params)] + var (or (as-variable variable) + (:variable variable)) + value (if-let [var-idx (util/index-of headers var)] + (map #(nth % var-idx) tuples) + (if-let [val (get vars var)] + (map (constantly val) tuples) + (throw (ex-info (str "Invalid aggregate variable:" var) + {:status 400 :error :db/invalid-query})))) + agg-result (function value)] [as agg-result])) (defn add-aggregate-cols