summaryrefslogtreecommitdiff
path: root/src/clojure_sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure_sql')
-rw-r--r--src/clojure_sql/dsl.clj22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/clojure_sql/dsl.clj b/src/clojure_sql/dsl.clj
index 015dfda..16bc2e5 100644
--- a/src/clojure_sql/dsl.clj
+++ b/src/clojure_sql/dsl.clj
@@ -370,19 +370,21 @@
(apply = (map (comp set keys :fields) queries))))
(defn union
- "Combine the results of two queries"
+ "Combine the results of two queries.
+
+ Will always introduce a subquery."
[& queries]
{:pre [(apply union-compatible? queries)]}
- (assoc (q/->Query)
- :set-operation :union
- :queries queries
- :fields (zipmap (keys (:fields (first queries))) (repeat nil))))
+ (convert-to-subquery (q/map->Query {:set-operation :union
+ :queries queries
+ :fields (zipmap (keys (:fields (first queries))) (repeat nil))})))
(defn intersection
- "Take the common rows in two queries"
+ "Take the common rows in two queries.
+
+ Will always introduce a subquery."
[& queries]
{:pre [(apply union-compatible? queries)]}
- (assoc (q/->Query)
- :set-operation :intersect
- :queries queries
- :fields (zipmap (keys (:fields (first queries))) (repeat nil))))
+ (convert-to-subquery (q/map->Query {:set-operation :intersect
+ :queries queries
+ :fields (zipmap (keys (:fields (first queries))) (repeat nil))})))