In MS SQL, protect all identifiers with square brackets.

This commit is contained in:
Dimitri Fontaine 2014-11-18 23:24:33 +01:00
parent caed00c234
commit 5d80c8371f
2 changed files with 4 additions and 4 deletions

View File

@ -56,7 +56,7 @@
(with-mssql-connection ((source-db mssql))
(let* ((sql (destructuring-bind (schema . table-name)
(source mssql)
(format nil "SELECT ~{~a~^, ~} FROM ~a.~a;"
(format nil "SELECT ~{~a~^, ~} FROM [~a].[~a];"
(get-column-list (fields mssql))
schema
table-name)))
@ -64,7 +64,7 @@
(lambda (row)
(pgstate-incf *state* (target mssql) :read 1)
(funcall process-row-fn row))))
(log-message :warning "~a" sql)
(log-message :log "~a" sql)
(handler-case
(mssql::map-query-results sql :row-fn row-fn :connection *mssql-db*)
(condition (e)

View File

@ -185,8 +185,8 @@ ORDER BY T.[name], I.[index_id], IC.[key_ordinal];")
Mostly we just use the name, and make try to avoid parsing dates."
(case (intern (string-upcase type) "KEYWORD")
(:datetime (format nil "convert(varchar, ~a, 126)" name))
(t (format nil "~a" name))))
(:datetime (format nil "convert(varchar, [~a], 126)" name))
(t (format nil "[~a]" name))))
(defun get-column-list (columns)
"Tweak how we fetch the column values to avoid parsing when possible."