From 46990352af07544ce0c8e1c83f7ebdcc2ce620aa Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Sat, 1 Aug 2009 14:00:37 -0600 Subject: [PATCH] started along the path towards supporting SQL --- lisp/langs/org-babel-sql.el | 70 +++++++++++++++++++++++++++++++++++++++++++++ org-babel.org | 8 +++++- 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 lisp/langs/org-babel-sql.el diff --git a/lisp/langs/org-babel-sql.el b/lisp/langs/org-babel-sql.el new file mode 100644 index 00000000..9a8fba61 --- /dev/null +++ b/lisp/langs/org-babel-sql.el @@ -0,0 +1,70 @@ +;;; org-babel-sql.el --- org-babel functions for sql evaluation + +;; Copyright (C) 2009 Eric Schulte + +;; Author: Eric Schulte +;; Keywords: literate programming, reproducible research +;; Homepage: http://orgmode.org +;; Version: 0.01 + +;;; License: + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; Org-Babel support for evaluating sql source code. +;; +;; SQL is somewhat unique in that there are many different engines for +;; the evaluation of sql (Mysql, PostgreSQL, etc...), so much of this +;; file will have to be implemented engine by engine. +;; +;; Also SQL evaluation generally takes place inside of a database. + +;;; Code: +(require 'org-babel) + +(org-babel-add-interpreter "sql") + +(add-to-list 'org-babel-tangle-langs '("sql" "sql")) + +(defun org-babel-execute:sql (body params) + "Execute a block of Sql code with org-babel. This function is +called by `org-babel-execute-src-block' via multiple-value-bind." + (message "executing Sql source code block") + ) + +(defun org-babel-prep-session:sql (session params) + "Prepare SESSION according to the header arguments specified in PARAMS." + ;; (message "params=%S" params) ;; debugging + ) + +;; helper functions + +(defun org-babel-sql-var-to-sql (var) + "Convert an elisp var into a string of sql source code +specifying a var of the same value." + (if (listp var) + (concat "[" (mapconcat #'org-babel-sql-var-to-sql var ", ") "]") + (format "%S" var))) + +(defun org-babel-sql-table-or-string (results) + "If the results look like a table, then convert them into an +Emacs-lisp table, otherwise return the results as a string." + ) + +(provide 'org-babel-sql) +;;; org-babel-sql.el ends here diff --git a/org-babel.org b/org-babel.org index 21492266..d0064475 100644 --- a/org-babel.org +++ b/org-babel.org @@ -2499,7 +2499,13 @@ Follow the pattern set by [[file:lisp/org-babel-script.el][org-babel-script.el]] *** TODO perl This could probably be added to [[file:lisp/org-babel-script.el][org-babel-script.el]] *** TODO java -*** TODO SQL +*** STARTED SQL + +#+srcname: sql-example +#+begin_src sql + show tables; +#+end_src + *** DONE ditaa (see [[* file result types][file result types]]) -- 2.11.4.GIT