>From cd170dd691ba12ec81ef5c71db2868b33cd63ddf Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Mon, 31 Oct 2022 07:52:09 +0100 Subject: [PATCH] ob-sql.el: Respect all params when using dbconnection * etc/ORG-NEWS (Miscellaneous): Document change * lisp/ob-sql.el (org-babel-find-db-connection-param): Make it possible to overwrite parameters that are set from :dbconnection --- etc/ORG-NEWS | 14 ++++++++++++++ lisp/ob-sql.el | 24 ++++++++++++------------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 6e875deb6..b542da34b 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -457,6 +457,20 @@ The new variable name is =org-plantuml-args=. It now applies to both jar PlantUML file and executable. ** Miscellaneous +*** SQL Babel ~:dbconnection~ parameter can be mixed with other SQL Babel parameters + +Before you could either specify SQL parameters like ~:dbhost~, +~:dbuser~, ~:database~, etc or a ~:dbconnection~ parameter which looks +up all other parameters from the ~sql-connection-alist~ variable. Now +it's possible to specify a ~:dbconnection~ and additionally other +parameters that will add or overwrite the parameters coming from +~sql-connection-alist~. + +E.g. if you have a connection in your ~sql-connection-alist~ to a +server that has many databases, you don't need an entry for every +database but instead can just specify ~:database~ next to your +~:dbconnection~ parameter. + *** Post-processing code blocks can return an empty list When the result of a regular code block is nil, then that was already diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el index d1256bf83..626d595c9 100644 --- a/lisp/ob-sql.el +++ b/lisp/ob-sql.el @@ -222,18 +222,18 @@ then look for the parameter into the corresponding connection defined in `sql-connection-alist', otherwise look into PARAMS. See `sql-connection-alist' (part of SQL mode) for how to define database connections." - (if (assq :dbconnection params) - (let* ((dbconnection (cdr (assq :dbconnection params))) - (name-mapping '((:dbhost . sql-server) - (:dbport . sql-port) - (:dbuser . sql-user) - (:dbpassword . sql-password) - (:dbinstance . sql-dbinstance) - (:database . sql-database))) - (mapped-name (cdr (assq name name-mapping)))) - (cadr (assq mapped-name - (cdr (assoc dbconnection sql-connection-alist))))) - (cdr (assq name params)))) + (or (cdr (assq name params)) + (and (assq :dbconnection params) + (let* ((dbconnection (cdr (assq :dbconnection params))) + (name-mapping '((:dbhost . sql-server) + (:dbport . sql-port) + (:dbuser . sql-user) + (:dbpassword . sql-password) + (:dbinstance . sql-dbinstance) + (:database . sql-database))) + (mapped-name (cdr (assq name name-mapping)))) + (cadr (assq mapped-name + (cdr (assoc dbconnection sql-connection-alist)))))))) (defun org-babel-execute:sql (body params) "Execute a block of Sql code with Babel. -- 2.38.1