diff --git a/CHANGES.md b/CHANGES.md index 4d86941..cd54f65 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,7 @@ +## Changes coming in 0.9.7 + +* Fix #248 by treating alias as "not a subquery" when generating SQL for it. (@seancorfield) + ## 0.9.6 * Filter `nil` conditions out of `where`/`merge-where`. Fix #246. (@seancorfield) diff --git a/src/honeysql/format.cljc b/src/honeysql/format.cljc index 0568ae2..338ab6c 100644 --- a/src/honeysql/format.cljc +++ b/src/honeysql/format.cljc @@ -368,7 +368,8 @@ (if (= :select *clause*) " AS " " ") (if (or (string? alias) (keyword? alias) (symbol? alias)) (quote-identifier alias :split false) - (to-sql alias))))))) + (binding [*subquery?* false] + (to-sql alias)))))))) (extend-protocol types/Inlinable #?(:clj clojure.lang.Keyword diff --git a/test/honeysql/format_test.cljc b/test/honeysql/format_test.cljc index f6d1f76..480fd8b 100644 --- a/test/honeysql/format_test.cljc +++ b/test/honeysql/format_test.cljc @@ -46,6 +46,10 @@ :quoting :mysql)) "aliases containing \".\" are quoted as necessary but not split")) +(deftest values-alias + (is (= ["SELECT vals.a FROM (VALUES (?, ?, ?)) vals (a, b, c)" 1 2 3] + (format {:select [:vals.a] + :from [[{:values [[1 2 3]]} [:vals {:columns [:a :b :c]}]]]})))) (deftest test-cte (is (= (format-clause (first {:with [[:query {:select [:foo] :from [:bar]}]]}) nil)