Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d09db97

Browse files
authored
Add NULLS support to order-by expressions (#115)
1 parent c2c9a40 commit d09db97

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/sqlingvo/compiler.cljc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,11 @@
308308
(defmethod compile-fn :desc [db node]
309309
(compile-direction db node))
310310

311+
(defmethod compile-fn :nulls [db node]
312+
(let [[_ args direction] (:children node)]
313+
(concat-sql (compile-sql db args) " NULLS "
314+
(-> direction :val name str/upper-case))))
315+
311316
(defmethod compile-fn :raw [db node]
312317
(-> (:children node)
313318
(second)

test/sqlingvo/select_test.cljc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,7 @@
864864
'(over (rank)
865865
(partition-by
866866
:depname
867-
(sql/order-by (desc :salary) :empno)))
867+
(order-by (desc :salary) :empno)))
868868
:pos)]
869869
(sql/from :empsalary))
870870
:ss))
@@ -970,6 +970,11 @@
970970
(sql/from :table))
971971
["SELECT array_agg(\"a\" ORDER BY \"b\" DESC) FROM \"table\""]))
972972

973+
(deftest test-select-array-agg-order-by-desc-nulls-last
974+
(sql= (sql/select db ['(array_agg :a (order-by (nulls (desc :b) :last)))]
975+
(sql/from :table))
976+
["SELECT array_agg(\"a\" ORDER BY \"b\" DESC NULLS LAST) FROM \"table\""]))
977+
973978
(deftest test-select-string-agg-order-by
974979
(sql= (sql/select db ['(string_agg :a "," (order-by :a))]
975980
(sql/from :table))

0 commit comments

Comments
 (0)