Fixes #289 by implementing USING

This commit is contained in:
Sean Corfield 2021-01-30 11:19:12 -08:00
parent d5b11e2da6
commit d2968bbfcc
3 changed files with 12 additions and 1 deletions

View file

@ -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 :set :from
:columns :set :from :using
:join :left-join :right-join :inner-join :outer-join :full-join
:cross-join
:where :group-by :having :order-by :limit :offset :for :values
@ -401,6 +401,7 @@
:columns #'format-columns
:set #'format-set-exprs
:from #'format-selects
:using #'format-selects
:join #'format-join
:left-join #'format-join
:right-join #'format-join

View file

@ -61,6 +61,7 @@
(defn columns [& args] (generic :columns args))
(defn set [& args] (generic-1 :set args))
(defn from [& args] (generic :from args))
(defn using [& args] (generic :using args))
(defn join [& args] (generic :join args))
(defn left-join [& args] (generic :left-join args))
(defn right-join [& args] (generic :right-join args))

View file

@ -354,6 +354,15 @@
:where [:= :t1.bar 42]}
(format {:dialect :mysql})))))
(deftest delete-using
(is (= ["DELETE FROM films USING producers WHERE (producer_id = producers.id) AND (producers.name = ?)" "foo"]
(-> {:delete-from :films
:using [:producers]
:where [:and
[:= :producer_id :producers.id]
[:= :producers.name "foo"]]}
(format)))))
(deftest truncate-test
(is (= ["TRUNCATE `foo`"]
(-> {:truncate :foo}