Browse Source

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 years ago
parent
commit
7cd9ad8f75
1 changed files with 61 additions and 54 deletions
  1. 61 54
      lisp/ob-sql.el

+ 61 - 54
lisp/ob-sql.el

@@ -55,7 +55,7 @@
 ;; - dbi
 ;; - mssql
 ;; - sqsh
-;; - postgresql
+;; - postgresql (postgres)
 ;; - oracle
 ;; - vertica
 ;;
@@ -92,6 +92,13 @@
   (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
@@ -211,64 +218,64 @@ This function is called by `org-babel-execute-src-block'."
          (out-file (or (cdr (assq :out-file params))
                        (org-babel-temp-file "sql-out-")))
 	 (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 "")
-				   (org-babel-sql-dbstring-sqsh
+				   (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))))
-		    (`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
       (insert
        (pcase (intern engine)
@@ -301,7 +308,7 @@ SET COLSEP '|'
 	(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