Skip to content

Commit

Permalink
sql-export-query
Browse files Browse the repository at this point in the history
  • Loading branch information
junjiemars committed May 14, 2024
1 parent b1ad6ad commit 7a2ce1b
Showing 1 changed file with 41 additions and 2 deletions.
43 changes: 41 additions & 2 deletions config/sqls.el
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,27 @@ Optional prefix argument ENHANCED, displays additional details."
(format "*Desc table %s*" name)
:desc-table enhanced name))))

(when-sql-feature%
(defun sql-export-query (query &optional enhanced)
"Export the QUERY result."
(interactive
(list (if-region-active
(buffer-substring-no-properties
(region-beginning) (region-end))
(buffer-substring-no-properties
(save-excursion (backward-paragraph) (point))
(save-excursion (forward-paragraph) (point))))
current-prefix-arg))
(let ((sqlbuf (sql-find-sqli-buffer*)))
(unless sqlbuf
(user-error "%s" "No SQL interactive buffer found"))
(unless query
(user-error "%s" "No query specified"))
(sql-execute-feature
sqlbuf
(format "*Export query %s*" (sql-first-word query))
:export-query enhanced query))))

;; end of features

;;;
Expand Down Expand Up @@ -308,6 +329,19 @@ Optional prefix argument ENHANCED, displays additional details."
(if enhanced enhanced-sql simple-sql) outbuf))
(sql-oracle-restore-settings sqlbuf settings)))))

(when-sql-oracle-feature%
(defun sql-oracle-export-query (sqlbuf outbuf enhanced target)
(let ((settings (sql-oracle-save-settings sqlbuf))
(sql (if enhanced
target ;; ignore enhanced
target)))
(unwind-protect
(progn
(sql-redirect sqlbuf "SET MARKUP CSV ON QUOTE ON")
(sql-redirect sqlbuf sql outbuf))
(sql-redirect sqlbuf "SET MARKUP CSV OFF QUOTE OFF")
(sql-oracle-restore-settings sqlbuf settings)))))

;; end of oracle

;;;
Expand Down Expand Up @@ -526,7 +560,11 @@ Optional prefix argument ENHANCED, displays additional details."
;; new `:desc-table'
(plist-put (cdr (assq 'oracle sql-product-alist))
:desc-table
#'sql-oracle-desc-table)))
#'sql-oracle-desc-table)
;; new `:export-query'
(plist-put (cdr (assq 'oracle sql-product-alist))
:export-query
#'sql-oracle-export-query)))

(defun on-sql-oceanbase-init! ()
"On \\=`sql\\=' oceanbase initialization."
Expand Down Expand Up @@ -583,7 +621,8 @@ Optional prefix argument ENHANCED, displays additional details."
(define-key% sql-mode-map (kbd "C-c C-l a") #'sql-list-all)
(define-key% sql-mode-map (kbd "C-c C-l c") #'sql-list-code)
(define-key% sql-mode-map (kbd "C-c C-l p") #'sql-desc-plan)
(define-key% sql-mode-map (kbd "C-c C-l t") #'sql-desc-table)))
(define-key% sql-mode-map (kbd "C-c C-l t") #'sql-desc-table)
(define-key% sql-mode-map (kbd "C-c C-l x") #'sql-export-query)))

;; end of init!

Expand Down

0 comments on commit 7a2ce1b

Please sign in to comment.