Allow multiple expressions in special :order-by

This commit is contained in:
Eugene Pakhomov 2023-02-26 12:22:12 +02:00
parent de0adf56ef
commit dae73c6195
2 changed files with 14 additions and 2 deletions

View file

@ -1513,9 +1513,9 @@
(let [[sql & params] (format-expr x {:nested true})]
(into [(str "NOT " sql)] params)))
:order-by
(fn [k [e q]]
(fn [k [e & qs]]
(let [[sql-e & params-e] (format-expr e)
[sql-q & params-q] (format-dsl {k [q]})]
[sql-q & params-q] (format-dsl {k qs})]
(-> [(str sql-e " " sql-q)]
(into params-e)
(into params-q))))

View file

@ -388,6 +388,18 @@
(modifiers :distinct-on :a :b)
(sql/format :quoting :ansi))))))
(deftest select-agg-order-by-test
(testing "single expression in order by"
(is (= ["SELECT ARRAY_AGG(a ORDER BY x) FROM products"])
(sql/format
{:select [[[:array_agg [:order-by :a :x]]]]
:from :products})))
(testing "multiple expressions in order by"
(is (= ["SELECT ARRAY_AGG(a ORDER BY x ASC, y DESC, z ASC) FROM products"]
(sql/format
{:select [[[:array_agg [:order-by :a [:x :asc] [:y :desc] :z]]]]
:from :products})))))
(deftest create-extension-test
;; previously, honeysql required :allow-dashed-names? true
(testing "create extension"