[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/emacsql 75ac0448a5 364/427: Add support for DISTINCT in ag
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/emacsql 75ac0448a5 364/427: Add support for DISTINCT in aggregate functions (#41) |
Date: |
Tue, 13 Dec 2022 03:00:11 -0500 (EST) |
branch: elpa/emacsql
commit 75ac0448a5965c82c616c862cab180c241110fd2
Author: Christopher Wellons <wellons@nullprogram.com>
Commit: Christopher Wellons <wellons@nullprogram.com>
Add support for DISTINCT in aggregate functions (#41)
Example:
[:select (funcall count :distinct x) :from foo]
Ref: https://www.sqlite.org/lang_aggfunc.html
---
emacsql-compiler.el | 14 +++++++++-----
tests/emacsql-compiler-tests.el | 13 +++++++++++++
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/emacsql-compiler.el b/emacsql-compiler.el
index 2885152c44..e8f3365759 100644
--- a/emacsql-compiler.el
+++ b/emacsql-compiler.el
@@ -294,13 +294,17 @@ Only use within `emacsql-with-params'!"
;; Special case funcall
((funcall)
(format "%s(%s)" (recur 0)
- (if (and (= 2 (length args))
- (eq '* (nth 1 args)))
- "*"
- (mapconcat
+ (cond
+ ((and (= 2 (length args))
+ (eq '* (nth 1 args)))
+ "*")
+ ((and (= 3 (length args))
+ (eq :distinct (nth 1 args))
+ (format "DISTINCT %s" (recur 2))))
+ ((mapconcat
#'recur (cl-loop for i from 1 below (length args)
collect i)
- ", "))))
+ ", ")))))
;; Guess
(otherwise
(mapconcat
diff --git a/tests/emacsql-compiler-tests.el b/tests/emacsql-compiler-tests.el
index bed49c8889..cb92ee04d6 100644
--- a/tests/emacsql-compiler-tests.el
+++ b/tests/emacsql-compiler-tests.el
@@ -216,6 +216,19 @@
([:alter-table foo :add-column size :integer :not-null] '()
"ALTER TABLE foo ADD COLUMN size INTEGER NOT NULL;")))
+(ert-deftest emacsql-funcall ()
+ (emacsql-tests-with-queries
+ ([:select (funcall count x)] '()
+ "SELECT count(x);")
+ ([:select (funcall count *)] '()
+ "SELECT count(*);")
+ ([:select (funcall group-concat x y)] '()
+ "SELECT group_concat(x, y);")
+ ([:select (funcall foobar :distinct x y)] '()
+ "SELECT foobar(':distinct', x, y);")
+ ([:select (funcall count :distinct x)] '()
+ "SELECT count(DISTINCT x);")))
+
(provide 'emacsql-compiler-tests)
;;; emacsql-tests.el ends here
- [nongnu] elpa/emacsql e91bac3a20 350/427: Add cl-generic require to emacsql.el (#32)., (continued)
- [nongnu] elpa/emacsql e91bac3a20 350/427: Add cl-generic require to emacsql.el (#32)., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql b65c5b03d5 351/427: Fix up Cask file., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql e3bc9b105f 354/427: Finish removing Cask, including updating the README, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 83a278aa6b 356/427: Remove trailing &key in method definition, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 67ca8124bc 425/427: make: Suppress warning about obsolete autoload package, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql e318a6c8f6 426/427: Add new SQLite back-ends, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 9f0a19280c 296/427: Enhance emacsql-with-transaction to retry., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 616dde3752 361/427: An identifier named * means select all columns (#19), ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 5da614bc9b 359/427: Drop finalizer use and explicitely depend on Emacs 25, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 3b70e8f5dd 366/427: Add support for NUL characters in strings (fixes #42), ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 75ac0448a5 364/427: Add support for DISTINCT in aggregate functions (#41),
ELPA Syncer <=
- [nongnu] elpa/emacsql 8c46fb2c1e 286/427: Drop argument count check since it's wrong., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 641338533c 331/427: Just build SQLite on first connection., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 56a2882936 333/427: Update README for Melpa changes., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 1b37570bf5 352/427: Fix up the Makefile., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 2e9e2d6ba1 390/427: Fix SQL truncated when print-level or print-length are changed, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 50b139443b 414/427: make: Fix compiling and cleaning tests, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 4fe4413994 420/427: Re-indent some data so that machine and human can agree, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 62d3915737 363/427: Update to SQLite 3.22.0 and remove download system (#40), ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql a164ecd9d3 374/427: Implement operator precedence handling, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 214b46f547 372/427: Update documentation for building SQLite backend (#46), ELPA Syncer, 2022/12/13