Function: sql-connect
sql-connect is an autoloaded, interactive and byte-compiled function
defined in sql.el.gz.
Signature
(sql-connect CONNECTION &optional BUF-NAME)
Documentation
Connect to an interactive session using CONNECTION settings.
See sql-connection-alist to see how to define connections and
their settings.
The user will not be prompted for any login parameters if a value is specified in the connection settings.
Probably introduced at or before Emacs version 24.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/sql.el.gz
;;;###autoload
(defun sql-connect (connection &optional buf-name)
"Connect to an interactive session using CONNECTION settings.
See `sql-connection-alist' to see how to define connections and
their settings.
The user will not be prompted for any login parameters if a value
is specified in the connection settings."
;; Prompt for the connection from those defined in the alist
(interactive
(if sql-connection-alist
(list (sql-read-connection "Connection: ")
current-prefix-arg)
(user-error "No SQL Connections defined")))
;; Are there connections defined
(if sql-connection-alist
;; Was one selected
(when connection
;; Get connection settings
(let ((connect-set (cdr (assoc-string connection sql-connection-alist t))))
;; Settings are defined
(if connect-set
;; Set the desired parameters
(let (param-var login-params set-vars rem-vars)
;; Set the parameters and start the interactive session
(dolist (vv connect-set)
(let ((var (car vv))
(val (cadr vv)))
(set-default var (eval val)))) ;FIXME: Why `eval'?
(setq-default sql-connection connection)
;; :sqli-login params variable
(setq param-var
(sql-get-product-feature sql-product :sqli-login nil t))
;; :sqli-login params value
(setq login-params (symbol-value param-var))
;; Params set in the connection
(setq set-vars
(mapcar
(lambda (v)
(pcase (car v)
('sql-user 'user)
('sql-password 'password)
('sql-server 'server)
('sql-database 'database)
('sql-port 'port)
(s s)))
connect-set))
;; the remaining params (w/o the connection params)
(setq rem-vars
(sql-for-each-login login-params
(lambda (var vals)
(unless (member var set-vars)
(if vals (cons var vals) var)))))
;; Start the SQLi session with revised list of login parameters
(cl-progv (list param-var) (list rem-vars)
(sql-product-interactive
sql-product
(or buf-name (format "<%s>" connection)))))
(user-error "SQL Connection <%s> does not exist" connection)
nil)))
(user-error "No SQL Connections defined")
nil))