From ebd48be2c95f4e99ddd7810ba5e82685299d3da1 Mon Sep 17 00:00:00 2001 From: stardiviner Date: Wed, 5 Feb 2020 00:06:31 +0800 Subject: [PATCH] ob-sql.el: Auto set sql-product in editing sql-mode src block buffer. * lisp/ob-sql.el (org-babel-execute:sql): Support :engine postgres alias of postgresql. For consistence with `sql-mode' variable `sql-product-alist'. * lisp/ob-sql.el (org-babel-edit-prep:sql): Support set sql-product in editing sql-mode src block buffer. This can improve editing sql-mode src block buffer syntax highlighting and other related stuffs. --- lisp/ob-sql.el | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el index 59cf19568..3e0ffafbd 100644 --- a/lisp/ob-sql.el +++ b/lisp/ob-sql.el @@ -55,7 +55,7 @@ ;; - dbi ;; - mssql ;; - sqsh -;; - postgresql +;; - postgresql (postgres) ;; - oracle ;; - vertica ;; @@ -92,6 +92,13 @@ (defun org-babel-expand-body:sql (body params) (org-babel-sql-expand-vars body (org-babel--get-vars params))) +(defun org-babel-edit-prep:sql (info) + "Set `sql-product' in Org edit buffer. +Set `sql-product' in Org edit buffer according to the +corresponding :engine source block header argument." + (let ((product (cdr (assq :engine (nth 2 info))))) + (sql-set-product product))) + (defun org-babel-sql-dbstring-mysql (host port user password database) "Make MySQL cmd line args for database connection. Pass nil to omit that arg." (combine-and-quote-strings @@ -248,6 +255,18 @@ (defun org-babel-execute:sql (body params) (org-babel-process-file-name in-file) (org-babel-process-file-name out-file) (or cmdline ""))) + (`postgres (format + "%spsql --set=\"ON_ERROR_STOP=1\" %s -A -P \ +footer=off -F \"\t\" %s -f %s -o %s %s" + (if dbpassword + (format "PGPASSWORD=%s " dbpassword) + "") + (if colnames-p "" "-t") + (org-babel-sql-dbstring-postgresql + dbhost dbport dbuser database) + (org-babel-process-file-name in-file) + (org-babel-process-file-name out-file) + (or cmdline ""))) (`sqsh (format "sqsh %s %s -i %s -o %s -m csv" (or cmdline "") (org-babel-sql-dbstring-sqsh @@ -301,7 +320,7 @@ (defun org-babel-execute:sql (body params) (progn (insert-file-contents-literally out-file) (buffer-string))) (with-temp-buffer (cond - ((memq (intern engine) '(dbi mysql postgresql sqsh vertica)) + ((memq (intern engine) '(dbi mysql postgresql postgres sqsh vertica)) ;; Add header row delimiter after column-names header in first line (cond (colnames-p -- 2.25.0