2018-09-01 14:24 GMT+02:00 Robert Klein <[email protected]>:
> Hi Cecil,
>
> On Sat, 1 Sep 2018 11:12:57 +0200
> Cecil Westerhof <[email protected]> wrote:
>
> > 2018-08-31 13:22 GMT+02:00 Robert Klein <[email protected]>:
> >
> > > On Fri, 31 Aug 2018 12:24:33 +0200
> > > Cecil Westerhof <[email protected]> wrote:
> > >
> > > > 2018-08-31 11:17 GMT+02:00 Robert Klein <[email protected]>:
> > > >
> > > > > Hi Cecil,
> > > > >
> > > > > On Fri, 31 Aug 2018 10:47:50 +0200
> > > > > Cecil Westerhof <[email protected]> wrote:
> > > > >
> > > > > > I have a strange problem with org-babel and SQLite.
> > > > > >
> > > > > > I have a database that is created with:
> > > > > > CREATE TABLE "quotes" (
> > > > > > quoteID TEXT PRIMARY KEY,
> > > > > > quote TEXT NOT NULL UNIQUE,
> > > > > > lastUsed TEXT,
> > > > > > totalUsed INT DEFAULT 'unused'
> > > > > > )
> > > > > >
> > > > > > When using:
> > > > > > #+BEGIN_SRC sqlite :db ~/Twitter/twitter.sqlite :colnames
> > > > > > yes SELECT lastUsed
> > > > > > , totalUsed
> > > > > > FROM quotes
> > > > > > ORDER BY lastused ASC
> > > > > > , totalUsed DESC
> > > > > > LIMIT 40
> > > > > > #+END_SRC
> > > > > >
> > > > > > Everything is fine. But when I use (add the quote field in the
> > > > > > select): #+BEGIN_SRC sqlite :db
> > > > > > ~/Twitter/twitter.sqlite :colnames yes SELECT quote
> > > > > > , lastUsed
> > > > > > , totalUsed
> > > > > > FROM quotes
> > > > > > ORDER BY lastused ASC
> > > > > > , totalUsed DESC
> > > > > > LIMIT 40
> > > > > > #+END_SRC
> > > > > >
> > > > > > I get:
> > > > > > executing Sqlite code block...
> > > > > > Wrote /tmp/babel-27920y_/ob-input-2792BTG
> > > > > > org-babel-read: End of file during parsing
> > > > > >
> > > > > > What could be the problem?
> > > > > >
> > > > >
> > > > > does it work outside of org/babel/emacs, that is, when you use
> > > > > the query in a command line sqlite session, does it work?
> > > > > “quote” is also a function in sqlite, so this might be your
> > > > > issue.
> > > >
> > > > Yes, in sqlite3 and sqlitebrowser it works without problems.
> > > > In org-babel even 'SELECT *' goes wrong.
> > > >
> > >
> > > I can't reproduce the issue, it works for me. What are your
> > > org-mode and Emacs versions?
> > >
> >
> > GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of
> > 2017-09-15, modified by Debian
> > Org-mode version 8.2.10 (release_8.2.10
> > @ /usr/share/emacs/25.1/lisp/org/)
> >
> >
> > >
> > > Can you provide an ECM (Example, complete, minimal) org-mode setup /
> > > Emacs initialization file?
> > >
> >
> > (add-hook 'org-babel-after-execute-hook 'bh/display-inline-images
> > 'append)
> >
> > ; Make babel results blocks lowercase
> > (setq org-babel-results-keyword "results")
> >
> > (defun bh/display-inline-images ()
> > (condition-case nil
> > (org-display-inline-images)
> > (error nil)))
> >
> > (org-babel-do-load-languages
> > (quote org-babel-load-languages)
> > (quote ((emacs-lisp . t)
> > (sqlite . t)
> > (dot . t)
> > (ditaa . t)
> > (R . t)
> > (python . t)
> > (ruby . t)
> > (gnuplot . t)
> > (clojure . t)
> > (sh . t)
> > (ledger . t)
> > (org . t)
> > (plantuml . t)
> > (latex . t))))
> >
> > ; Do not prompt to confirm evaluation
> > ; This may be dangerous - make sure you understand the consequences
> > ; of setting this -- see the docstring for details
> > (setq org-confirm-babel-evaluate nil)
> >
> > ; Use fundamental mode when editing plantuml blocks with C-c '
> > (add-to-list 'org-src-lang-modes (quote ("plantuml" . fundamental)))
> >
> > Is this what you need, or do you need more?
> >
>
> sorry, I still can't reproduce the issue, even using the same stock
> Emacs and org-mode from Debian 9 as you do.
>
> Could you _attach_ the emacs init file and the org-mode file which
> shows the issue? (so I can simply start “emacs -Q -l sqlite.emacs
> sqlite.org” and then press C-c C-c inside the sqlite code to see the
> issue?
>
It is quite strange. It looks like it has something to do with the database
itself, because the following works:
#+BEGIN_SRC sqlite :db ~/testingOrgBabel.sqlite :colnames yes
DROP TABLE IF EXISTS quotes
;
CREATE TABLE "quotes" (
quoteID TEXT PRIMARY KEY,
quote TEXT NOT NULL UNIQUE,
lastUsed TEXT,
totalUsed INT DEFAULT 'unused'
)
;
INSERT INTO quotes
(quoteID, quote)
VALUES
(1, "First record."),
(2, "Second record.")
;
SELECT *
FROM quotes
;
#+END_SRC
The create is just copied from the original database.
The following works:
#+BEGIN_SRC sqlite :db ~/testingOrgBabel.sqlite :colnames yes
SELECT *
FROM quotes
LIMIT 2
;
#+END_SRC
But this does not work:
#+BEGIN_SRC sqlite :db ~/Twitter/twitter.sqlite :colnames yes
SELECT *
FROM quotes
LIMIT 2
;
#+END_SRC
Weird indeed.
What I also tried:
#+BEGIN_SRC sqlite :db ~/Twitter/twitter.sqlite :colnames yes
CREATE TABLE "quotes2" (
quoteID TEXT PRIMARY KEY,
quote TEXT NOT NULL UNIQUE,
lastUsed TEXT,
totalUsed INT DEFAULT 'unused'
)
#+END_SRC
Then I can do:
#+BEGIN_SRC sqlite :db ~/Twitter/twitter.sqlite :colnames yes
SELECT *
FROM quotes2
#+END_SRC
But when I do:
#+BEGIN_SRC sqlite :db ~/Twitter/twitter.sqlite :colnames yes
INSERT INTO quotes2
SELECT * from quotes
#+END_SRC
the select does not work any-more.
But the select from the command-line tool works without a problem.
--
Cecil Westerhof