emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] babel and postgresql


From: dmg
Subject: Re: [O] babel and postgresql
Date: Sat, 23 Feb 2013 23:13:09 -0800

It looks like my inexperience with Lisp made me ignore the obvious.
What is needed is not my patch below, but to add posgresql to the
condition of the case:

From:
        (case (intern engine)
          ('mysql


To:

        (case (intern engine)
          ('(postgresql mysql)

the problem is that I can't get it to work (and I could not find good
documentation for the case macro anywhere but its definition. It says
that it takes either an atom (i.e. 'mysql)
or a list (i.e. '(postgresql mysql) ) but it just does not work me.

But the code for mysql and postgres seems to be the same.

Sorry for the confusion.

--daniel

On Sat, Feb 23, 2013 at 10:42 PM, dmg <address@hidden> wrote:
> Hi everybody, Eric,
>
> I have been starting using Babel with postgresql, R and perl, and I am
> loving it. I really want to thank everybody for their work.
>
> I have found one particular issue that bothers me.
>
> Say I have the following babel section:
>
> #+name: abc
> #+begin_src sql :engine postgresql :cmdline mydb
> select * from aliases limit 1;
> #+end_src
>
> the output is:
>
> #+name: abc
> | alias                     | uniname      |
> | Jon <address@hidden>        | jon          |
>
> Note how the column names are not separated from the body:
>
> What I want it this:
>
> #+name:
> | alias                     | uniname      |
> |---------------------------+--------------|
> | Jon <address@hidden>        | jon          |
>
> I have tracked the problem, and it is that in ob-sql.el the code of
> org-babel-execute:sql thinks that postgres will return a header separator,
> and it does not.
>
> I am not sure what is the best way to fix it, but I have come with a
> patch that does it (but replaced the older code). The code in
> org-babel-execute:sql
> needs to be modified so it does this only for the postgres backend:
> split the list into first member and rest and insert a 'hline in
> between. My solution is rough, but it works (sorry, I am just an elisp 
> beginner)
>
>
> diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el
> index 3586ec9..95cac85 100644
> --- a/lisp/ob-sql.el
> +++ b/lisp/ob-sql.el
> @@ -170,11 +170,12 @@ This function is called by 
> `org-babel-execute-src-block'."
>           )
>         (org-table-import out-file '(16))
>         (org-babel-reassemble-table
> -        (mapcar (lambda (x)
> -                  (if (string= (car x) header-delim)
> -                      'hline
> -                    x))
> -                (org-table-to-lisp))
> +        (funcall (lambda (x)
> +                   (cons (car-safe x)
> +                         (cons 'hline (cdr-safe x))
> +                         )
> +                   )
> +               (org-table-to-lisp))
>          (org-babel-pick-name (cdr (assoc :colname-names params))
>                               (cdr (assoc :colnames params)))
>          (org-babel-pick-name (cdr (assoc :rowname-names params))
>
>
>
> --
> --dmg
>
> ---
> Daniel M. German
> http://turingmachine.org



-- 
--dmg

---
Daniel M. German
http://turingmachine.org



reply via email to

[Prev in Thread] Current Thread [Next in Thread]