From: "Sebastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org>
To: emacs-orgmode-mXXj517/zsQ@public.gmane.org
Subject: [babel] Expand code is failing on a #+call line
Date: Thu, 20 Oct 2011 17:12:49 +0200 [thread overview]
Message-ID: <8039eny9vy.fsf@somewhere.org> (raw)
Hi Eric,
* Config
** Some file to be ingested
Let's say I have this code in a =my-lob.org= file:
#+srcname: add-column-in-table(table="", column="", type="", nullability="")
#+begin_src sql
-- add column `$column' (if column does not exist yet)
IF NOT EXISTS (SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$table'
AND COLUMN_NAME = '$column')
BEGIN
ALTER TABLE $table
ADD $column $type $nullability
END
#+end_src
** In .emacs
... which I ingest at Emacs startup through the lines:
#+begin_src emacs-lisp
(require 'ob-lob)
(org-babel-lob-ingest "~/org/my-lob.org")
#+end_src
* Some other document
** Source params
In some other document, I have a table with columns I'd like to add in a
database:
#+results: params
| table | column | type | nullability |
|---------+----------------+-------------+-------------|
| dossier | pfiResetDate | date | NULL |
| dossier | pfiResetOprID | tinyint | NULL |
| dossier | pfiResetOprNom | varchar(64) | NULL |
Normally, I could call statements like this:
#+call: add-column-in-table(table=params[2,0], column=params[2,1], type=params[2,2], nullability=params[2,3])
But...
** Expand code is failing
=C-c C-v C-v= does generate an error:
setf: Wrong type argument: consp, nil
#+begin_src text
Debugger entered--Lisp error: (wrong-type-argument consp nil)
setcar(nil ((:cache . "") (:comments . "") (:exports . "") (:noweb . "") (:padline . "") (:results . "") (:shebang . "") (:tangle . "")))
(setf (nth 2 info) (sort (org-babel-merge-params ... params) (lambda ... ...)))
(let* ((info ...) (lang ...) (params ...) (body ...) (expand-cmd ...) (assignments-cmd ...) (expanded ...)) (org-edit-src-code nil expanded (concat "*Org-Babel Preview " ... "[ " lang " ]*")))
org-babel-expand-src-block()
call-interactively(org-babel-expand-src-block nil nil)
#+end_src
This stays very unclear to me...
** Execute code is failing
By the way, =C-c C-v C-e= returns as well an error:
let: Wrong type argument: stringp, nil
This is explainable: that's because the SQL =engine= is not known (not given
neither in the header of the code block, neither anywhere in this file).
#+begin_src text
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
intern(nil)
(let ((--cl-var-- ...)) (cond (... ...) (... ...) (... ...) (t ...)))
(case (intern engine) ((quote msosql) (format "osql %s -s \" \" -i %s -o %s" ... ... ...)) ((quote mysql) (format "mysql %s < %s > %s" ... ... ...)) ((quote postgresql) (format "psql -A -P footer=off -F \" \" -f %s -o %s %s" ... ... ...)) (t (error "no support for the %s sql engine" engine)))
(let* ((result-params ...) (cmdline ...) (engine ...) (in-file ...) (out-file ...) (header-delim "") (command ...)) (with-temp-file in-file (insert ...)) (message command) (shell-command command) (if (or ... ... ... ... ...) (with-temp-buffer ...) (with-temp-buffer ... ... ...)))
org-babel-execute:sql("-- add column `$column' (if column does not exist yet)\nIF NOT EXISTS (SELECT *\n FROM INFORMATION_SCHEMA.COLUMNS\n WHERE TABLE_NAME = '$table'\n AND COLUMN_NAME = '$column')\nBEGIN\n ALTER TABLE $table\n ADD $column $type $nullability\nEND" ((:var table . "dossier") (:var column . "pfiResetDate") (:var type . "date") (:var nullability . "NULL") (:colname-names) (:rowname-names) (:result-params "silent" "replace") (:result-type . value) (:comments . "") (:shebang . "") (:cache . "no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports . "code") (:results . "silent") (:padnewline . "yes") (:hlines . "no") (:session . "none") (:result-type . value) (:result-params "replace") (:rowname-names) (:colname-names)))
#+end_src
Though, I guess we should have a proper manner to report that some necessary
arguments are missing, instead of failing with a unclear message.
** Other weirdnesses
While the variable =org-babel-library-of-babel= contains the ingested code
(here, of =add-column-in-table=), the variable =org-babel-lob-files= is =nil=!?
** Speed commands
Speed commands don't work on the =#+call= lines. If I press =v= or =e=, they're
inserted verbatim.
Can you help me understand the 1^st point of these 4? Thanks a lot!!
Best regards,
Seb
--
Sebastien Vauban
next reply other threads:[~2011-10-20 15:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-20 15:12 Sebastien Vauban [this message]
2011-10-20 15:48 ` [babel] Expand code is failing on a #+call line Eric Schulte
2011-10-20 16:33 ` Sebastien Vauban
2011-10-20 17:52 ` Eric Schulte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8039eny9vy.fsf@somewhere.org \
--to=wxhgmqzgwmuf-genee64ty+gs+fvcfc7uqw@public.gmane.org \
--cc=emacs-orgmode-mXXj517/zsQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).