[O] [babel] Expand code is failing on a #+call line

2011-10-20 Thread Sebastien Vauban
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\nALTER TABLE $table\nADD $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




Re: [O] [babel] Expand code is failing on a #+call line

2011-10-20 Thread Eric Schulte
Hi Seb,

This is a minor point, but would you mind structuring your emails with
an introduction of pure-prose (no embedded examples), saving the
examples for the end (footnotes work well for this).  I often find it
disjointing to try to ingest large code example while simultaneously
trying to figure out the high-level point of the email.

As to this specific question... I am not sure where you are trying to
expand a code block.  It seems as if you are trying to expand a call
line, but I do not believe that is supposed to be possible.

Best -- Eric

Sebastien Vauban wxhgmqzgw...@spammotel.com writes:

 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\nALTER TABLE $table\nADD 
 $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,
  

Re: [O] [babel] Expand code is failing on a #+call line

2011-10-20 Thread Sebastien Vauban
Hi Eric,

Eric Schulte wrote:
 This is a minor point, but would you mind structuring your emails with
 an introduction of pure-prose (no embedded examples), saving the
 examples for the end (footnotes work well for this).  I often find it
 disjointing to try to ingest large code example while simultaneously
 trying to figure out the high-level point of the email.

Point noted. OK.

 As to this specific question... I am not sure where you are trying to
 expand a code block.  It seems as if you are trying to expand a call
 line, but I do not believe that is supposed to be possible.

As for any other code block, all I want is to see its expanded (instantiated)
version before I run it.

Is this not doable when you call the code block remotely (I mean: from
a #+call line, instead of from the code block itself)?

If not, does that mean we better not put code block into the lob, when we're
interested by having a look at their expanded form?

Best regards,
  Seb

 Sebastien Vauban wxhgmqzgw...@spammotel.com writes:

 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\nALTER 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 

Re: [O] [babel] Expand code is failing on a #+call line

2011-10-20 Thread Eric Schulte

 As to this specific question... I am not sure where you are trying to
 expand a code block.  It seems as if you are trying to expand a call
 line, but I do not believe that is supposed to be possible.

 As for any other code block, all I want is to see its expanded (instantiated)
 version before I run it.

 Is this not doable when you call the code block remotely (I mean: from
 a #+call line, instead of from the code block itself)?


That is correct.  There is no reason (that I can think of at the moment)
why this functionality could not be added, but currently the code block
preview functionality expects to be called from within a code block.


 If not, does that mean we better not put code block into the lob, when we're
 interested by having a look at their expanded form?


Yes, given the current state of affairs that is correct.

Best -- Eric


 Best regards,
   Seb

 Sebastien Vauban wxhgmqzgw...@spammotel.com writes:

 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\nALTER 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