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
 ;; - 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