I've attached a patch to address this.
The issue is that ob-sqlite.el uses org-babel-string-read, which
purposefully removes double-quotes. I think this is unintended
behaviour, and it only seems to be used with ob-sqlite.el. I added a
minor function to bypass the part of org-babel-string-read that was
stripping out the double-quotes and use the rest of the function.
I tried ob-sql with the mysql engine and didn't experience the same bug,
so I'm pretty confident that this is an isolated issue.
On 5/3/21 6:22 PM, learn orchids wrote:
I am using Org mode version 9.4.5 (9.4.5-73-g4c7696-elpaplus and I have the
following code snippet. Values in the 'sql' column of the second row is
truncated. Am I missing something?
#+begin_src sqlite :db /tmp/rip.db :colnames yes
drop table if exists testtable;
create table testtable(id int, sql varchar);
insert into testtable values (1, "Select id from foo");
insert into testtable values (2, 'Select "id" from foo');
select* from testtable;
#+end_src
#+RESULTS: testsql
| id | sql |
|+|
| 1 | Select id from foo |
| 2 | id |
>From 3dd868bcd798e6763ec67ba0d2661834e09bb6e9 Mon Sep 17 00:00:00 2001
From: Nicholas Savage
Date: Tue, 4 May 2021 11:02:20 -0400
Subject: [PATCH] lisp/ob-sqlite.el: Prevent output from being incorrectly
parsed if it contains double-quotes.
* lisp/ob-sqlite.el (org-babel-sqlite--read-cell): New function.
lisp/ob-sqlite.el (org-babel-sqlite-table-or-scalar): Use
`org-babel-sqlite--read-cell' instead of `org-babel-string-read' to
prevent data from being ignored if it contains double-quotes.
Reported-by: learnorch...@gmail.com
Link: https://orgmode.org/list/cak5xwica4i8h09obzcvpx2pe-t6b0_ju_mxiduriy7gh+pk...@mail.gmail.com/
---
lisp/ob-sqlite.el | 6 +-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el
index c0c6f3c97..d227ba69d 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -125,7 +125,7 @@ This function is called by `org-babel-execute-src-block'."
(mapcar (lambda (row)
(if (eq 'hline row)
'hline
- (mapcar #'org-babel-string-read row)))
+ (mapcar #'org-babel-sqlite--read-cell row)))
result)))
(defun org-babel-sqlite-offset-colnames (table headers-p)
@@ -139,6 +139,10 @@ This function is called by `org-babel-execute-src-block'."
Prepare SESSION according to the header arguments specified in PARAMS."
(error "SQLite sessions not yet implemented"))
+(defun org-babel-sqlite--read-cell (cell)
+ "Process CELL to remove unnecessary characters."
+ (org-babel-read cell t))
+
(provide 'ob-sqlite)
;;; ob-sqlite.el ends here
--
2.20.1