From 796f11c3f42003907d2bc3ab9220d86a86542ca9 Mon Sep 17 00:00:00 2001 From: Sean Corfield Date: Mon, 12 Oct 2020 11:42:47 -0700 Subject: [PATCH] Fix composite by turning it into special syntax --- src/honey/sql.cljc | 8 +++++--- src/honey/sql/helpers.cljc | 7 +++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/honey/sql.cljc b/src/honey/sql.cljc index 6cdd51a..b1bcc87 100644 --- a/src/honey/sql.cljc +++ b/src/honey/sql.cljc @@ -18,7 +18,7 @@ "The (default) order for known clauses. Can have items added and removed." [:nest :with :with-recursive :intersect :union :union-all :except :except-all :select :select-distinct :insert-into :update :delete :delete-from :truncate - :columns :composite :set :from + :columns :set :from :join :left-join :right-join :inner-join :outer-join :full-join :cross-join :where :group-by :having :order-by :limit :offset :for :values @@ -382,7 +382,6 @@ :delete-from #'format-selector :truncate #'format-selector :columns #'format-columns - :composite #'format-columns :set #'format-set-exprs :from #'format-selects :join #'format-join @@ -424,7 +423,6 @@ ;:delete-from 80 ;:truncate 85 ;:columns 90 - ;:composite 95 ;; no longer needed/supported :set0 100 ; low-priority set clause ;:from 110 ;:join 120 @@ -528,6 +526,10 @@ (-> [(str "CAST(" sql " AS " sql' ")")] (into params) (into params')))) + :composite + (fn [_ [& args]] + (let [[sqls params] (format-expr-list args)] + (into [(str "(" (str/join ", " sqls) ")")] params))) :default (fn [_ []] ["DEFAULT"]) diff --git a/src/honey/sql/helpers.cljc b/src/honey/sql/helpers.cljc index 911564e..31c06f2 100644 --- a/src/honey/sql/helpers.cljc +++ b/src/honey/sql/helpers.cljc @@ -54,7 +54,6 @@ (defn delete-from [& args] (generic :delete-from args)) (defn truncate [& args] (generic :truncate args)) (defn columns [& args] (generic :columns args)) -(defn composite [& args] (generic :composite args)) (defn set [& args] (generic-1 :set args)) (defn from [& args] (generic :from args)) (defn join [& args] (generic :join args)) @@ -78,6 +77,10 @@ (defn do-update-set [& args] (generic :do-update-set args)) (defn returning [& args] (generic :returning args)) +;; helpers that produce non-clause expressions -- must be listed below: +(defn composite [& args] (into [:composite] args)) + #?(:clj - (assert (= (clojure.core/set @@#'h/base-clause-order) + (assert (= (clojure.core/set (conj @@#'h/base-clause-order + :composite)) (clojure.core/set (map keyword (keys (ns-publics *ns*)))))))