Merge 8a12215e3d into a48ea1c4d2
This commit is contained in:
commit
ba00038c1e
1 changed files with 28 additions and 12 deletions
|
|
@ -38,6 +38,11 @@
|
||||||
|
|
||||||
(def ^:dynamic *subquery?* false)
|
(def ^:dynamic *subquery?* false)
|
||||||
|
|
||||||
|
(def ^:dynamic *handling-values* false)
|
||||||
|
(def ^:dynamic *enable-values-subqueries?*
|
||||||
|
"When False, subqueries are not computed for IPersistentMap values"
|
||||||
|
true)
|
||||||
|
|
||||||
(def ^:private quote-fns
|
(def ^:private quote-fns
|
||||||
{:ansi #(str \" % \")
|
{:ansi #(str \" % \")
|
||||||
:mysql #(str \` % \`)
|
:mysql #(str \` % \`)
|
||||||
|
|
@ -226,7 +231,11 @@
|
||||||
*param-names* (atom [])
|
*param-names* (atom [])
|
||||||
*input-params* (atom params)
|
*input-params* (atom params)
|
||||||
*quote-identifier-fn* (quote-fns (:quoting opts))
|
*quote-identifier-fn* (quote-fns (:quoting opts))
|
||||||
*parameterizer* (parameterizers (or (:parameterizer opts) :jdbc))]
|
*parameterizer* (parameterizers (or (:parameterizer opts) :jdbc))
|
||||||
|
*enable-values-subqueries?* (if-some
|
||||||
|
[?enable-values-subqueries (:enable-values-subqueries? opts)]
|
||||||
|
?enable-values-subqueries
|
||||||
|
*enable-values-subqueries?*)]
|
||||||
(let [sql-str (to-sql sql-map)]
|
(let [sql-str (to-sql sql-map)]
|
||||||
(if (seq @*params*)
|
(if (seq @*params*)
|
||||||
(if (:return-param-names opts)
|
(if (:return-param-names opts)
|
||||||
|
|
@ -292,6 +301,12 @@
|
||||||
(-to-sql [x] (.s x))
|
(-to-sql [x] (.s x))
|
||||||
clojure.lang.IPersistentMap
|
clojure.lang.IPersistentMap
|
||||||
(-to-sql [x]
|
(-to-sql [x]
|
||||||
|
(if (and *handling-values*
|
||||||
|
(not *enable-values-subqueries?*))
|
||||||
|
(let [pname (keyword (str "_" (swap! *param-counter* inc)))]
|
||||||
|
(swap! *param-names* conj pname)
|
||||||
|
(swap! *params* conj x)
|
||||||
|
(*parameterizer*))
|
||||||
(let [clause-ops (sort-clauses (keys x))
|
(let [clause-ops (sort-clauses (keys x))
|
||||||
sql-str (binding [*subquery?* true
|
sql-str (binding [*subquery?* true
|
||||||
*fn-context?* false]
|
*fn-context?* false]
|
||||||
|
|
@ -300,7 +315,7 @@
|
||||||
clause-ops)))]
|
clause-ops)))]
|
||||||
(if *subquery?*
|
(if *subquery?*
|
||||||
(paren-wrap sql-str)
|
(paren-wrap sql-str)
|
||||||
sql-str)))
|
sql-str))))
|
||||||
nil
|
nil
|
||||||
(-to-sql [x] "NULL")
|
(-to-sql [x] "NULL")
|
||||||
Object
|
Object
|
||||||
|
|
@ -425,8 +440,9 @@
|
||||||
(str "(" (comma-join (map to-sql x)) ")"))))
|
(str "(" (comma-join (map to-sql x)) ")"))))
|
||||||
(str
|
(str
|
||||||
"(" (comma-join (map to-sql (keys (first values)))) ") VALUES "
|
"(" (comma-join (map to-sql (keys (first values)))) ") VALUES "
|
||||||
|
(binding [*handling-values* true]
|
||||||
(comma-join (for [x values]
|
(comma-join (for [x values]
|
||||||
(str "(" (comma-join (map to-sql (vals x))) ")"))))))
|
(str "(" (comma-join (map to-sql (vals x))) ")")))))))
|
||||||
|
|
||||||
(defmethod format-clause :query-values [[_ query-values] _]
|
(defmethod format-clause :query-values [[_ query-values] _]
|
||||||
(to-sql query-values))
|
(to-sql query-values))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue