Merge pull request #468 from p-himik/465-many-exprs-in-agg-order-by

Allow multiple expressions in special :order-by
This commit is contained in:
Sean Corfield 2023-02-27 13:53:44 -08:00 committed by GitHub
commit b1b7868c8b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View file

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

View file

@ -388,6 +388,18 @@
(modifiers :distinct-on :a :b) (modifiers :distinct-on :a :b)
(sql/format :quoting :ansi)))))) (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 (deftest create-extension-test
;; previously, honeysql required :allow-dashed-names? true ;; previously, honeysql required :allow-dashed-names? true
(testing "create extension" (testing "create extension"