From 9a60253ba229769299720ef320ea465e33fa4c92 Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Wed, 3 Jul 2013 18:32:58 +1000 Subject: Add fields to union/intersection result queries --- src/clojure_sql/dsl.clj | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/clojure_sql') diff --git a/src/clojure_sql/dsl.clj b/src/clojure_sql/dsl.clj index 5eae2d7..c94f678 100644 --- a/src/clojure_sql/dsl.clj +++ b/src/clojure_sql/dsl.clj @@ -221,7 +221,6 @@ right (reduce (fn [query [alias table]] (rename-table query alias (keyword (gensym (name table))))) right (:tables right)) - ;;_ (assert (empty? common-tables) "Cannot join two tables with the same name") merged-tables (merge (:tables left) (:tables right)) common-fields (set/intersection (set (keys (:fields left))) (set (keys (:fields right)))) @@ -385,15 +384,17 @@ (defn union "Combine the results of two queries" [& queries] - (assert (apply union-compatible? queries) "Unioned queries must expose the same fields.") + {:pre [(apply union-compatible? queries)]} (assoc (q/->Query) :set-operation :union - :queries queries)) + :queries queries + :fields (zipmap (keys (:fields (first queries))) (repeat nil)))) (defn intersection "Take the common rows in two queries" [& queries] - (assert (apply union-compatible? queries) "Unioned queries must expose the same fields.") + {:pre [(apply union-compatible? queries)]} (assoc (q/->Query) :set-operation :intersect - :queries queries)) + :queries queries + :fields (zipmap (keys (:fields (first queries))) (repeat nil)))) -- cgit v1.2.3