all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [PATCH] ob-sqlite: Use a transient in-memory database by default
@ 2023-05-03 12:59 Rudolf Adamkovič
  2023-05-03 15:12 ` Max Nikulin
  0 siblings, 1 reply; 22+ messages in thread
From: Rudolf Adamkovič @ 2023-05-03 12:59 UTC (permalink / raw)
  To: emacs-orgmode; +Cc: Rudolf Adamkovič

* etc/ORG-NEWS (New features): Add a news entry.
* lisp/ob-sqlite.el (org-babel-execute:sqlite): Default ':db' to ":memory:".
* 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                   |  6 ++++++
 lisp/ob-sqlite.el              |  3 +--
 testing/lisp/test-ob-sqlite.el | 36 ++++++++++++++++++++++++++++++++--
 3 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 03894f128..42bfc2be0 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -181,6 +181,12 @@ official [[https://clojure.org/guides/deps_and_cli][Clojure CLI tools]].
 The command can be customized with ~ob-clojure-cli-command~.
 
 ** New features
+*** Make =ob-sqlite= use in-database by default
+
+SQLite source blocks with no =:db= argument now execute against a
+transient in-memory database.  This makes SQLite source blocks more
+practical, and it matches the default behavior of the =sqlite3= shell.
+
 *** 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 526b73ebd..60da488f7 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -66,7 +66,7 @@
   "Execute a block of Sqlite code with Babel.
 This function is called by `org-babel-execute-src-block'."
   (let ((result-params (split-string (or (cdr (assq :results params)) "")))
-	(db (cdr (assq :db params)))
+	(db (or (cdr (assq :db params)) ":memory:"))
 	(separator (cdr (assq :separator params)))
 	(nullvalue (cdr (assq :nullvalue params)))
 	(headers-p (equal "yes" (cdr (assq :colnames params))))
@@ -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
diff --git a/testing/lisp/test-ob-sqlite.el b/testing/lisp/test-ob-sqlite.el
index 72d75c9b7..b76a82d98 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
-- 
2.40.1



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-05-03 12:59 [PATCH] ob-sqlite: Use a transient in-memory database by default Rudolf Adamkovič
@ 2023-05-03 15:12 ` Max Nikulin
  2023-05-03 16:32   ` Max Nikulin
  0 siblings, 1 reply; 22+ messages in thread
From: Max Nikulin @ 2023-05-03 15:12 UTC (permalink / raw)
  To: emacs-orgmode

On 03/05/2023 19:59, Rudolf Adamkovič wrote:
> +++ b/etc/ORG-NEWS

Thank you for the patch.

>   ** New features
> +*** Make =ob-sqlite= use in-database by default
------------------------------^
Looks like a typo

> +++ b/lisp/ob-sqlite.el
...> -	(db (cdr (assq :db params)))
> +	(db (or (cdr (assq :db params)) ":memory:"))

I am unsure what is better, to add a fallback here or to add :db 
":memory" to the org-babel-default-header-args:sqlite variable.

> +  "Test in-file permanency."

Maybe persistence?



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-05-03 15:12 ` Max Nikulin
@ 2023-05-03 16:32   ` Max Nikulin
  2023-05-04 10:27     ` Ihor Radchenko
  2023-05-06 20:40     ` Rudolf Adamkovič
  0 siblings, 2 replies; 22+ messages in thread
From: Max Nikulin @ 2023-05-03 16:32 UTC (permalink / raw)
  To: emacs-orgmode

On 03/05/2023 22:12, Max Nikulin wrote:
> On 03/05/2023 19:59, Rudolf Adamkovič wrote:
>> +++ b/lisp/ob-sqlite.el
...
>> -    (db (cdr (assq :db params)))
>> +    (db (or (cdr (assq :db params)) ":memory:"))
> 
> I am unsure what is better, to add a fallback here or to add :db 
> ":memory" to the org-babel-default-header-args:sqlite variable.

Perhaps it is better to keep current behavior with error by default and 
just to recommend more prominently using file local header arguments

#+PROPERTY: header-args:sqlite :db ":memory"

Changing defaults is a compromise. Perhaps you mostly use src blocks as 
playground and in-memory database is really convenient for you. However 
missed :db file in a block creating tables may cause a *delayed* error 
that will happen on attempt to insert some data to these tables later. 
It is harder to figure out that :db parameter was forgotten several 
screens above. The cost of debugging might be higher than adding a 
property line to files where a user is experimenting with sqlite features.



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-05-03 16:32   ` Max Nikulin
@ 2023-05-04 10:27     ` Ihor Radchenko
  2023-05-06 20:40     ` Rudolf Adamkovič
  1 sibling, 0 replies; 22+ messages in thread
From: Ihor Radchenko @ 2023-05-04 10:27 UTC (permalink / raw)
  To: Max Nikulin; +Cc: emacs-orgmode

Max Nikulin <manikulin@gmail.com> writes:

>> I am unsure what is better, to add a fallback here or to add :db 
>> ":memory" to the org-babel-default-header-args:sqlite variable.
>
> Perhaps it is better to keep current behavior with error by default and 
> just to recommend more prominently using file local header arguments
>
> #+PROPERTY: header-args:sqlite :db ":memory"
>
> Changing defaults is a compromise. Perhaps you mostly use src blocks as 
> playground and in-memory database is really convenient for you. However 
> missed :db file in a block creating tables may cause a *delayed* error 
> that will happen on attempt to insert some data to these tables later. 
> It is harder to figure out that :db parameter was forgotten several 
> screens above. The cost of debugging might be higher than adding a 
> property line to files where a user is experimenting with sqlite features.

We can simply display a warning when :db is not specified. Something
like

"ob-sql: :db header argument not specified.  Using in-memory database"

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-05-03 16:32   ` Max Nikulin
  2023-05-04 10:27     ` Ihor Radchenko
@ 2023-05-06 20:40     ` Rudolf Adamkovič
  2023-05-07 14:45       ` Max Nikulin
  2023-06-13  9:59       ` Ihor Radchenko
  1 sibling, 2 replies; 22+ messages in thread
From: Rudolf Adamkovič @ 2023-05-06 20:40 UTC (permalink / raw)
  To: Max Nikulin, emacs-orgmode

Max Nikulin <manikulin@gmail.com> writes:

> Perhaps it is better to keep current behavior with error by default
> and just to recommend [...] a user is experimenting with sqlite
> features.

This is exactly the case where the user SHOULD use

#+PROPERTY: header-args:sqlite :db <FILE>

to avoid mistyping <FILE> across their SQLite blocks.

[Hence, defaulting to ":memory:" would NOT hurt.]

Org is primarily about INTERACTIVE use, not batch processing, so I think
it would make sense to match the usefulness of the official INTERACTIVE
SQLite shell, which defaults to in-memory for good reasons.

Rudy
-- 
"Thinking is a momentary dismissal of irrelevancies."
-- Richard Buckminster Fuller, 1969

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-05-06 20:40     ` Rudolf Adamkovič
@ 2023-05-07 14:45       ` Max Nikulin
  2023-06-13  9:59       ` Ihor Radchenko
  1 sibling, 0 replies; 22+ messages in thread
From: Max Nikulin @ 2023-05-07 14:45 UTC (permalink / raw)
  To: emacs-orgmode

On 07/05/2023 03:40, Rudolf Adamkovič wrote:
> SQLite shell, which defaults to in-memory for good reasons.

Explicit :memory argument still suppresses the following warning:

> Connected to a transient *in-memory* *database*.
> Use ".open FILENAME" to reopen on a persistent database.

I am not an active sqlite user and I have never tried it from Org. 
However mostly I used it with files. The case for in-memory database was 
unit tests for python functions.

Babel allows to compute values of header arguments and I am not in favor 
of silently treat nil (due to e.g. a error in the called function) as 
disabled persistence. Ihor's idea with a warning is better from my point 
of view.




^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-05-06 20:40     ` Rudolf Adamkovič
  2023-05-07 14:45       ` Max Nikulin
@ 2023-06-13  9:59       ` Ihor Radchenko
  2023-06-19 12:42         ` Rudolf Adamkovič
  1 sibling, 1 reply; 22+ messages in thread
From: Ihor Radchenko @ 2023-06-13  9:59 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: Max Nikulin, emacs-orgmode

Rudolf Adamkovič <salutis@me.com> writes:

> Max Nikulin <manikulin@gmail.com> writes:
>
>> Perhaps it is better to keep current behavior with error by default
>> and just to recommend [...] a user is experimenting with sqlite
>> features.
>
> This is exactly the case where the user SHOULD use
>
> #+PROPERTY: header-args:sqlite :db <FILE>
>
> to avoid mistyping <FILE> across their SQLite blocks.
>
> [Hence, defaulting to ":memory:" would NOT hurt.]

I do not mind falling back to ":memory:" when :db is not specified, but
we should display a warning to notify the users. Maybe not as a warning
every time src block is executed, but at least via org-lint.

Rudolf, WDYT?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-06-13  9:59       ` Ihor Radchenko
@ 2023-06-19 12:42         ` Rudolf Adamkovič
  2023-06-20 10:58           ` Ihor Radchenko
  0 siblings, 1 reply; 22+ messages in thread
From: Rudolf Adamkovič @ 2023-06-19 12:42 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Max Nikulin, emacs-orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

> I do not mind falling back to ":memory:" when :db is not specified, but
> we should display a warning to notify the users. Maybe not as a warning
> every time src block is executed, but at least via org-lint.
>
> Rudolf, WDYT?

I am not a fan of making the use of in-memory databases into a "smell",
as per Org Lint, because it would communicate to the user that "this is
a potential issue that you should probably fix".  I think that is not
true, given that SQLite defaults to in-memory for interactive use. It is
common and useful.  Showing a warning has the same problem.

Now, showing a message, such as "Using in-memory database", could do,
but it would feel like spam.  The SQLite shell prints "Connected to a
transient in-memory database" exactly once, not on every (re-)query.
Perhaps there is a precedent somewhere in Org Babel, and we could do
something similar?

Rudy
-- 
"Music is the mathematics of the sense, mathematics is the music of the reason."
-- James Joseph Sylvester, 1814-1897

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-06-19 12:42         ` Rudolf Adamkovič
@ 2023-06-20 10:58           ` Ihor Radchenko
  2023-08-03 12:35             ` Rudolf Adamkovič
  0 siblings, 1 reply; 22+ messages in thread
From: Ihor Radchenko @ 2023-06-20 10:58 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: Max Nikulin, emacs-orgmode

Rudolf Adamkovič <salutis@me.com> writes:

> I am not a fan of making the use of in-memory databases into a "smell",
> as per Org Lint, because it would communicate to the user that "this is
> a potential issue that you should probably fix".  I think that is not
> true, given that SQLite defaults to in-memory for interactive use. It is
> common and useful.  Showing a warning has the same problem.

As Max described, it might be a potential issue.
The safest way is when the user sets :db ":memory:"
org-babel-default-header-args:sqlite explicitly. We should not throw a
warning if :db ":memory:" is set by the user.

> Now, showing a message, such as "Using in-memory database", could do,
> but it would feel like spam.  The SQLite shell prints "Connected to a
> transient in-memory database" exactly once, not on every (re-)query.
> Perhaps there is a precedent somewhere in Org Babel, and we could do
> something similar?

Effectively, ob-sqlite starts a new SQLite shell for every src blocks
(sessions are not supported).

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-06-20 10:58           ` Ihor Radchenko
@ 2023-08-03 12:35             ` Rudolf Adamkovič
  2023-08-04  8:08               ` Ihor Radchenko
  0 siblings, 1 reply; 22+ messages in thread
From: Rudolf Adamkovič @ 2023-08-03 12:35 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Max Nikulin, emacs-orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

> As Max described, it might be a potential issue.

How about (1) we merge the patch, and then
(2) we add the lint warning if/when someone
has the [hypothesized] problem?

Rudy
-- 
"One can begin to reason only when a clear picture has been formed in
the imagination."
-- Walter Warwick Sawyer, Mathematician's Delight, 1943

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-03 12:35             ` Rudolf Adamkovič
@ 2023-08-04  8:08               ` Ihor Radchenko
  2023-08-04 22:57                 ` Rudolf Adamkovič
  0 siblings, 1 reply; 22+ messages in thread
From: Ihor Radchenko @ 2023-08-04  8:08 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: Max Nikulin, emacs-orgmode

Rudolf Adamkovič <salutis@me.com> writes:

> Ihor Radchenko <yantar92@posteo.net> writes:
>
>> As Max described, it might be a potential issue.
>
> How about (1) we merge the patch, and then
> (2) we add the lint warning if/when someone
> has the [hypothesized] problem?

Maybe. After re-thinking, your change should not break any existing Org
files, except those that were already broken because of the missing :db.

However, I think that it will provide more freedom to users if you alter
org-babel-default-header-args:sqlite instead of hard-coding the default.
May you update the patch accordingly?

Also, can you update the docs at
https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-sqlite.html
? The current docs declare :db header arg as mandatory.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-04  8:08               ` Ihor Radchenko
@ 2023-08-04 22:57                 ` Rudolf Adamkovič
  2023-08-05  3:00                   ` Max Nikulin
                                     ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Rudolf Adamkovič @ 2023-08-04 22:57 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Max Nikulin, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1051 bytes --]

Ihor Radchenko <yantar92@posteo.net> writes:

> However, I think that it will provide more freedom to users if you alter
> org-babel-default-header-args:sqlite instead of hard-coding the default.
> May you update the patch accordingly?

Please see the attached patch.

> Also, can you update the docs at
> https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-sqlite.html
> ? The current docs declare :db header arg as mandatory.

Ditto, please see the second attached patch.

P.S. #1: This is my first contribution to the
WORG, and I am not sure if the patch is OK.
I do ever not plan to contribute to the WORG,
as I am not a fan of the idea and think that
all built-in backends (and more!) should be
documented in the Org manual.

P.S. #2: The Table of Contents (TOC) on the
WORG is "jumpy" on Safari.  In fact, it has
always been problematic for me, in one way or
another.  Why cannot TOC be included at the
beginning of the document, like in standard
Org exports?  Org and Emacs manuals, with no
"smart" side bars, get it right, IMO.

Rudy


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-ob-sqlite-Use-a-transient-in-memory-database-by-defa.patch --]
[-- Type: text/x-patch, Size: 3244 bytes --]

