Merge 9eb87987ed into 7001826d4b
This commit is contained in:
commit
fd4883ebaa
2 changed files with 20 additions and 6 deletions
|
|
@ -85,7 +85,9 @@
|
|||
"regex" "regexp"})
|
||||
|
||||
(defprotocol ToSql
|
||||
(to-sql [x]))
|
||||
(to-sql
|
||||
[x]
|
||||
[x & args]))
|
||||
|
||||
(defmulti fn-handler (fn [op & args] op))
|
||||
|
||||
|
|
@ -277,13 +279,14 @@
|
|||
|
||||
(extend-protocol ToSql
|
||||
clojure.lang.Keyword
|
||||
(to-sql [x]
|
||||
(to-sql [x & {:as args}]
|
||||
(let [s (name x)]
|
||||
(case (.charAt s 0)
|
||||
\% (let [call-args (string/split (subs s 1) #"\." 2)]
|
||||
(to-sql (apply call (map keyword call-args))))
|
||||
\? (to-sql (param (keyword (subs s 1))))
|
||||
(quote-identifier x))))
|
||||
(->> (apply concat (select-keys args [:split]))
|
||||
(apply quote-identifier x)))))
|
||||
clojure.lang.Symbol
|
||||
(to-sql [x] (quote-identifier x))
|
||||
java.lang.Number
|
||||
|
|
@ -302,9 +305,13 @@
|
|||
(if (= :select *clause*)
|
||||
" AS "
|
||||
" ")
|
||||
(if (string? (second x))
|
||||
(quote-identifier (second x))
|
||||
(to-sql (second x))))))
|
||||
(cond (string? (second x))
|
||||
(quote-identifier (second x) :split false)
|
||||
(keyword? (second x))
|
||||
(to-sql (second x) :split false)
|
||||
:else
|
||||
(to-sql (second x))
|
||||
))))
|
||||
SqlCall
|
||||
(to-sql [x]
|
||||
(binding [*fn-context?* true]
|
||||
|
|
|
|||
|
|
@ -127,3 +127,10 @@
|
|||
:from [:customers]
|
||||
:where [:in :id :?ids]}
|
||||
{:ids values})))))))
|
||||
|
||||
(deftest test-quoting
|
||||
(testing ":quoting :ansi"
|
||||
(is (= ["SELECT \"b\".\"bla\" AS \"bla.bla\", \"b\".\"bla\" AS \"blu.blu\" FROM \"baz\" \"b\"" ]
|
||||
(-> (select [:b.bla :bla.bla] [:b.bla "blu.blu"])
|
||||
(from [:baz :b])
|
||||
(sql/format :quoting :ansi))))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue