From mboxrd@z Thu Jan 1 00:00:00 1970 From: dmg Subject: Re: babel and postgresql Date: Sat, 23 Feb 2013 23:13:09 -0800 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Return-path: Received: from eggs.gnu.org ([208.118.235.92]:44917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9VmY-0000UK-Ua for emacs-orgmode@gnu.org; Sun, 24 Feb 2013 02:14:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U9VmR-0002kq-1W for emacs-orgmode@gnu.org; Sun, 24 Feb 2013 02:13:58 -0500 Received: from mail-we0-x232.google.com ([2a00:1450:400c:c03::232]:46372) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9VmQ-0002kh-Pd for emacs-orgmode@gnu.org; Sun, 24 Feb 2013 02:13:50 -0500 Received: by mail-we0-f178.google.com with SMTP id x48so1702566wey.9 for ; Sat, 23 Feb 2013 23:13:49 -0800 (PST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode Cc: eschulte@cs.unm.edu 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 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 | jon | > > Note how the column names are not separated from the body: > > What I want it this: > > #+name: > | alias | uniname | > |---------------------------+--------------| > | Jon | 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