From 0a5eaedd9b58395aa80b1f708eebd964071cee35 Mon Sep 17 00:00:00 2001 From: Starks Date: Wed, 22 Jul 2015 17:06:56 +0200 Subject: [PATCH] quoting of AS clauses should not be splitted on "." quoting of AS clauses should not be splitted on "." --- src/honeysql/format.clj | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/honeysql/format.clj b/src/honeysql/format.clj index 1fae10b..4239423 100644 --- a/src/honeysql/format.clj +++ b/src/honeysql/format.clj @@ -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) :split false) - (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]