浏览代码

Allow postgres as an alias for postgresql

* lisp/ob-sql.el (org-babel-edit-prep:sql): New function to
set SQL product.
(org-babel-execute:sql): Make "postgres" an alias for
"postgresql".

TINYCHANGE
stardiviner 5 年之前
父节点
当前提交
7cd9ad8f75
共有 1 个文件被更改,包括 61 次插入54 次删除
  1. 61 54
      lisp/ob-sql.el

+ 61 - 54
lisp/ob-sql.el

@@ -55,7 +55,7 @@
 ;; - dbi
 ;; - dbi
 ;; - mssql
 ;; - mssql
 ;; - sqsh
 ;; - sqsh
-;; - postgresql
+;; - postgresql (postgres)
 ;; - oracle
 ;; - oracle
 ;; - vertica
 ;; - vertica
 ;;
 ;;
@@ -92,6 +92,13 @@
   (org-babel-sql-expand-vars
   (org-babel-sql-expand-vars
    body (org-babel--get-vars params)))
    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)
 (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."
   "Make MySQL cmd line args for database connection.  Pass nil to omit that arg."
   (combine-and-quote-strings
   (combine-and-quote-strings
@@ -211,64 +218,64 @@ This function is called by `org-babel-execute-src-block'."
          (out-file (or (cdr (assq :out-file params))
          (out-file (or (cdr (assq :out-file params))
                        (org-babel-temp-file "sql-out-")))
                        (org-babel-temp-file "sql-out-")))
 	 (header-delim "")
 	 (header-delim "")
-         (command (pcase (intern engine)
-                    (`dbi (format "dbish --batch %s < %s | sed '%s' > %s"
-				  (or cmdline "")
-				  (org-babel-process-file-name in-file)
-				  "/^+/d;s/^|//;s/(NULL)/ /g;$d"
-				  (org-babel-process-file-name out-file)))
-                    (`monetdb (format "mclient -f tab %s < %s > %s"
-				      (or cmdline "")
-				      (org-babel-process-file-name in-file)
-				      (org-babel-process-file-name out-file)))
-		    (`mssql (format "sqlcmd %s -s \"\t\" %s -i %s -o %s"
-				    (or cmdline "")
-				    (org-babel-sql-dbstring-mssql
-				     dbhost dbuser dbpassword database)
-				    (org-babel-sql-convert-standard-filename
-				     (org-babel-process-file-name in-file))
-				    (org-babel-sql-convert-standard-filename
-				     (org-babel-process-file-name out-file))))
-                    (`mysql (format "mysql %s %s %s < %s > %s"
-				    (org-babel-sql-dbstring-mysql
-				     dbhost dbport dbuser dbpassword database)
-				    (if colnames-p "" "-N")
-				    (or cmdline "")
-				    (org-babel-process-file-name in-file)
-				    (org-babel-process-file-name out-file)))
-		    (`postgresql (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"
+         (command (cl-case (intern engine)
+                    (dbi (format "dbish --batch %s < %s | sed '%s' > %s"
+				 (or cmdline "")
+				 (org-babel-process-file-name in-file)
+				 "/^+/d;s/^|//;s/(NULL)/ /g;$d"
+				 (org-babel-process-file-name out-file)))
+                    (monetdb (format "mclient -f tab %s < %s > %s"
+				     (or cmdline "")
+				     (org-babel-process-file-name in-file)
+				     (org-babel-process-file-name out-file)))
+		    (mssql (format "sqlcmd %s -s \"\t\" %s -i %s -o %s"
 				   (or cmdline "")
 				   (or cmdline "")
-				   (org-babel-sql-dbstring-sqsh
+				   (org-babel-sql-dbstring-mssql
 				    dbhost dbuser dbpassword database)
 				    dbhost dbuser dbpassword database)
 				   (org-babel-sql-convert-standard-filename
 				   (org-babel-sql-convert-standard-filename
 				    (org-babel-process-file-name in-file))
 				    (org-babel-process-file-name in-file))
 				   (org-babel-sql-convert-standard-filename
 				   (org-babel-sql-convert-standard-filename
 				    (org-babel-process-file-name out-file))))
 				    (org-babel-process-file-name out-file))))
-		    (`vertica (format "vsql %s -f %s -o %s %s"
-				    (org-babel-sql-dbstring-vertica
-				     dbhost dbport dbuser dbpassword database)
-				    (org-babel-process-file-name in-file)
-				    (org-babel-process-file-name out-file)
-				    (or cmdline "")))
-                    (`oracle (format
-			      "sqlplus -s %s < %s > %s"
-			      (org-babel-sql-dbstring-oracle
-			       dbhost dbport dbuser dbpassword database)
-			      (org-babel-process-file-name in-file)
-			      (org-babel-process-file-name out-file)))
-                    (_ (error "No support for the %s SQL engine" engine)))))
+                    (mysql (format "mysql %s %s %s < %s > %s"
+				   (org-babel-sql-dbstring-mysql
+				    dbhost dbport dbuser dbpassword database)
+				   (if colnames-p "" "-N")
+				   (or cmdline "")
+				   (org-babel-process-file-name in-file)
+				   (org-babel-process-file-name out-file)))
+		    ((postgresql 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
+				   dbhost dbuser dbpassword database)
+				  (org-babel-sql-convert-standard-filename
+				   (org-babel-process-file-name in-file))
+				  (org-babel-sql-convert-standard-filename
+				   (org-babel-process-file-name out-file))))
+		    (vertica (format "vsql %s -f %s -o %s %s"
+				     (org-babel-sql-dbstring-vertica
+				      dbhost dbport dbuser dbpassword database)
+				     (org-babel-process-file-name in-file)
+				     (org-babel-process-file-name out-file)
+				     (or cmdline "")))
+                    (oracle (format
+			     "sqlplus -s %s < %s > %s"
+			     (org-babel-sql-dbstring-oracle
+			      dbhost dbport dbuser dbpassword database)
+			     (org-babel-process-file-name in-file)
+			     (org-babel-process-file-name out-file)))
+                    (t (user-error "No support for the %s SQL engine" engine)))))
     (with-temp-file in-file
     (with-temp-file in-file
       (insert
       (insert
        (pcase (intern engine)
        (pcase (intern engine)
@@ -301,7 +308,7 @@ SET COLSEP '|'
 	(progn (insert-file-contents-literally out-file) (buffer-string)))
 	(progn (insert-file-contents-literally out-file) (buffer-string)))
       (with-temp-buffer
       (with-temp-buffer
 	(cond
 	(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
 	  ;; Add header row delimiter after column-names header in first line
 	  (cond
 	  (cond
 	   (colnames-p
 	   (colnames-p