Avoid recursive equality when formatting values
This commit is contained in:
parent
e252462e6b
commit
052ac101b8
2 changed files with 9 additions and 1 deletions
|
|
@ -936,7 +936,7 @@
|
||||||
|
|
||||||
(defn- format-values [k xs]
|
(defn- format-values [k xs]
|
||||||
(let [first-xs (when (sequential? xs) (first (drop-while ident? xs)))]
|
(let [first-xs (when (sequential? xs) (first (drop-while ident? xs)))]
|
||||||
(cond (contains? #{:default 'default} xs)
|
(cond (or (identical? :default xs) (= 'default xs))
|
||||||
[(str (sql-kw xs) " " (sql-kw k))]
|
[(str (sql-kw xs) " " (sql-kw k))]
|
||||||
(empty? xs)
|
(empty? xs)
|
||||||
[(str (sql-kw k) " ()")]
|
[(str (sql-kw k) " ()")]
|
||||||
|
|
|
||||||
|
|
@ -260,6 +260,14 @@
|
||||||
(is (= (format {:insert-into [:foo :bar] :values [{:foo/id 1}]})
|
(is (= (format {:insert-into [:foo :bar] :values [{:foo/id 1}]})
|
||||||
["INSERT INTO foo AS bar (id) VALUES (?)" 1])))
|
["INSERT INTO foo AS bar (id) VALUES (?)" 1])))
|
||||||
|
|
||||||
|
(deftest insert-into-unhashable
|
||||||
|
(let [unhashable
|
||||||
|
(reify Object
|
||||||
|
(toString [_] "Unhashable")
|
||||||
|
(hashCode [_] (throw (ex-info "Unimplemented `hashCode`!" {}))))]
|
||||||
|
(is (= (format {:insert-into [[:lift unhashable]]})
|
||||||
|
["INSERT INTO ?" unhashable]))))
|
||||||
|
|
||||||
(deftest exists-test
|
(deftest exists-test
|
||||||
;; EXISTS should never have been implemented as SQL syntax: it's an operator!
|
;; EXISTS should never have been implemented as SQL syntax: it's an operator!
|
||||||
#_(is (= (format {:exists {:select [:a] :from [:foo]}})
|
#_(is (= (format {:exists {:select [:a] :from [:foo]}})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue