From 77a88d3572952a54837e2c3b27a7642ce781b1be Mon Sep 17 00:00:00 2001 From: johnybx Date: Wed, 17 May 2023 21:25:08 +0200 Subject: [PATCH] SQL Server adapter: update parameters for latest version of sqlcmd --- autoload/db/adapter/sqlserver.vim | 19 +++++++++++++++++-- doc/dadbod.txt | 7 +++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/autoload/db/adapter/sqlserver.vim b/autoload/db/adapter/sqlserver.vim index b58d0743..007d4322 100644 --- a/autoload/db/adapter/sqlserver.vim +++ b/autoload/db/adapter/sqlserver.vim @@ -35,15 +35,30 @@ function! s:server(url) abort \ (has_key(a:url, 'port') ? ',' . a:url.port : '') endfunction +function! s:get_value_from_url(url, param) + return get(a:url.params, a:param, get(a:url.params, toupper(a:param[0]) . a:param[1 : -1], '0')) +endfunction + function! s:boolean_param_flag(url, param, flag) abort - let value = get(a:url.params, a:param, get(a:url.params, toupper(a:param[0]) . a:param[1 : -1], '0')) + let value = s:get_value_from_url(a:url, a:param) return value =~# '^[1tTyY]' ? [a:flag] : [] endfunction +function! s:value_param_flag(url, param, flag) abort + let value = s:get_value_from_url(a:url, a:param) + return value == '0' ? [] : [a:flag, value] +endfunction + function! db#adapter#sqlserver#interactive(url) abort let url = db#url#parse(a:url) + " Legacy parameters left just for backward compatibility with older sqlcmd: secure and + " trustServerCertificate return ['env', 'SQLCMDPASSWORD=' . get(url, 'password', ''), 'sqlcmd', '-S', s:server(url)] + - \ s:boolean_param_flag(url, 'encrypt', '-N') + + \ s:value_param_flag(url, 'encrypt', '-N') + + \ s:value_param_flag(url, 'column-separator', '-s') + + \ s:value_param_flag(url, 'format', '-F') + + \ s:boolean_param_flag(url, 'trim-spaces', '-W') + + \ s:boolean_param_flag(url, 'secure', '-N') + \ s:boolean_param_flag(url, 'trustServerCertificate', '-C') + \ (has_key(url, 'user') ? [] : ['-E']) + \ db#url#as_argv(url, '', '', '', '-U ', '', '-d ') diff --git a/doc/dadbod.txt b/doc/dadbod.txt index 38bf73b2..f5e5197c 100644 --- a/doc/dadbod.txt +++ b/doc/dadbod.txt @@ -175,8 +175,11 @@ SQL Server ~ sqlserver://[[:]@][][:]/[] sqlserver://[[:]][;user=][;...] < -Supported query parameters are `secure` and `trustServerCertificate`, which -correspond to connection properties of the same name. +Supported query parameters are `encrypt-connection`, `format`, +`column-separator`, `trim-spaces` and `trust-server-certificate`, which +correspond to connection properties of the same name (see `sqlcmd -?`). For +backward compatibility with older versions of sqlcmd the boolean query +parameters `secure` and `trustServerCertificate` can be used. To set the `integratedSecurity` connection property and use a trusted connection, omit the user and password.