From aac17ad21bf5fe85a57efd4183b80fdc5221d3aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
Date: Wed, 3 May 2023 14:59:03 +0200
Subject: [PATCH] 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-default-header-args:sqlite): Default
':db' to ":memory:".
* 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                   |  7 +++++++
 lisp/ob-sqlite.el              |  2 +-
 testing/lisp/test-ob-sqlite.el | 36 ++++++++++++++++++++++++++++++++--
 3 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 4f16eda24..40a4e79bd 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -489,6 +489,13 @@ Final hooks are added to the following commands:
 
 The prefix arguments are passed to ~org-insert-todo-heading~.
 
+*** Make ~ob-sqlite~ use in-database by default
+
+SQLite source blocks with no ~:db~ argument now execute against a
+transient in-memory database by default.  This makes Org match the
+default behavior of the ~sqlite3~ shell and makes SQLite blocks more
+practical out of the box.
+
 *** 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 526b73ebd..75ef50913 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -39,7 +39,7 @@
 (declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function org-table-to-lisp "org-table" (&optional txt))
 
-(defvar org-babel-default-header-args:sqlite '())
+(defvar org-babel-default-header-args:sqlite '((:db . ":memory:")))
 
 (defvar org-babel-header-args:sqlite
   '((db        . :any)
diff --git a/testing/lisp/test-ob-sqlite.el b/testing/lisp/test-ob-sqlite.el
index 72d75c9b7..621a11b0b 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
-- 
2.37.1 (Apple Git-137.1)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-Document-the-new-default-value-of-the-Babel-SQLite-d.patch --]
[-- Type: text/x-patch, Size: 1226 bytes --]

From 2d756f51299131727a978da3bbdfbaaa3c67d36d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
Date: Sat, 5 Aug 2023 00:36:07 +0200
Subject: [PATCH] Document the new default value of the Babel/SQLite ':db'
 argument

---
 org-contrib/babel/languages/ob-doc-sqlite.org | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/org-contrib/babel/languages/ob-doc-sqlite.org b/org-contrib/babel/languages/ob-doc-sqlite.org
index d7febb0c..981eca34 100644
--- a/org-contrib/babel/languages/ob-doc-sqlite.org
+++ b/org-contrib/babel/languages/ob-doc-sqlite.org
@@ -91,7 +91,8 @@ There are no language-specific default header arguments for SQLite.
 There are 11 SQLite-specific header arguments.
 
  - db :: a string with the name of the file that holds the SQLite
-         database. Babel requires this header argument. 
+   database. Defaults to =":memory:"=, a special "file name" that
+   makes SQLite use a temporary in-memory database.
  - header :: if present, turn on headers in the output format. Headers
              are also output with the header argument =:colnames yes=.
  - echo :: if present, set the SQLite dot command =.echo= to =ON=.
-- 
2.37.1 (Apple Git-137.1)


[-- Attachment #4: Type: text/plain, Size: 304 bytes --]

-- 
"We shall not cease from exploration
 And the end of all our exploring
 Will be to arrive where we started
 And know the place for the first time"
--- T. S. Eliot, Little Gidding, Four Quarters, 1943

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-04 22:57                 ` Rudolf Adamkovič
@ 2023-08-05  3:00                   ` Max Nikulin
  2023-08-06  0:22                     ` Rudolf Adamkovič
  2023-08-05  3:06                   ` [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default) Max Nikulin
  2023-08-05  9:14                   ` [PATCH] ob-sqlite: Use a transient in-memory database by default Ihor Radchenko
  2 siblings, 1 reply; 22+ messages in thread
From: Max Nikulin @ 2023-08-05  3:00 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: emacs-orgmode

On 05/08/2023 05:57, Rudolf Adamkovič wrote:
> +*** Make ~ob-sqlite~ use in-database by default

"use in-memory database"

> +
> +SQLite source blocks with no ~:db~ argument now execute against a
> +transient in-memory database by default.

I am unsure, but perhaps it would be more clear to say that the default 
value of the header argument has changed and it is possible to omit 
setting :db per-block or as a header argument. It should give a hint how 
to revert this change in local configuration if somebody wish it.

>  This makes Org match the
> +default behavior of the ~sqlite3~ shell and makes SQLite blocks more
> +practical out of the box.
> +

Feel free to just ignore the following. Perhaps to get *really* default 
behavior ob-sqlite should not check :db value and should not pass it to 
the command in the case of nil. As a result the command spits a warning.

Earlier I was thinking on buffer-local variables whether the warning has 
been shown to the user (to do it once), but I think it would lead to 
unreasonable complication of code with a little value for users.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default)
  2023-08-04 22:57                 ` Rudolf Adamkovič
  2023-08-05  3:00                   ` Max Nikulin
@ 2023-08-05  3:06                   ` Max Nikulin
  2023-08-05  3:20                     ` Samuel Wales
  2023-08-05  9:14                   ` [PATCH] ob-sqlite: Use a transient in-memory database by default Ihor Radchenko
  2 siblings, 1 reply; 22+ messages in thread
From: Max Nikulin @ 2023-08-05  3:06 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: emacs-orgmode

On 05/08/2023 05:57, Rudolf Adamkovič wrote:
> P.S. #2: The Table of Contents (TOC) on the
> WORG is "jumpy" on Safari.  In fact, it has
> always been problematic for me, in one way or
> another.  Why cannot TOC be included at the
> beginning of the document, like in standard
> Org exports?  Org and Emacs manuals, with no
> "smart" side bars, get it right, IMO.

I have found your message in a dedicated thread

Rudolf Adamkovič to emacs-orgmode… Re: [accessibility] worg obscures 
text. Sun, 12 Jun 2022 21:35:14 +0200. 
https://list.org.mode.org/m2v8t5y8st.fsf@me.com

Somebody should propose a CSS for responsive design for Worg. Perhaps 
with ability to open/close table of contents on mobile devices.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default)
  2023-08-05  3:06                   ` [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default) Max Nikulin
@ 2023-08-05  3:20                     ` Samuel Wales
  2023-08-05  3:22                       ` Samuel Wales
  0 siblings, 1 reply; 22+ messages in thread
From: Samuel Wales @ 2023-08-05  3:20 UTC (permalink / raw)
  To: Rudolf Adamkovič, emacs-orgmode

fwiw i agree with the non-fancy toc concept for accessibility.

On 8/4/23, Max Nikulin <manikulin@gmail.com> wrote:
> On 05/08/2023 05:57, Rudolf Adamkovič wrote:
>> P.S. #2: The Table of Contents (TOC) on the
>> WORG is "jumpy" on Safari.  In fact, it has
>> always been problematic for me, in one way or
>> another.  Why cannot TOC be included at the
>> beginning of the document, like in standard
>> Org exports?  Org and Emacs manuals, with no
>> "smart" side bars, get it right, IMO.
>
> I have found your message in a dedicated thread
>
> Rudolf Adamkovič to emacs-orgmode… Re: [accessibility] worg obscures
> text. Sun, 12 Jun 2022 21:35:14 +0200.
> https://list.org.mode.org/m2v8t5y8st.fsf@me.com
>
> Somebody should propose a CSS for responsive design for Worg. Perhaps
> with ability to open/close table of contents on mobile devices.
>
>


-- 
The Kafka Pandemic

A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default)
  2023-08-05  3:20                     ` Samuel Wales
@ 2023-08-05  3:22                       ` Samuel Wales
  2023-08-10 16:13                         ` Max Nikulin
  0 siblings, 1 reply; 22+ messages in thread
From: Samuel Wales @ 2023-08-05  3:22 UTC (permalink / raw)
  To: Rudolf Adamkovič, emacs-orgmode

[i.e. agree that the manuals and standard toc at top imo do a good job
for accessibility.]

On 8/4/23, Samuel Wales <samologist@gmail.com> wrote:
> fwiw i agree with the non-fancy toc concept for accessibility.
>
> On 8/4/23, Max Nikulin <manikulin@gmail.com> wrote:
>> On 05/08/2023 05:57, Rudolf Adamkovič wrote:
>>> P.S. #2: The Table of Contents (TOC) on the
>>> WORG is "jumpy" on Safari.  In fact, it has
>>> always been problematic for me, in one way or
>>> another.  Why cannot TOC be included at the
>>> beginning of the document, like in standard
>>> Org exports?  Org and Emacs manuals, with no
>>> "smart" side bars, get it right, IMO.
>>
>> I have found your message in a dedicated thread
>>
>> Rudolf Adamkovič to emacs-orgmode… Re: [accessibility] worg obscures
>> text. Sun, 12 Jun 2022 21:35:14 +0200.
>> https://list.org.mode.org/m2v8t5y8st.fsf@me.com
>>
>> Somebody should propose a CSS for responsive design for Worg. Perhaps
>> with ability to open/close table of contents on mobile devices.
>>
>>
>
>
> --
> The Kafka Pandemic
>
> A blog about science, health, human rights, and misopathy:
> https://thekafkapandemic.blogspot.com
>


-- 
The Kafka Pandemic

A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-04 22:57                 ` Rudolf Adamkovič
  2023-08-05  3:00                   ` Max Nikulin
  2023-08-05  3:06                   ` [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default) Max Nikulin
@ 2023-08-05  9:14                   ` Ihor Radchenko
  2 siblings, 0 replies; 22+ messages in thread
From: Ihor Radchenko @ 2023-08-05  9:14 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: Max Nikulin, emacs-orgmode

Rudolf Adamkovič <salutis@me.com> writes:

> P.S. #1: This is my first contribution to the
> WORG, and I am not sure if the patch is OK.
> I do ever not plan to contribute to the WORG,
> as I am not a fan of the idea and think that
> all built-in backends (and more!) should be
> documented in the Org manual.

See https://orgmode.org/list/87lefgi58c.fsf@localhost

> P.S. #2: The Table of Contents (TOC) on the
> WORG is "jumpy" on Safari.  In fact, it has
> always been problematic for me, in one way or
> another.  Why cannot TOC be included at the
> beginning of the document, like in standard
> Org exports?  Org and Emacs manuals, with no
> "smart" side bars, get it right, IMO.

See https://orgmode.org/list/87cz7ubnxb.fsf_-_@gnu.org

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-05  3:00                   ` Max Nikulin
@ 2023-08-06  0:22                     ` Rudolf Adamkovič
  2023-08-12  8:22                       ` Ihor Radchenko
  2023-08-12  9:38                       ` Max Nikulin
  0 siblings, 2 replies; 22+ messages in thread
From: Rudolf Adamkovič @ 2023-08-06  0:22 UTC (permalink / raw)
  To: Max Nikulin; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 981 bytes --]

Max Nikulin <manikulin@gmail.com> writes:

> On 05/08/2023 05:57, Rudolf Adamkovič wrote:
>> +*** Make ~ob-sqlite~ use in-database by default
>
> "use in-memory database"

Oops!  Fixed.

>> +SQLite source blocks with no ~:db~ argument now execute against a
>> +transient in-memory database by default.
>
> I am unsure, but perhaps it would be more clear to say that the default 
> value of the header argument has changed and it is possible to omit 
> setting :db per-block or as a header argument. It should give a hint how 
> to revert this change in local configuration if somebody wish it.

Please see the attached Patch 0001A.

> Feel free to just ignore the following. Perhaps to get *really* default 
> behavior ob-sqlite should not check :db value and should not pass it to 
> the command in the case of nil.

This is a good idea!  Please see the attached
alternative Patch 0001B.

> As a result the command spits a warning.

It does?

Rudy

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001A-ob-sqlite-Use-a-transient-in-memory-database-by-defa.patch --]
[-- Type: text/x-patch, Size: 3318 bytes --]

