emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 68aa438857 1/4: ob-sqlite: Use a transient in-memor


From: ELPA Syncer
Subject: [elpa] externals/org 68aa438857 1/4: ob-sqlite: Use a transient in-memory database by default
Date: Sat, 12 Aug 2023 06:58:24 -0400 (EDT)

branch: externals/org
commit 68aa438857dddd8e7a7e53a5dbabab8b3d33fda1
Author: Rudolf Adamkovič <salutis@me.com>
Commit: Ihor Radchenko <yantar92@posteo.net>

    ob-sqlite: Use a transient in-memory database by default
    
    * etc/ORG-NEWS (New features): Add a news entry.
    * lisp/ob-sqlite.el (org-babel-execute:sqlite): Default ':db' to
    ":memory:" instead of throwing an error.
    * testing/lisp/test-ob-sqlite.el (ob-sqlite/in-file): Test the old behavior.
    * testing/lisp/test-ob-sqlite.el (ob-sqlite/in-memory): Test the new 
behavior.
---
 etc/ORG-NEWS                   |  8 ++++++++
 lisp/ob-sqlite.el              |  3 +--
 testing/lisp/test-ob-sqlite.el | 36 ++++++++++++++++++++++++++++++++++--
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index f8c50d541f..1dc0a4519c 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -492,6 +492,14 @@ Final hooks are added to the following commands:
 
 The prefix arguments are passed to ~org-insert-todo-heading~.
 
+*** Make ~ob-sqlite~ use in-memory databases by default
+
+~sqlite~ source blocks with no ~:db~ header argument now make SQLite
+use a temporary in-memory database instead of throwing an error,
+matching the behavior of the official ~sqlite3~ shell.  As a result,
+~sqlite~ source blocks are now usable out of the box, that is with no
+header arguments.
+
 *** Add support for ~logind~ idle time in ~org-user-idle-seconds~
 
 When Emacs is built with =dbus= support and
diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el
index 526b73ebd9..7510e5158c 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -74,7 +74,6 @@ This function is called by `org-babel-execute-src-block'."
                           (lambda (arg) (car (assq arg params)))
                           (list :header :echo :bail :column
                                 :csv :html :line :list)))))
-    (unless db (error "ob-sqlite: can't evaluate without a database"))
     (with-temp-buffer
       (insert
        (org-babel-eval
@@ -97,7 +96,7 @@ This function is called by `org-babel-execute-src-block'."
                              (member :html others) separator)
                          ""
                        "-csv"))
-         (cons "db " db)))
+          (cons "db" (or db ""))))
        ;; body of the code block
        (org-babel-expand-body:sqlite body params)))
       (org-babel-result-cond result-params
diff --git a/testing/lisp/test-ob-sqlite.el b/testing/lisp/test-ob-sqlite.el
index 72d75c9b71..621a11b0b8 100644
--- a/testing/lisp/test-ob-sqlite.el
+++ b/testing/lisp/test-ob-sqlite.el
@@ -39,8 +39,40 @@
   .import $tb TestTable
   select * from TestTable;
 #+end_src"
-           (org-babel-next-src-block)
-           (org-babel-execute-src-block)))))
+          (org-babel-next-src-block)
+          (org-babel-execute-src-block)))))
+
+(ert-deftest ob-sqlite/in-memory ()
+  "Test in-memory temporariness."
+  (should
+   (equal 0
+          (progn
+            (org-test-with-temp-text
+            "#+BEGIN_SRC sqlite
+PRAGMA user_version = 1;
+#+END_SRC"
+            (org-babel-execute-src-block))
+            (org-test-with-temp-text
+            "#+BEGIN_SRC sqlite
+PRAGMA user_version;
+#+END_SRC"
+            (org-babel-execute-src-block))))))
+
+(ert-deftest ob-sqlite/in-file ()
+  "Test in-file permanency."
+  (should
+   (equal 1
+          (let ((file (org-babel-temp-file "test" ".sqlite")))
+            (org-test-with-temp-text
+            (format "#+BEGIN_SRC sqlite :db %s
+PRAGMA user_version = 1;
+#+END_SRC" file)
+            (org-babel-execute-src-block))
+            (org-test-with-temp-text
+            (format "#+BEGIN_SRC sqlite :db %s
+PRAGMA user_version;
+#+END_SRC" file)
+            (org-babel-execute-src-block))))))
 
 (provide 'test-ob-sqlite)
 ;;; test-ob-sqlite.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]