From 144bd75183a9185786248d9404ddeee4b93ed30f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
Date: Wed, 3 May 2023 14:59:03 +0200
Subject: [PATCH] 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-default-header-args:sqlite): Default
':db' to ":memory:".
* 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              |  2 +-
 testing/lisp/test-ob-sqlite.el | 36 ++++++++++++++++++++++++++++++++--
 3 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 4f16eda24..569ec651b 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -489,6 +489,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
+
+The ~:db~ header argument of ~sqlite~ source blocks now defaults to
+~":memory:"~ which stands for a temporary in-memory database.  As a
+result, ~sqlite~ source blocks are usable out of the box, with no
+header arguments, matching the behavior and practicality of the
+official ~sqlite3~ shell.
+
 *** 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 526b73ebd..75ef50913 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -39,7 +39,7 @@
 (declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function org-table-to-lisp "org-table" (&optional txt))
 
-(defvar org-babel-default-header-args:sqlite '())
+(defvar org-babel-default-header-args:sqlite '((:db . ":memory:")))
 
 (defvar org-babel-header-args:sqlite
   '((db        . :any)
diff --git a/testing/lisp/test-ob-sqlite.el b/testing/lisp/test-ob-sqlite.el
index 72d75c9b7..621a11b0b 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
-- 
2.37.1 (Apple Git-137.1)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001B-ob-sqlite-Use-a-transient-in-memory-database-by-defa.patch --]
[-- Type: text/x-patch, Size: 3655 bytes --]

From 34f28236366affb510bfdb70a3577e765d9e0abb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
Date: Wed, 3 May 2023 14:59:03 +0200
Subject: [PATCH] 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 4f16eda24..3426a5bc0 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -489,6 +489,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 526b73ebd..7510e5158 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 72d75c9b7..621a11b0b 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
-- 
2.37.1 (Apple Git-137.1)


[-- Attachment #4: Type: text/plain, Size: 188 bytes --]

-- 
"'Obvious' is all too often a synonym for 'wrong'."
-- Jeff Erickson, Algorithms, 2019

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default)
  2023-08-05  3:22                       ` Samuel Wales
@ 2023-08-10 16:13                         ` Max Nikulin
  2023-08-10 23:35                           ` Samuel Wales
  0 siblings, 1 reply; 22+ messages in thread
From: Max Nikulin @ 2023-08-10 16:13 UTC (permalink / raw)
  To: emacs-orgmode

On 05/08/2023 10:22, Samuel Wales wrote:
> [i.e. agree that the manuals and standard toc at top imo do a good job
> for accessibility.]

Notice that Org manual is exported through ox-texinfo, not by ox-html 
directly. So somebody should confirm that default ox-html table of 
contents is suitable for various worg pages: short and long ones.

Personally I do not like CSS of the manuals (Org and Emacs) because it 
allows ~190 characters per line. For regular paragraphs it is 
recommended to have lines 60-70 characters long. Code blocks may be wider.




^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default)
  2023-08-10 16:13                         ` Max Nikulin
@ 2023-08-10 23:35                           ` Samuel Wales
  0 siblings, 0 replies; 22+ messages in thread
From: Samuel Wales @ 2023-08-10 23:35 UTC (permalink / raw)
  To: Max Nikulin; +Cc: emacs-orgmode

yikes yes re columns.

[my fill-column is 60.  on a 32 inch.  and i cannot even do ediff side
by side with that, to my displeasure.]

[i hope to find a low-[preferably-1-nit]-minimum-brightness
flicker-free monitor someplace, and i /think/ oleds, which /might/
partly satisfy that, can come standardly in 42 inches, which /might/
allow side by side ediff at 60 finally.]


On 8/10/23, Max Nikulin <manikulin@gmail.com> wrote:
> On 05/08/2023 10:22, Samuel Wales wrote:
>> [i.e. agree that the manuals and standard toc at top imo do a good job
>> for accessibility.]
>
> Notice that Org manual is exported through ox-texinfo, not by ox-html
> directly. So somebody should confirm that default ox-html table of
> contents is suitable for various worg pages: short and long ones.
>
> Personally I do not like CSS of the manuals (Org and Emacs) because it
> allows ~190 characters per line. For regular paragraphs it is
> recommended to have lines 60-70 characters long. Code blocks may be wider.
>
>
>
>


-- 
The Kafka Pandemic

A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-06  0:22                     ` Rudolf Adamkovič
@ 2023-08-12  8:22                       ` Ihor Radchenko
  2023-08-12  9:38                       ` Max Nikulin
  1 sibling, 0 replies; 22+ messages in thread
From: Ihor Radchenko @ 2023-08-12  8:22 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: Max Nikulin, emacs-orgmode

Rudolf Adamkovič <salutis@me.com> writes:

> From 34f28236366affb510bfdb70a3577e765d9e0abb Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
> Date: Wed, 3 May 2023 14:59:03 +0200
> Subject: [PATCH] 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.

Thanks! Applied, onto main.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=68aa43885

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] ob-sqlite: Use a transient in-memory database by default
  2023-08-06  0:22                     ` Rudolf Adamkovič
  2023-08-12  8:22                       ` Ihor Radchenko
@ 2023-08-12  9:38                       ` Max Nikulin
  1 sibling, 0 replies; 22+ messages in thread
From: Max Nikulin @ 2023-08-12  9:38 UTC (permalink / raw)
  To: emacs-orgmode

On 06/08/2023 07:22, Rudolf Adamkovič wrote:
> * lisp/ob-sqlite.el (org-babel-execute:sqlite): Default ':db' to
> ":memory:" instead of throwing an error.

This commit message entry does not reflect changed approach clearly 
enough. Not passing :db is a bit different from default :memory:. Sorry 
that I have not noticed it earlier. Since the commit has been pushed, I 
do not expect any further action in response.

> @@ -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 ""))))

My expectation was that sqlite3 should print a warning, but actually it 
does not.

echo "select 1" | sqlite3
1

sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.

In this sense I would prefer the previous version of the patch, but I 
admit, it is my fault that I did not tried it despite a week passed.



^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2023-08-12  9:39 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-03 12:59 [PATCH] ob-sqlite: Use a transient in-memory database by default Rudolf Adamkovič
2023-05-03 15:12 ` Max Nikulin
2023-05-03 16:32   ` Max Nikulin
2023-05-04 10:27     ` Ihor Radchenko
2023-05-06 20:40     ` Rudolf Adamkovič
2023-05-07 14:45       ` Max Nikulin
2023-06-13  9:59       ` Ihor Radchenko
2023-06-19 12:42         ` Rudolf Adamkovič
2023-06-20 10:58           ` Ihor Radchenko
2023-08-03 12:35             ` Rudolf Adamkovič
2023-08-04  8:08               ` Ihor Radchenko
2023-08-04 22:57                 ` Rudolf Adamkovič
2023-08-05  3:00                   ` Max Nikulin
2023-08-06  0:22                     ` Rudolf Adamkovič
2023-08-12  8:22                       ` Ihor Radchenko
2023-08-12  9:38                       ` Max Nikulin
2023-08-05  3:06                   ` [accessibility] worg obscures text (Re: [PATCH] ob-sqlite: Use a transient in-memory database by default) Max Nikulin
2023-08-05  3:20                     ` Samuel Wales
2023-08-05  3:22                       ` Samuel Wales
2023-08-10 16:13                         ` Max Nikulin
2023-08-10 23:35                           ` Samuel Wales
2023-08-05  9:14                   ` [PATCH] ob-sqlite: Use a transient in-memory database by default Ihor Radchenko

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.